Bird
Raised Fist0
MySQLquery~5 mins

Integer types (TINYINT, INT, BIGINT) in MySQL

Choose your learning style10 modes available
Introduction
Integer types store whole numbers in a database. They help save space and organize data by size.
When you need to store small numbers like age or rating (use TINYINT).
When you want to store regular whole numbers like counts or IDs (use INT).
When you expect very large numbers like big counters or large IDs (use BIGINT).
Syntax
MySQL
column_name TINYINT
column_name INT
column_name BIGINT
TINYINT stores very small numbers (-128 to 127 signed).
INT stores medium size numbers (-2,147,483,648 to 2,147,483,647 signed).
BIGINT stores very large numbers (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 signed).
Examples
Use TINYINT for small numbers like age (0 to 255 if unsigned).
MySQL
age TINYINT
Use INT for normal whole numbers like user IDs.
MySQL
user_id INT
Use BIGINT for very large numbers like big counters.
MySQL
big_counter BIGINT
Sample Program
This creates a table with three integer columns of different sizes, inserts one row, and selects it.
MySQL
CREATE TABLE example_numbers (
  small_num TINYINT,
  normal_num INT,
  large_num BIGINT
);

INSERT INTO example_numbers VALUES (100, 200000, 9000000000000);

SELECT * FROM example_numbers;
OutputSuccess
Important Notes
Choosing the right integer type saves space and improves speed.
Unsigned versions store only positive numbers but double the max positive range.
Always pick the smallest type that fits your data to be efficient.
Summary
TINYINT, INT, and BIGINT store whole numbers of different sizes.
Use TINYINT for small numbers, INT for medium, and BIGINT for very large numbers.
Picking the right type helps your database work better and use less space.

Practice

(1/5)
1. Which MySQL integer type should you use to store a small number between 0 and 255 efficiently?
easy
A. BIGINT
B. INT
C. TINYINT
D. SMALLINT

Solution

  1. Step 1: Understand the range of TINYINT and compare with other types

    TINYINT can store values from 0 to 255 when unsigned, which fits small numbers efficiently. INT and BIGINT store much larger numbers but use more space. SMALLINT also uses more space unnecessarily.
  2. Final Answer:

    TINYINT -> Option C
  3. Quick Check:

    Small numbers (0-255) = TINYINT [OK]
Hint: Use TINYINT for numbers up to 255 to save space [OK]
Common Mistakes:
  • Choosing INT for small numbers wastes space
  • Confusing TINYINT with SMALLINT
  • Not considering unsigned range
2. Which of the following is the correct syntax to declare a NOT NULL BIGINT column named user_id in MySQL?
easy
A. user_id BIGINT;
B. BIGINT user_id;
C. user_id INT BIG;
D. user_id BIGINT NOT NULL;

Solution

  1. Step 1: Check correct order of declaration

    In MySQL, the column name comes first, then the data type, optionally followed by constraints like NOT NULL. Only A follows this: user_id BIGINT NOT NULL;.
  2. Final Answer:

    user_id BIGINT NOT NULL; -> Option D
  3. Quick Check:

    Column name + type + constraints = correct syntax [OK]
Hint: Column name first, then type, then constraints [OK]
Common Mistakes:
  • Putting type before column name
  • Using invalid order of keywords
  • Missing semicolon in some contexts
3. Given the table orders with a column order_count TINYINT UNSIGNED, what will be the result of this query?
INSERT INTO orders (order_count) VALUES (300);
SELECT order_count FROM orders;
medium
A. 300
B. Error: Out of range value
C. 0
D. 44

Solution

  1. Step 1: Understand TINYINT UNSIGNED range and insert effect

    TINYINT UNSIGNED stores 0-255 only. 300 exceeds range, so INSERT throws 'Error: Out of range value' (default strict mode).
  2. Final Answer:

    Error: Out of range value -> Option B
  3. Quick Check:

    Value > 255 in TINYINT UNSIGNED causes error [OK]
Hint: Check value fits type range before insert [OK]
Common Mistakes:
  • Assuming values wrap around silently
  • Ignoring unsigned range limits
  • Expecting automatic truncation without error
4. You have a column defined as INT but you want to store numbers larger than 4,294,967,295. Which change fixes the problem?
medium
A. Change the column type to BIGINT
B. Change the column type to TINYINT
C. Add UNSIGNED to the INT column
D. Use VARCHAR instead of INT

Solution

  1. Step 1: Understand INT range limits and select proper type

    Signed INT max ~2.1 billion, UNSIGNED INT max 4,294,967,295. BIGINT handles much larger (up to ~9 quintillion).
  2. Final Answer:

    Change the column type to BIGINT -> Option A
  3. Quick Check:

    BIGINT stores bigger numbers than INT [OK]
Hint: Use BIGINT for numbers bigger than INT max [OK]
Common Mistakes:
  • Using TINYINT which is smaller
  • Adding UNSIGNED but still too small
  • Switching to VARCHAR loses numeric benefits
5. You want to store user scores that can be very large, but you also want to save space when scores are small. Which MySQL integer type strategy is best?
hard
A. Use INT for most scores and BIGINT only if scores exceed INT range
B. Use TINYINT and switch to BIGINT if needed later
C. Always use BIGINT for all scores
D. Use BIGINT but compress data manually

Solution

  1. Step 1: Balance storage and range needs

    TINYINT too small; always BIGINT wastes space. Use INT initially (efficient for small/medium), ALTER to BIGINT later if needed.
  2. Final Answer:

    Use INT for most scores and BIGINT only if scores exceed INT range -> Option A
  3. Quick Check:

    Balance size and range with INT then BIGINT [OK]
Hint: Start with INT, upgrade to BIGINT if needed [OK]
Common Mistakes:
  • Always using BIGINT wastes space
  • Starting with TINYINT causes overflow
  • Manual compression is complex and error-prone
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