📖 Scenario: You are creating a simple database table to store information about employees in a company. Each employee has an ID number, their age, and their salary in whole dollars.Different integer types can store different ranges of numbers. You will practice creating a table using smallint, integer, and bigint types to store these values efficiently.
🎯 Goal: Create a PostgreSQL table named employees with three columns: employee_id as smallint, age as integer, and salary as bigint. This will help you understand how to use different integer types for different data sizes.
📋 What You'll Learn
Create a table named employees
Add a column employee_id with type smallint
Add a column age with type integer
Add a column salary with type bigint
💡 Why This Matters
🌍 Real World
Companies often store employee information in databases. Choosing the right integer type helps save space and improves performance.
💼 Career
Database administrators and developers must understand data types to design efficient and reliable database schemas.
Progress0 / 4 steps
1
Create the employees table with employee_id as smallint
Write a SQL statement to create a table called employees with one column named employee_id of type smallint.
PostgreSQL
Hint
Use CREATE TABLE employees (employee_id smallint); to create the table with the correct column and type.
2
Add the age column with type integer
Modify the employees table creation SQL to add a second column named age with type integer after employee_id.
PostgreSQL
Hint
Add age integer as a new column separated by a comma.
3
Add the salary column with type bigint
Extend the employees table creation SQL to include a third column named salary with type bigint after age.
PostgreSQL
Hint
Add salary bigint as the last column with a comma before it.
4
Complete the table creation with all three columns
Ensure the full SQL statement creates the employees table with columns employee_id as smallint, age as integer, and salary as bigint.
PostgreSQL
Hint
Check that all three columns and their types are included in the table creation statement.
Practice
(1/5)
1. Which PostgreSQL integer type is best suited for storing very large whole numbers?
easy
A. bigint
B. smallint
C. integer
D. decimal
Solution
Step 1: Understand integer types and their sizes
smallint stores small numbers, integer stores medium-sized numbers, and bigint stores very large numbers.
Step 2: Identify the type for very large whole numbers
Since the question asks for very large whole numbers, bigint is the correct choice.
Final Answer:
bigint -> Option A
Quick Check:
Very large whole numbers = bigint [OK]
Hint: Biggest integer type is bigint for very large numbers [OK]
Common Mistakes:
Confusing smallint with bigint
Choosing decimal which is for decimals, not integers
Picking integer which is medium size
2. Which of the following is the correct way to declare a column named age as a 2-byte integer in PostgreSQL?
easy
A. age INT2(2);
B. age INTEGER(2);
C. age BIGINT(2);
D. age SMALLINT;
Solution
Step 1: Recall PostgreSQL integer type syntax
PostgreSQL uses SMALLINT for 2-byte integers. The syntax is simply column_name SMALLINT;.
Step 2: Evaluate each option
age SMALLINT; uses correct syntax. The other options incorrectly use size in parentheses (like INT2(2), INTEGER(2), BIGINT(2)), which is invalid for integer types in PostgreSQL.
Final Answer:
age SMALLINT; -> Option D
Quick Check:
2-byte integer = SMALLINT syntax [OK]
Hint: Use SMALLINT keyword for 2-byte integers, no size in parentheses [OK]
Common Mistakes:
Adding size in parentheses like INTEGER(2)
Using BIGINT for small numbers
Specifying size like INT2(2) for integer types
3. What will be the result of this PostgreSQL query?
CREATE TABLE test_numbers (num SMALLINT); INSERT INTO test_numbers VALUES (40000); SELECT * FROM test_numbers;
medium
A. 40000
B. Error: integer out of range
C. 0
D. NULL
Solution
Step 1: Understand SMALLINT range
SMALLINT can store values from -32768 to 32767 only.
Step 2: Check inserted value against range
40000 is greater than 32767, so inserting it causes an error.
Final Answer:
Error: integer out of range -> Option B
Quick Check:
40000 > SMALLINT max 32767 = error [OK]
Hint: Check value fits type range; else error occurs [OK]
Common Mistakes:
Assuming value truncates silently
Expecting 0 or NULL instead of error
Confusing SMALLINT range with INTEGER
4. You wrote this table definition:
CREATE TABLE sales (id INTEGER, amount SMALLINT);
But when inserting a large amount like 40000, you get an error. How do you fix it?
medium
A. Change amount column type to INTEGER
B. Change id column type to SMALLINT
C. Insert smaller values only
D. Change amount column type to tinyint
Solution
Step 1: Identify cause of error
Amount column is SMALLINT which maxes at 32767, so 40000 is too large.
Step 2: Choose appropriate type to hold 40000
INTEGER can hold values up to 2,147,483,647, so changing amount to INTEGER fixes the error.
Final Answer:
Change amount column type to INTEGER -> Option A
Quick Check:
40000 fits INTEGER but not SMALLINT [OK]
Hint: Use INTEGER for values larger than 32767 [OK]
Common Mistakes:
Changing unrelated column type
Trying to insert smaller values only
Choosing tinyint which is a MySQL type, not PostgreSQL
5. You need to store user IDs that can be very large numbers, possibly exceeding 2 billion. Which PostgreSQL integer type should you choose and why?
hard
A. smallint because it uses less storage
B. integer because it supports up to 2 billion
C. bigint because it supports numbers larger than 2 billion
D. serial because it auto-increments
Solution
Step 1: Understand size limits of integer types
smallint max is 32767, integer max is about 2,147,483,647, bigint supports much larger numbers.
Step 2: Match requirement to type
User IDs may exceed 2 billion, so integer is insufficient. bigint is needed to store larger values.
Final Answer:
bigint because it supports numbers larger than 2 billion -> Option C
Quick Check:
IDs > 2 billion need bigint [OK]
Hint: Use bigint for numbers larger than 2 billion [OK]
Common Mistakes:
Choosing smallint for large IDs
Assuming integer supports >2 billion
Confusing serial with integer size
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.