📖 Scenario: You are working as a data analyst for a company that collects various types of information about products, including their names, prices, availability dates, and locations. You want to use PostgreSQL to store this data efficiently and accurately.
🎯 Goal: Build a simple PostgreSQL table using different data types to understand why PostgreSQL offers rich data types and how they help store diverse information correctly.
📋 What You'll Learn
Create a table named products with columns using different PostgreSQL data types
Include a product_name column with type VARCHAR(50)
Include a price column with type NUMERIC(10,2)
Include an available_since column with type DATE
Include a location column with type POINT
💡 Why This Matters
🌍 Real World
Companies use PostgreSQL's rich data types to store diverse data like prices, dates, and locations efficiently in one database.
💼 Career
Understanding PostgreSQL data types is essential for database administrators and developers to design robust and scalable databases.
Progress0 / 4 steps
1
Create the products table with basic columns
Write a SQL statement to create a table called products with two columns: product_name as VARCHAR(50) and price as NUMERIC(10,2).
PostgreSQL
Hint
Use CREATE TABLE followed by the table name and define each column with its data type inside parentheses.
2
Add a date column for availability
Add a column named available_since with the data type DATE to the existing products table creation statement.
PostgreSQL
Hint
The DATE data type stores calendar dates without time.
3
Add a location column using the POINT data type
Add a column named location with the PostgreSQL POINT data type to the products table creation statement.
PostgreSQL
Hint
The POINT data type stores a geometric point with X and Y coordinates.
4
Complete the table creation with all columns
Ensure the products table creation statement includes all four columns: product_name VARCHAR(50), price NUMERIC(10,2), available_since DATE, and location POINT.
PostgreSQL
Hint
Check that all columns and their data types are included correctly.
Practice
(1/5)
1. Why does PostgreSQL provide a wide variety of data types?
easy
A. To force users to use only text data
B. To make the database slower and more complex
C. To limit the types of data users can store
D. To store different kinds of data accurately and efficiently
Solution
Step 1: Understand PostgreSQL data types purpose
PostgreSQL offers many data types to handle various real-world data accurately.
Step 2: Analyze the effect of rich data types
Rich data types help keep data accurate and make queries efficient by matching data to the right type.
Final Answer:
To store different kinds of data accurately and efficiently -> Option D
Quick Check:
Rich data types = Accurate & efficient storage [OK]
Hint: Rich data types match data needs for accuracy [OK]
Common Mistakes:
Thinking data types slow down the database
Believing all data should be stored as text
Assuming fewer data types improve performance
2. Which of the following is the correct way to declare a column with a JSON data type in PostgreSQL?
easy
A. CREATE TABLE data (info jsontext);
B. CREATE TABLE data (info textjson);
C. CREATE TABLE data (info json);
D. CREATE TABLE data (info json_data);
Solution
Step 1: Recall PostgreSQL JSON data type syntax
The correct data type for JSON in PostgreSQL is simply json.
Step 2: Check each option's syntax
Only CREATE TABLE data (info json); uses the exact and valid json type; others are invalid or do not exist.
Final Answer:
CREATE TABLE data (info json); -> Option C
Quick Check:
JSON type syntax = json [OK]
Hint: Use exact PostgreSQL data type names [OK]
Common Mistakes:
Adding extra words to data type names
Using non-existent data types
Confusing JSON with text types
3. Given the table CREATE TABLE measurements (id SERIAL, data jsonb); and the insert INSERT INTO measurements (data) VALUES ('{"temp": 22, "unit": "C"}');, what will the query SELECT data->>'temp' FROM measurements; return?
medium
A. 22
B. "22"
C. temp
D. Error
Solution
Step 1: Understand JSONB operator ->>
The operator ->> extracts the JSON value as text, so data->>'temp' returns the value of key 'temp' as text.
Step 2: Analyze the inserted JSON value
The value for 'temp' is 22 (a number), extracted as text '22' without quotes in output.
Final Answer:
22 -> Option A
Quick Check:
JSONB ->> extracts text value = 22 [OK]
Hint: ->> extracts JSON value as text [OK]
Common Mistakes:
Expecting quotes around numbers
Confusing -> and ->> operators
Thinking it returns the key name
4. Identify the error in this PostgreSQL table creation: CREATE TABLE users (id INT, preferences jsonb DEFAULT '{}');
medium
A. Default value '{}' is invalid for jsonb type
B. The default '{}' should be cast to jsonb explicitly
C. Missing NOT NULL constraint on id
D. jsonb type cannot have default values
Solution
Step 1: Check default value for jsonb column
PostgreSQL requires default JSON values to be cast explicitly to jsonb type.
Step 2: Analyze the given default '{}'
The '{}' is a string and must be cast as '{}'::jsonb to be valid.
Final Answer:
The default '{}' should be cast to jsonb explicitly -> Option B
Quick Check:
Default JSON values need explicit cast [OK]
Hint: Cast string defaults to jsonb with ::jsonb [OK]
Common Mistakes:
Assuming '{}' alone is valid jsonb default
Ignoring type casting for defaults
Thinking jsonb cannot have defaults
5. You want to store a list of tags for each article in PostgreSQL. Which data type best supports flexible, searchable, and efficient storage of multiple tags?
hard
A. ARRAY of TEXT
B. TEXT
C. JSONB
D. VARCHAR(255)
Solution
Step 1: Consider data type features for storing multiple tags
TEXT stores plain text but not multiple values; VARCHAR limits length; JSONB is flexible but heavier for simple lists.
Step 2: Evaluate ARRAY of TEXT for tags
ARRAY of TEXT stores multiple text values efficiently and supports searching individual tags easily.
Final Answer:
ARRAY of TEXT -> Option A
Quick Check:
ARRAY suits multiple searchable tags best [OK]
Hint: Use ARRAY for multiple simple values [OK]
Common Mistakes:
Choosing plain TEXT for multiple tags
Using VARCHAR which limits length
Overcomplicating with JSONB for simple lists
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.