The data type of a column defines what value the column can hold: integer, character, money, date and time, binary, and so on.

SQL data types can be broadly divided into following categories.

  1. Numeric data types such as int, tinyint, bigint, float, real etc.
  2. Date and Time data types such as Date, Time, Datetime etc.
  3. Character and String data types such as char, varchar, text etc.
  4. Unicode character string data types, for example nchar, nvarchar, ntext etc.
  5. Binary data types such as binary, varbinary etc.
  6. Miscellaneous data types – clob, blob, xml, cursor, table etc.
sql data types

SQL Data Types important points

  • Not all data types are supported by every relational database vendors. For example, Oracle database doesn’t support DATETIME and MySQL doesn’t support CLOB data type. So while designing database schema and writing sql queries, make sure to check if the data types are supported or not.
  • Data types listed here doesn’t include all the data types, these are the most popularly used data types. Some relational database vendors have their own data types that might be not listed here. For example, Microsoft SQL Server has money and smallmoney data types but since it’s not supported by other popular database vendors, it’s not listed here.
  • Every relational database vendor has it’s own maximum size limit for different data types, you don’t need to remember the limit. Idea is to have the knowledge of what data type to be used in a specific scenario.

Let’s look into different categories of sql data types in detail.

SQL Numeric Data Types

DatatypeFromTo
bit01
tinyint0255
smallint-32,76832,767
int-2,147,483,6482,147,483,647
bigint-9,223,372,036,854,775,8089,223,372,036,854,775,807
decimal-10^38 +110^38 -1
numeric-10^38 +110^38 -1
float-1.79E + 3081.79E + 308
real-3.40E + 383.40E + 38

SQL Date and Time Data Types

DatatypeDescription
DATEStores date in the format YYYY-MM-DD
TIMEStores time in the format HH:MI:SS
DATETIMEStores date and time information in the format YYYY-MM-DD HH:MI:SS
TIMESTAMPStores number of seconds passed since the Unix epoch (‘1970-01-01 00:00:00’ UTC)
YEARStores year in 2 digit or 4 digit format. Range 1901 to 2155 in 4-digit format. Range 70 to 69, representing 1970 to 2069.

SQL Character and String Data Types

DatatypeDescription
CHARFixed length with maximum length of 8,000 characters
VARCHARVariable length storage with maximum length of 8,000 characters
VARCHAR(max)Variable length storage with provided max characters, not supported in MySQL
TEXTVariable length storage with maximum size of 2GB data

Note that all the above data types are for character stream, they should not be used with unicode data.

SQL Unicode Character and String Data Types

DatatypeDescription
NCHARFixed length with maximum length of 4,000 characters
NVARCHARVariable length storage with maximum length of 4,000 characters
NVARCHAR(max)Variable length storage with provided max characters
NTEXTVariable length storage with maximum size of 1GB data

Note that above data types are not supported in MySQL database.

SQL Binary Data Types

DatatypeDescription
BINARYFixed length with maximum length of 8,000 bytes
VARBINARYVariable length storage with maximum length of 8,000 bytes
VARBINARY(max)Variable length storage with provided max bytes
IMAGEVariable length storage with maximum size of 2GB binary data

SQL Miscellaneous Data Types

DatatypeDescription
CLOBCharacter large objets that can hold up to 2GB
BLOBFor binary large objects
XMLfor storing xml data
JSONfor storing JSON data

That’s all for a quick roundup on SQL data types.