У SQL кожен стовпець (в таблиці) має власний тип даних, який обмежує те, що може зберігатися у стовпці. Наприклад, якщо тип даних стовпця — INT, то в цьому стовпці можуть зберігатися лише цілі числа, такі як 0, 1, -1 тощо.
Різні СУБД підтримують різні типи даних. Розглянемо одні з найчастіше використовуваних типів даних у SQL Server, MySQL, PostgreSQL та Oracle.
Типи даних в SQL Server
Цілочисельні типи даних
| Тип даних | Опис |
| BIT | Може містити один біт (0 або 1) або NULL. |
| TINYINT | Може містити числа в діапазоні від 0 до 255. |
| SMALLINT | Може містити числа в діапазоні від -32,768 до 32,767. |
| INT | Може містити числа в діапазоні від -2,147,483,648 до 2,147,483,647. |
| BIGINT | Може містити числа в діапазоні від -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
Рядкові типи даних
| Тип даних | Опис |
| CHAR(n) | Може містити символи фіксованої довжини (n – це фіксована довжина, максимум 8000 символів). |
| VARCHAR(n) | Може містити символи n довжини (n – це змінна довжини, максимум 8000 символів). |
| TEXT | Може містити символи розміром до 2 ГБ. |
| IMAGE | Може містити двійковий рядок розміром до 2 ГБ. |
Типи даних Дати та Часу
| Тип даних | Опис |
| DATETIME | Може містити дату та час від 1 січня 1753 року до 31 грудня 9999 року. |
| DATETIME2 | Може містити дату та час від 1 січня 0001 року до 31 грудня 9999 року. |
| DATE | Може містити лише дату від 1 січня 0001 року до 31 грудня 9999 року. |
| TIME | Може містити лише час. |
Примітка: SQL Server підтримує багато інших типів даних. Щоб дізнатися більше, читайте документацію SQL Server.
Типи даних в MySQL
Цілочисельні типи даних
| Тип даних | Опис |
| BIT(n) | Може містити n-бітові значення (n може варіюватися від 1 до 64). |
| TINYINT | Може містити числа в діапазоні від -128 до 127. |
| SMALLINT | Може містити числа в діапазоні від -32,768 до 32,767. |
| MEDIUMINT | Може містити числа в діапазоні від -8,388,608 до 8,388,607. |
| INT | Може містити числа в діапазоні від -2,147,483,648 до 2,147,483,647. |
| BIGINT | Може містити числа в діапазоні від -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
Рядкові типи даних
| Тип даних | Опис |
| CHAR(n) | Може містити символи фіксованої довжини (n – це фіксована довжина, максимум 8000 символів). |
| VARCHAR(n) | Може містити символи n довжини (n – це змінна довжини, максимум 8000 символів). |
| BINARY(n) | Може містити двійкові рядки фіксованої довжини (n – фіксована довжина). |
| VARBINARY(n) | Може містити двійкові рядки заданої довжини (n – це змінна довжина). |
| TINYTEXT | Може містити до 255 символів. |
| TEXT(n) | Може містити символи розміром до 65,535 байт. |
| MEDIUMTEXT | Може містити до 16,777,215 символів. |
| LONGTEXT | Може містити до 4,294,967,295 символів. |
| BLOB(n) | Може містити великі двійкові об’єкти розміром до 65,535 байт. |
| MEDIUMBLOB | Може містити великі двійкові об’єкти розміром до 16,777,215 байт. |
| LONGBLOB | Може містити великі двійкові об’єкти розміром до 4,294,967,295 байт. |
Типи даних Дати та Часу
| Тип даних | Опис |
| DATE | Може містити дату в форматі РРРР-ММ-ДД і в діапазоні від 1000-01-01 до 9999-12-31. |
| DATETIME | Може містити дату та час в форматі РРРР-ММ-ДД гг:хх:сс. |
| TIME | Може містити лише час в форматі гг:хх:сс та в діапазоні від -838:59:59 до 838:59:59. |
| YEAR | Може містити рік в 4-значному форматі та в діапазоні від 1901 до 2155. |
| TIMESTAMP | Може містити позначку часу від поточного часового поясу до UTC. |
Примітка: MySQL підтримує багато інших типів даних. Щоб дізнатись більше, читайте документацію MySQL.
Типи даних в PostgreSQL
Цілочисельні типи даних
| Тип даних | Опис |
| SMALLINT | Може містити числа в діапазоні від -32,768 до 32,767. |
| INTEGER | Може містити числа в діапазоні від -2,147,483,648 до 2,147,483,647. |
| BIGINT | Може містити числа в діапазоні від -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
| DECIMAL | Може містити числа з 131072 цифр до десяткової крапки і 16383 цифр після десяткової крапки. |
| SMALLSERIAL | Може містити числа, що автоматично збільшуються, від 1 до 32767. |
| SERIAL | Може містити числа, що автоматично збільшуються, від 1 до 2147483647. |
| BIGSERIAL | Може містити цифри, що автоматично збільшуються, від 1 до 9223372036854775807. |
Рядкові типи даних
| Тип даних | Опис |
| CHAR(n) | Може містити символи фіксованої довжини (n – фіксована довжина). |
| VARCHAR(n) | Може містити символи n довжини (n – це змінна довжини). |
| TEXT | Може містити символи без обмежень. |
Типи даних Дати та Часу
| Тип даних | Опис |
| TIMESTAMP | Може містити дату та час. |
| DATE | Може містити лише дату. |
| TIME | Може містити лише час. |
Примітка: PostgreSQL підтримує багато інших типів даних. Щоб дізнатись більше, читайте документацію PostgreSQL.
Типи даних в Oracle
Цілочисельні типи даних
| Тип даних | Опис |
| NUMBER | Може містити числа. |
Рядкові типи даних
| Тип даних | Опис |
| CHAR(n) | Може містити символи фіксованої довжини, розміром до 2000 байт (n – фіксована довжина). |
| VARCHAR(n) | Може містити символи n довжини, розміром до 4000 байт (n – це змінна довжини). |
| LONG | Може місити символи розміром до 2 ГБ. |
Типи даних Дати та Часу
| Тип даних | Опис |
| TIMESTAMP | Може містити дату та час. |
| DATE | Може містити лише дату від 1 січня 4712 до н.е. до 31 грудня 9999 н.е. |
| TIME | Може містити лише час. |
Примітка: Oracle підтримує багато інших типів даних. Щоб дізнатись більше, читайте документацію Oracle.

Для SQL Server (на відміну від інших) “n” в CHAR(n) це не кількість символів, а кількість байтів, тобто українська буде займате більше місця за тієї ж кількості символів і ви не будете розуміти чому текст не влазить. Тому краще використовувати NCHAR(n) де n значить кількість байт-пар, що на практиці тотожне кількості символів. Також є відміності між версіями.
Читайте короче документацію вашої версії серверу.
І обов’язково дослідіть тему чому розмір значення треба максимально обмежувати, бо це не тільки бізнес-вимоги, а й швидкодія та зайняті ресурси.