Bird
Raised Fist0
PostgreSQLquery~30 mins

Inserting JSON data in PostgreSQL - Mini Project: Build & Apply

Choose your learning style10 modes available
Inserting JSON Data into PostgreSQL
📖 Scenario: You are working on a small online bookstore database. You want to store book details in a table using JSON format to keep the data flexible and easy to update.
🎯 Goal: Create a table to store book information as JSON data, then insert a JSON record representing a book into the table.
📋 What You'll Learn
Create a table named books with a column info of type jsonb
Insert a JSON record into the books table with specific book details
Use exact JSON keys and values as specified
💡 Why This Matters
🌍 Real World
Storing flexible and complex data like book details in JSON format allows easy updates and schema changes without altering the database structure.
💼 Career
Many modern applications use JSON data types in databases like PostgreSQL to handle semi-structured data efficiently, a valuable skill for backend developers and database administrators.
Progress0 / 4 steps
1
Create the books table with a jsonb column
Write a SQL statement to create a table called books with one column named info of type jsonb.
PostgreSQL
Hint

Use CREATE TABLE books (info jsonb); to create the table.

2
Prepare the JSON data for insertion
Create a variable called book_json that holds the JSON data as a string with these exact key-value pairs: {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}.
PostgreSQL
Hint

Use \set book_json '{"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}' to define the JSON string variable.

3
Insert the JSON data into the books table
Write an INSERT statement to add the JSON data stored in book_json into the info column of the books table. Use the ::jsonb cast to convert the string to JSONB.
PostgreSQL
Hint

Use INSERT INTO books (info) VALUES (:book_json::jsonb); to insert the JSON data.

4
Verify the JSON data insertion
Write a SELECT statement to retrieve all rows from the books table to confirm the JSON data was inserted correctly.
PostgreSQL
Hint

Use SELECT * FROM books; to see the inserted JSON data.

Practice

(1/5)
1. What is the correct way to insert JSON data into a PostgreSQL table with a json column named data?
easy
A. INSERT INTO table_name (data) VALUES (JSON('name: John, age: 30'));
B. INSERT INTO table_name (data) VALUES ({name: 'John', age: 30});
C. INSERT INTO table_name (data) VALUES ("{'name': 'John', 'age': 30}");
D. INSERT INTO table_name (data) VALUES ('{"name": "John", "age": 30}');

Solution

  1. Step 1: Use single quotes for JSON string in SQL

    In PostgreSQL, JSON data must be enclosed in single quotes as a string literal.
  2. Step 2: Use valid JSON format inside the string

    The JSON must have double quotes around keys and string values, like {"name": "John", "age": 30}.
  3. Final Answer:

    INSERT INTO table_name (data) VALUES ('{"name": "John", "age": 30}'); -> Option D
  4. Quick Check:

    JSON string with single quotes and double quotes inside = D [OK]
Hint: Always use single quotes around JSON string in SQL [OK]
Common Mistakes:
  • Using double quotes for the whole JSON string
  • Using unquoted keys or single quotes inside JSON
  • Trying to insert JSON without quotes
2. Which of the following is the correct syntax to insert JSON data into a table named users with a jsonb column info?
easy
A. INSERT INTO users (info) VALUES (jsonb '{"city": "NY", "zip": 10001}');
B. INSERT INTO users (info) VALUES ('{city: "NY", zip: 10001}');
C. INSERT INTO users (info) VALUES ("{'city': 'NY', 'zip': 10001}");
D. INSERT INTO users (info) VALUES (jsonb '{city: NY, zip: 10001}');

Solution

  1. Step 1: Use jsonb type cast for jsonb columns

    When inserting into a jsonb column, you can cast the string to jsonb using jsonb '...' .
  2. Step 2: Use valid JSON string with double quotes inside single quotes

    The JSON must be valid with double quotes around keys and string values.
  3. Final Answer:

    INSERT INTO users (info) VALUES (jsonb '{"city": "NY", "zip": 10001}'); -> Option A
  4. Quick Check:

    jsonb cast with valid JSON string = C [OK]
Hint: Cast JSON string to jsonb with jsonb '...' for jsonb columns [OK]
Common Mistakes:
  • Using double quotes for the whole JSON string
  • Not casting to jsonb when required
  • Using invalid JSON format without quotes
3. Given the table products with a json column details, what will be the result of this query?
INSERT INTO products (details) VALUES ('{"color": "red", "size": "M"}');
SELECT details->>'color' FROM products WHERE details->>'size' = 'M';
medium
A. ["M"]
B. [null]
C. ["red"]
D. Empty result

Solution

  1. Step 1: Insert JSON with color and size keys

    The insert adds a row with details containing color: red and size: M.
  2. Step 2: Select color where size equals 'M'

    The SELECT filters rows where details->>'size' = 'M' and returns details->>'color', which is 'red'.
  3. Final Answer:

    ["red"] -> Option C
  4. Quick Check:

    Filter by size 'M' returns color 'red' [OK]
Hint: Use ->> to get JSON text value for filtering and selecting [OK]
Common Mistakes:
  • Using -> instead of ->> returns JSON, not text
  • Expecting size value instead of color in output
  • Not matching the filter condition correctly
4. You try to insert JSON data with this query:
INSERT INTO orders (info) VALUES ('{customer: "Alice", total: 50}');

But it fails. What is the error and how to fix it?
medium
A. Using double quotes inside JSON string; fix by using single quotes inside JSON.
B. Missing double quotes around JSON keys; fix by adding double quotes around keys.
C. JSON keys must be unquoted; fix by removing all quotes.
D. JSON must be cast to jsonb; fix by adding ::jsonb after string.

Solution

  1. Step 1: Identify invalid JSON format

    JSON keys must be in double quotes, but here keys are unquoted (customer, total).
  2. Step 2: Fix JSON by adding double quotes around keys

    Correct JSON is '{"customer": "Alice", "total": 50}'.
  3. Final Answer:

    Missing double quotes around JSON keys; fix by adding double quotes around keys. -> Option B
  4. Quick Check:

    JSON keys need double quotes = A [OK]
Hint: JSON keys must always be double-quoted strings [OK]
Common Mistakes:
  • Using unquoted keys in JSON
  • Mixing single and double quotes incorrectly
  • Assuming casting fixes invalid JSON format
5. You want to insert multiple JSON objects into a table events with a jsonb column payload. Which query correctly inserts two JSON objects in one statement?
hard
A. INSERT INTO events (payload) VALUES (jsonb '{"type": "click", "x": 10}'), (jsonb '{"type": "scroll", "y": 20}');
B. INSERT INTO events (payload) VALUES '[{"type": "click", "x": 10}, {"type": "scroll", "y": 20}]';
C. INSERT INTO events (payload) VALUES (jsonb '[{"type": "click", "x": 10}, {"type": "scroll", "y": 20}]');
D. INSERT INTO events (payload) VALUES (jsonb '{type: click, x: 10}'), (jsonb '{type: scroll, y: 20}');

Solution

  1. Step 1: Insert multiple rows with separate JSON objects

    Use multiple VALUES tuples, each with a valid JSON string cast to jsonb.
  2. Step 2: Ensure JSON keys and strings are double-quoted

    Each JSON object must have keys and string values in double quotes inside single quotes.
  3. Final Answer:

    INSERT INTO events (payload) VALUES (jsonb '{"type": "click", "x": 10}'), (jsonb '{"type": "scroll", "y": 20}'); -> Option A
  4. Quick Check:

    Multiple rows with valid JSON objects = A [OK]
Hint: Use multiple VALUES tuples with jsonb cast for multiple JSON inserts [OK]
Common Mistakes:
  • Trying to insert JSON array as one JSON object
  • Using invalid JSON without quotes
  • Not casting JSON string to jsonb when required
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard