PostgreSQL Create Table: Create a table to restrict the value of a column within some specified values
7. Write a SQL statement to create a table named countries, including country_id, country_name and region_id and make sure that no countries except Italy, India and China will be entered in the table.
Sample Solution:
Code:
-- This SQL statement creates a new table named 'countries' if it does not already exist,
-- defining the structure and constraints for the table columns.
CREATE TABLE IF NOT EXISTS countries (
COUNTRY_ID varchar(2), -- Defines a column 'COUNTRY_ID' to store country IDs as strings with a maximum length of 2 characters. This column can contain NULL values.
COUNTRY_NAME varchar(40), -- Defines a column 'COUNTRY_NAME' to store country names as strings with a maximum length of 40 characters. This column can contain NULL values.
CHECK(COUNTRY_NAME IN ('Italy', 'India', 'China')), -- Defines a check constraint to ensure that the 'COUNTRY_NAME' value is one of 'Italy', 'India', or 'China'.
REGION_ID decimal(10,0) -- Defines a column 'REGION_ID' to store region IDs as decimal numbers with a precision of 10 digits and no decimal places. This column can contain NULL values.
);
Explanation:
- The CREATE TABLE IF NOT EXISTS statement creates a new table only if it does not already exist in the database.
- The table is named 'countries'.
- Each column definition specifies the column name, data type, and optional constraints.
- varchar(2) indicates a variable-length character string with a maximum length of 2 characters for the 'COUNTRY_ID' column.
- varchar(40) indicates a variable-length character string with a maximum length of 40 characters for the 'COUNTRY_NAME' column.
- The CHECK constraint ensures that the value of the 'COUNTRY_NAME' column must be one of 'Italy', 'India', or 'China'.
- decimal(10,0) indicates a decimal number with a precision of 10 digits and no decimal places for the 'REGION_ID' column.
- All columns can contain NULL values since the NOT NULL constraint is not specified for any column.
Output:
postgres=# CREATE TABLE IF NOT EXISTS countries ( postgres(# COUNTRY_ID varchar(2), postgres(# COUNTRY_NAME varchar(40) postgres(# CHECK(COUNTRY_NAME IN('Italy','India','China')), postgres(# REGION_ID decimal(10,0) postgres(# ); CREATE TABLE
Here is the command to see the structure of the created table :
postgres=# \d countries;
Table "public.countries"
Column | Type | Modifiers
--------------+-----------------------+-----------
country_id | character varying(2) |
country_name | character varying(40) |
region_id | numeric(10,0) |
Check constraints:
"countries_country_name_check" CHECK (country_name::text =
ANY (ARRAY['Italy'::character varying, 'India'::character varying,
'China'::character varying]::text[]))
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a SQL statement to create a table named jobs, including job_id, job_title, min_salary, max_salary and check whether the max_salary amount exceeding the upper limit 25000.
Next: Write a SQL statement to create a table named countries, including country_id, country_name and region_id and make sure that no duplicate data against column country_id will be allowed at the time of insertion.
What is the difficulty level of this exercise?
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/postgresql-exercises/create-table/create-table-exercise-7.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics