Data types (NUMBER, CHAR, VARCHAR, VARCHAR2, CLOB, NCLOB, LONG, DATE, RAW, LONGROW)

Choosing the right data type is like picking the right container for your cargo: use the wrong one, and you’ll either waste space, break the data, or crash your database performance.

12 min read · 10 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

The Database Packing Problem

Imagine you are running a massive logistics warehouse. If you try to store a delicate, tiny microchip inside a massive, reinforced shipping container designed for a car, you’ve wasted space. If you try to force a massive car into a tiny cardboard box, it simply won't fit. Databases work exactly the same way. When you design a table, you must tell the system exactly what kind of 'box' (data type) you are using to store your information. Pick wrong, and you either waste precious memory or your data simply won't be saved correctly.

Theory

The Storage Containers

Think of data types as different storage solutions: CHAR is a rigid metal box that always takes the same space, even if empty. VARCHAR2 is a flexible bag that expands only to fit what you put inside. CLOB is a massive warehouse for those giant documents that won't fit in any box, and NUMBER is a specialized precision tool for calculations.

Theory

The Idea, Formally

In Oracle SQL, a Data Type defines the storage format, constraints, and valid operations for a column. The most important types you need to know for your BCA exams are:

NUMBER(p, s)*: Stores fixed or floating-point numbers. 'p' is precision (total digits), 's' is scale (digits after decimal).

CHAR(n)*: Fixed-length character data. If you define CHAR(10) and store 'Hi', it adds 8 spaces to fill the 10.

VARCHAR2(n)*: Variable-length character data. It stores only the characters you provide, saving space.

DATE*: Stores both date and time (century, year, month, day, hour, minute, second).

CLOB / NCLOB*: Character Large Objects. Used for huge blocks of text (up to 4GB).

RAW / LONG RAW*: Stores raw binary data (like images or encrypted keys) in legacy formats.

At a glance

Comparison of primary Oracle data types

Data TypeStorage StyleBest Use Case
CHARFixed-LengthCodes like 'US', 'IN', 'Y', 'N' (rarely changing)
VARCHAR2Variable-LengthNames, addresses, email IDs (space efficiency)
NUMBERNumericPrices, quantities, IDs, calculations
CLOBLarge TextBook reviews, full-length articles, logs

Think first

The CHAR Padding Test

If you define a column as CHAR(10) and insert the name 'Oracle', how many bytes are actually stored on the disk?

Show the answer

It will store 10 bytes. Because CHAR is fixed-length, Oracle will pad the remaining 4 spaces with blanks to reach the defined size of 10. This is why CHAR is inefficient for data that varies in length.

Theory

The Legacy Problem: LONG and LONG RAW

You might see LONG and LONG RAW in older codebases. These were early ways to store massive amounts of text or binary data. However, they are highly restricted (you can't have more than one per table, they can't be used in many SQL clauses). Always use CLOB or BLOB for new designs. If an exam question asks about 'legacy limitations', mention that LONG types are outdated and restricted compared to modern LOBs.

Quiz

Which data type should you choose for a column storing employee salaries (e.g., 50000.50)?

  1. VARCHAR2
  2. CHAR
  3. NUMBER(10, 2)
  4. CLOB
Show the answer

NUMBER(10, 2)

NUMBER is specifically designed for arithmetic. VARCHAR2 and CHAR are for strings and cannot be used for direct calculations, and CLOB is for large blocks of text.

Watch out

The VARCHAR2 vs. VARCHAR Trap

In Oracle, always use VARCHAR2. While 'VARCHAR' exists as a synonym in some systems, Oracle specifically warns that its behavior might change in future versions. Always favor VARCHAR2 for your exam answers and real-world code to ensure compatibility.

Think first

Design Decision: Library System

You are building a table for a library system. You have a 'Book_Title' column and a 'Book_Description' column. Which data types do you pick for each, and why?

Show the answer

For 'Book_Title', use VARCHAR2(255) because titles vary in length but aren't massive. For 'Book_Description', use CLOB because descriptions can be extremely long, easily exceeding the 4000-byte limit of VARCHAR2.

Summary

Key takeaways

  • Use NUMBER for all math-related values.
  • Use VARCHAR2 for text that varies in length to save space.
  • Use CHAR only for fixed-length codes where efficiency of access outweighs padding.
  • Use CLOB for large text blocks that exceed standard column limits.
  • Avoid LONG and LONG RAW in new database designs; they are legacy types with severe functional limitations.
  • Always remember: CHAR pads, VARCHAR2 shrinks to fit.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Introduction of Relational Database

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Data types (NUMBER, CHAR, VARCHAR, VARCHAR2, CLOB, NCLOB, LONG, DATE, RAW, LONGROW) · Mastering SQL - PL/SQL (SEC-02 option A) · Gri-Learn