INTEGER or INT is valid; PRIMARY KEY follows the column type; TEXT is valid for strings.
Final Answer:
CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT); -> Option A
Quick Check:
Correct syntax and types = CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT); [OK]
Hint: Use parentheses and commas correctly in CREATE TABLE [OK]
Common Mistakes:
Wrong keyword order like PRIMARY before type
Using curly braces instead of parentheses
Wrong data types like STRING instead of TEXT
3. Given the table creation: CREATE TABLE products (product_id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, price NUMERIC(10,2)); What will be the data type of product_id and what does SERIAL do?
medium
A. product_id is an auto-incrementing integer used as a unique ID
B. product_id is a string that stores numbers
C. product_id is a floating-point number
D. product_id is a boolean flag
Solution
Step 1: Understand SERIAL type in PostgreSQL
SERIAL creates an integer column that auto-increments with each new row, perfect for unique IDs.
Step 2: Confirm data type and purpose
It is an integer type, not string or float, used as a primary key to uniquely identify rows.
Final Answer:
product_id is an auto-incrementing integer used as a unique ID -> Option A
Quick Check:
SERIAL = auto-increment integer [OK]
Hint: SERIAL means auto-increment integer primary key [OK]
Common Mistakes:
Thinking SERIAL is a string type
Confusing SERIAL with floating-point
Assuming SERIAL is a boolean
4. Identify the error in this table creation statement: CREATE TABLE orders (order_id INT PRIMARY KEY, order_date DATE NOT NULL, total_amount FLOAT(10,2));
medium
A. Missing comma between columns
B. PRIMARY KEY cannot be used on INT columns
C. FLOAT(10,2) is invalid syntax in PostgreSQL
D. DATE cannot be NOT NULL
Solution
Step 1: Check FLOAT data type usage
PostgreSQL FLOAT accepts at most one precision argument (1-53 digits); FLOAT(10,2) uses two arguments like NUMERIC, which is invalid syntax for FLOAT. Use NUMERIC(10,2) for precise money values.
Step 2: Verify other parts of the statement
INT can be PRIMARY KEY, DATE can be NOT NULL, commas are correctly placed.
Final Answer:
FLOAT(10,2) is invalid syntax in PostgreSQL -> Option C
Quick Check:
FLOAT(p,s) invalid; use NUMERIC(p,s) [OK]
Hint: FLOAT(p) ok, but not FLOAT(p,s); use NUMERIC(p,s) for money [OK]
Common Mistakes:
Using FLOAT(10,2) in PostgreSQL
Thinking PRIMARY KEY can't be INT
Assuming DATE can't be NOT NULL
5. You want to create a table users with columns: user_id as a UUID primary key, email as unique and not null, and created_at as timestamp with default current time. Which is the correct CREATE TABLE statement?
hard
A. CREATE TABLE users (user_id SERIAL PRIMARY KEY, email VARCHAR UNIQUE, created_at TIMESTAMP);
B. CREATE TABLE users (user_id UUID, email TEXT NOT NULL, created_at DATE DEFAULT NOW());
C. CREATE TABLE users (user_id UUID PRIMARY KEY, email VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT NOW());
D. CREATE TABLE users (user_id UUID PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Solution
Step 1: Check UUID primary key syntax
UUID is a valid type for unique IDs; PRIMARY KEY constraint is correctly placed.
Step 2: Validate email constraints and type
VARCHAR(255) with UNIQUE and NOT NULL ensures emails are unique and always present.
Step 3: Confirm timestamp default value
DEFAULT CURRENT_TIMESTAMP sets creation time automatically; this is correct syntax.
Final Answer:
CREATE TABLE users (user_id UUID PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); -> Option D