Bird
Raised Fist0
SQLquery~20 mins

Column data types (INT, VARCHAR, DATE, DECIMAL) in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Data Type Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of this SQL query with different data types?
Consider a table products with columns: id INT, name VARCHAR(10), price DECIMAL(5,2), and release_date DATE. The table has one row: (1, 'Gadget', 99.99, '2023-01-15'). What will this query return?
SELECT id, name, price, release_date FROM products;
SQL
SELECT id, name, price, release_date FROM products;
A1 | Gadget | 99.99 | 2023/01/15
B1 | Gadget | 99.99 | 2023-01-15
C1 | Gadget | 100 | 2023-01-15
D1 | Gadget | 99.9900 | 15-01-2023
Attempts:
2 left
💡 Hint
Remember that DECIMAL(5,2) stores two digits after the decimal point exactly, and DATE format is YYYY-MM-DD.
🧠 Conceptual
intermediate
1:30remaining
Which data type is best for storing a person's birth date?
You want to store a person's birth date in a database column. Which data type should you choose to store this information correctly and efficiently?
ADATE
BVARCHAR(10)
CINT
DDECIMAL(8,0)
Attempts:
2 left
💡 Hint
Think about what kind of data a birth date is and how databases store dates.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in this table creation statement
Which option contains a syntax error in the SQL statement below?
CREATE TABLE orders (
  order_id INT,
  customer_name VARCHAR(50),
  order_total DECIMAL(7,2),
  order_date DATE
);
SQL
CREATE TABLE orders (
  order_id INT,
  customer_name VARCHAR(50),
  order_total DECIMAL(7,2),
  order_date DATE
);
ACREATE TABLE orders (order_id INT, customer_name VARCHAR(50), order_total DECIMAL(7,2), order_date DATE,);
BCREATE TABLE orders (order_id INT, customer_name VARCHAR(50), order_total DECIMAL(7,2), order_date DATETIME);
CCREATE TABLE orders (order_id INT, customer_name VARCHAR(50), order_total DECIMAL(7,2), order_date DATE);
DCREATE TABLE orders (order_id INT, customer_name VARCHAR(50), order_total DECIMAL(7,2), order_date DATE NOT NULL);
Attempts:
2 left
💡 Hint
Check for trailing commas in the column list.
❓ optimization
advanced
1:30remaining
Choose the most storage-efficient data type for storing product prices up to 9999.99
You need to store product prices that can be up to 9999.99 dollars. Which data type is the most storage-efficient and appropriate for this use case?
AVARCHAR(10)
BINT
CDECIMAL(7,2)
DDECIMAL(5,2)
Attempts:
2 left
💡 Hint
Consider the maximum value and decimal places needed.
🔧 Debug
expert
2:30remaining
Why does this INSERT statement fail for a DECIMAL column?
Given a table sales with a column amount DECIMAL(4,2), why does this statement fail?
INSERT INTO sales (amount) VALUES (123.456);
SQL
INSERT INTO sales (amount) VALUES (123.456);
AThe syntax of the INSERT statement is incorrect.
BThe value 123.456 has more decimal places than allowed by DECIMAL(4,2).
CDECIMAL(4,2) does not allow decimal values, only integers.
DThe integer part 123 is too large for DECIMAL(4,2).
Attempts:
2 left
💡 Hint
DECIMAL(4,2) means total 4 digits with 2 after decimal point.

Practice

(1/5)
1. Which SQL data type is best suited to store a person's full name?
easy
A. DECIMAL
B. INT
C. DATE
D. VARCHAR

Solution

  1. Step 1: Understand the data type purpose

    VARCHAR is used to store text or strings, like names.
  2. Step 2: Match data type to data

    A person's full name is text, so VARCHAR fits best.
  3. Final Answer:

    VARCHAR -> Option D
  4. Quick Check:

    Text data = VARCHAR [OK]
Hint: Use VARCHAR for any text data like names or addresses [OK]
Common Mistakes:
  • Choosing INT for text
  • Using DATE for names
  • Using DECIMAL for text
2. Which of the following is the correct way to declare a column for storing a price with two decimal places in SQL?
easy
A. price DATE(10,2)
B. price DECIMAL(10,2)
C. price INT(10,2)
D. price VARCHAR(10,2)

Solution

  1. Step 1: Identify the data type for decimal numbers

    DECIMAL is used for numbers with fixed decimal places, like prices.
  2. Step 2: Check syntax correctness

    DECIMAL(10,2) means total 10 digits, 2 after decimal point, which is correct.
  3. Final Answer:

    price DECIMAL(10,2) -> Option B
  4. Quick Check:

    Decimal numbers = DECIMAL(precision, scale) [OK]
Hint: Use DECIMAL(precision, scale) for money or precise decimals [OK]
Common Mistakes:
  • Using VARCHAR for numbers
  • INT with decimals
  • DATE for numeric values
3. Given the table definition:
CREATE TABLE Orders (OrderID INT, OrderDate DATE, CustomerName VARCHAR(50), TotalAmount DECIMAL(8,2));
What will be the result of this insert?
INSERT INTO Orders VALUES (101, '2024-05-10', 'Alice', 123.456);
medium
A. The TotalAmount will store 123.46, rounding to 2 decimals
B. The TotalAmount will store 123.456 exactly
C. The insert will fail due to decimal precision error
D. The TotalAmount will store 123

Solution

  1. Step 1: Understand DECIMAL(8,2) behavior

    DECIMAL(8,2) stores numbers with 2 decimal places, rounding if needed.
  2. Step 2: Analyze the inserted value 123.456

    Since only 2 decimals allowed, 123.456 rounds to 123.46.
  3. Final Answer:

    The TotalAmount will store 123.46, rounding to 2 decimals -> Option A
  4. Quick Check:

    DECIMAL rounds to defined decimals [OK]
Hint: DECIMAL rounds extra decimals to defined scale [OK]
Common Mistakes:
  • Expecting exact 3 decimals stored
  • Thinking insert fails
  • Assuming truncation without rounding
4. You have this table creation statement:
CREATE TABLE Employees (ID INT, JoinDate VARCHAR(10));
Why might storing dates as VARCHAR cause problems?
medium
A. Because VARCHAR does not enforce date format, leading to inconsistent data
B. Because INT is better for dates
C. Because VARCHAR cannot store text
D. Because DATE type is slower than VARCHAR

Solution

  1. Step 1: Understand VARCHAR vs DATE for dates

    VARCHAR stores text without checking if it is a valid date.
  2. Step 2: Identify problems with VARCHAR for dates

    Data can be inconsistent or invalid, causing errors in date operations.
  3. Final Answer:

    Because VARCHAR does not enforce date format, leading to inconsistent data -> Option A
  4. Quick Check:

    Use DATE type to enforce valid dates [OK]
Hint: Use DATE type to keep dates consistent and valid [OK]
Common Mistakes:
  • Thinking INT stores dates
  • Believing VARCHAR can't store text
  • Assuming DATE is slower
5. You want to create a table to store product details including:
- Product ID as a whole number
- Product name up to 100 characters
- Release date
- Price with up to 7 digits total and 2 decimals

Which is the best SQL column definition for the Price column?
hard
A. Price VARCHAR(7)
B. Price INT
C. Price DECIMAL(7,2)
D. Price DATE

Solution

  1. Step 1: Understand the requirements for Price

    Price needs to store numbers with 2 decimal places and up to 7 digits total.
  2. Step 2: Match data type to requirements

    DECIMAL(7,2) fits perfectly: 7 digits total, 2 after decimal point.
  3. Step 3: Eliminate wrong options

    INT stores whole numbers only, VARCHAR stores text, DATE is for dates.
  4. Final Answer:

    Price DECIMAL(7,2) -> Option C
  5. Quick Check:

    Use DECIMAL for precise decimal numbers [OK]
Hint: Use DECIMAL(total_digits, decimals) for prices [OK]
Common Mistakes:
  • Using INT for prices with decimals
  • Using VARCHAR for numbers
  • Confusing DATE with price
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