SQL Типи даних для MySQL, SQL Server та MS Access
Тип даних стовпця визначає, яке значення може містити стовпець: ціле число, символ, гроші, дата й час, двійкове тощо.
SQL Типи даних
Кожен стовпець у таблиці бази даних повинен мати назву та тип даних.
Розробник SQL повинен вирішити, який тип даних буде зберігатися в кожному стовпці під час створення таблиці. Тип даних є орієнтиром для SQL, щоб зрозуміти, який тип даних очікується в кожному стовпці, а також визначає, як SQL взаємодіятиме зі збереженими даними.
Примітка: Типи даних можуть мати різні назви в іншій базі даних. І навіть якщо назва однакова, розмір та інші деталі можуть відрізнятися! Завжди перевіряйте документацію!
MySQL Типи даних (Версія 8.0)
У MySQL є три основні типи даних: рядок, число, дата й час.
Рядкові типи даних
Тип даних | Опис |
---|---|
CHAR(size) | Рядок ФІКСОВАНОЇ довжини (може містити літери, цифри та спеціальні символи). Параметр size визначає довжину стовпця в символах — може бути від 0 до 255. За замовчуванням 1 |
VARCHAR(size) | Рядок ЗМІННОЇ довжини (може містити літери, цифри та спеціальні символи). Параметр size визначає максимальну довжину рядка в символах — може бути від 0 до 65535 |
BINARY(size) | Дорівнює CHAR(), але зберігає двійкові рядки байтів. Параметр size визначає довжину стовпця в байтах. За замовчуванням 1 |
VARBINARY(size) | Дорівнює VARCHAR(), але зберігає двійкові рядки байтів. Параметр size визначає максимальну довжину стовпця в байтах. |
TINYBLOB | Для BLOB (великих двійкових об’єктів). Максимальна довжина: 255 байт |
TINYTEXT | Містить рядок максимальною довжиною 255 символів |
TEXT(size) | Містить рядок максимальною довжиною 65 535 байт |
BLOB(size) | Для BLOB (великих двійкових об’єктів). Містить до 65 535 байт даних |
MEDIUMTEXT | Містить рядок максимальною довжиною 16 777 215 символів |
MEDIUMBLOB | Для BLOB (великих двійкових об’єктів). Містить до 16 777 215 байт даних |
LONGTEXT | Містить рядок максимальною довжиною 4 294 967 295 символів |
LONGBLOB | Для BLOB (великих двійкових об’єктів). Містить до 4 294 967 295 байт даних |
ENUM(val1, val2, val3, ...) | Рядковий об’єкт, який може мати лише одне значення, вибране зі списку можливих значень. Ви можете перерахувати до 65535 значень у списку ENUM. Якщо вставлено значення, якого немає у списку, буде вставлено порожнє значення. Значення сортуються в порядку їх введення |
SET(val1, val2, val3, ...) | Рядковий об’єкт, який може мати 0 або більше значень, вибраних зі списку можливих значень. Ви можете вказати до 64 значень у списку SET |
Числові типи даних
Тип даних | Опис |
---|---|
BIT(size) | Тип бітового значення. Кількість бітів на значення вказується в size. Параметр size може містити значення від 1 до 64. Стандартним значенням для size є 1 |
TINYINT(size) | Дуже маленьке ціле число. Діапазон зі знаком — від -128 до 127. Діапазон без знака — від 0 до 255. Параметр size визначає максимальну ширину відображення (яка становить 255) |
BOOL | Нуль вважається false, ненульові значення вважаються true |
BOOLEAN | Дорівнює BOOL |
SMALLINT(size) | Маленьке ціле число. Діапазон зі знаком – від -32768 до 32767. Діапазон без знаку – від 0 до 65535. Параметр size визначає максимальну ширину відображення (яка становить 255) |
MEDIUMINT(size) | Середнє ціле число. Діапазон зі знаком – від -8388608 до 8388607. Діапазон без знака – від 0 до 16777215. Параметр size визначає максимальну ширину відображення (яка становить 255) |
INT(size) | Середнє ціле число. Діапазон зі знаком – від -2147483648 до 2147483647. Діапазон без знака – від 0 до 4294967295. Параметр size визначає максимальну ширину відображення (яка становить 255) |
INTEGER(size) | Equal to INT(size) |
BIGINT(size) | Велике ціле число. Діапазон зі знаком – від -9223372036854775808 до 9223372036854775807. Діапазон без знака – від 0 до 18446744073709551615. Параметр size визначає максимальну ширину відображення (яка становить 255) |
FLOAT(size, d) | Число з плаваючою комою. Загальна кількість цифр вказується в size. Кількість цифр після коми вказується в параметрі d. Цей синтаксис застарів у MySQL 8.0.17, і його буде видалено в наступних версіях MySQL |
FLOAT(p) | Число з плаваючою комою. MySQL використовує значення p, щоб визначити, чи використовувати FLOAT або DOUBLE для результуючого типу даних. Якщо p становить від 0 до 24, тип даних стає FLOAT(). Якщо p становить від 25 до 53, тип даних стає DOUBLE() |
DOUBLE(size, d) | Число з плаваючою комою нормального розміру. Загальна кількість цифр вказується в size. Кількість цифр після коми вказується в параметрі d |
DOUBLE PRECISION(size, d) | |
DECIMAL(size, d) | Точне число з фіксованою комою. Загальна кількість цифр вказується в size. Кількість цифр після коми вказується в параметрі d. Максимальне число для size – 65. Максимальне число для d – 30. Стандартне значення для size – 10. Стандартне значення для d дорівнює 0. |
DEC(size, d) | Дорівнює DECIMAL(size,d) |
Примітка: Усі типи числових даних можуть мати додаткову опцію: UNSIGNED або ZEROFILL. Якщо ви додаєте опцію UNSIGNED, MySQL забороняє негативні значення для стовпця. Якщо ви додаєте параметр ZEROFILL, MySQL також автоматично додає атрибут UNSIGNED до стовпця.
Типи даних дати та часу
Тип даних | Опис |
---|---|
DATE | Дата. Формат: YYYY-MM-DD. Підтримуваний діапазон від '1000-01-01' до '9999-12-31' |
DATETIME(fsp) | Комбінація дати й часу. Формат: YYYY-MM-DD hh:mm:ss. Підтримується діапазон від '1000-01-01 00:00:00' до '9999-12-31 23:59:59'. Додавання DEFAULT та ON UPDATE у визначення стовпця, щоб отримати автоматичну ініціалізацію та оновлення до поточної дати й часу |
TIMESTAMP(fsp) | Мітка часу. Значення TIMESTAMP зберігаються як кількість секунд з епохи Unix ('1970-01-01 00:00:00' UTC). Формат: YYYY-MM-DD hh:mm:ss. Підтримується діапазон від '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC. Автоматичну ініціалізацію та оновлення до поточної дати й часу можна вказати за допомогою DEFAULT CURRENT_TIMESTAMP та ON UPDATE CURRENT_TIMESTAMP у визначенні стовпця |
TIME(fsp) | Час. Формат: hh:mm:ss. Підтримуваний діапазон – від '-838:59:59' до '838:59:59' |
YEAR | Рік у чотиризначному форматі. Дозволені значення в чотиризначному форматі: від 1901 до 2155 і 0000. MySQL 8.0 не підтримує рік у двозначному форматі. |
SQL Server Типи даних
Рядкові типи даних
Тип даних | Опис | Максимальний розмір | Зберігання |
---|---|---|---|
char(n) | Рядок символів фіксованої ширини | 8000 символів | Визначена ширина |
varchar(n) | Символьний рядок змінної ширини | 8000 символів | 2 байти + кількість символів |
varchar(max) | Символьний рядок змінної ширини | 1 073 741 824 символи | 2 байти + кількість символів |
text | Символьний рядок змінної ширини | 2 ГБ текстових даних | 4 байти + кількість символів |
nchar | Рядок Unicode фіксованої ширини | 4000 символів | Визначена ширина x 2 |
nvarchar | Рядок Unicode змінної ширини | 4000 символів | |
nvarchar(max) | Рядок Unicode змінної ширини | 536 870 912 символів | |
ntext | Рядок Unicode змінної ширини | 2 ГБ текстових даних | |
binary(n) | Двійковий рядок фіксованої ширини | 8000 байт | |
varbinary | Двійковий рядок змінної ширини | 8000 байт | |
varbinary(max) | Двійковий рядок змінної ширини | 2 Гб | |
image | Двійковий рядок змінної ширини | 2 Гб |
Числові типи даних
Тип даних | Опис | Зберігання |
---|---|---|
bit | Ціле число, яке може бути 0, 1 або NULL | |
tinyint | Допускає цілі числа від 0 до 255 | 1 byte |
smallint | Дозволяє цілі числа від -32 768 до 32 767 | 2 bytes |
int | Дозволяє цілі числа від -2 147 483 648 до 2 147 483 647 | 4 байти |
bigint | Дозволяє цілі числа від -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 | 8 байт |
decimal(p,s) | Фіксована точність і масштабні числа.
Дозволяє числа від -10^38 +1 до 10^38 –1. Параметр p вказує максимальну загальну кількість цифр, які можна зберегти (як ліворуч, так і праворуч від коми). p має бути значенням від 1 до 38. Типовим значенням є 18. Параметр s вказує максимальну кількість цифр, що зберігаються праворуч від десяткової коми. s має бути значенням від 0 до p. Значення за замовчуванням – 0 |
5-17 байт |
numeric(p,s) | Фіксована точність і масштабні числа.
Дозволяє числа від -10^38 +1 до 10^38 –1. Параметр p вказує максимальну загальну кількість цифр, які можна зберегти (як ліворуч, так і праворуч від коми). p має бути значенням від 1 до 38. Типовим значенням є 18. Параметр s вказує максимальну кількість цифр, що зберігаються праворуч від десяткової коми. s має бути значенням від 0 до p. Значення за замовчуванням – 0 |
5-17 байт |
smallmoney | Грошові дані від -214 748,3648 до 214 748,3647 | 4 байти |
money | Грошові дані від -922,337,203,685,477.5808 до 922,337,203,685,477.5807 | 8 байт |
float(n) | Числові дані з плаваючою точністю від -1,79E + 308 до 1,79E + 308. Параметр n вказує, чи має поле містити 4 чи 8 байтів. float(24) містить 4-байтове поле, а float(53) містить 8-байтове поле. Значення за замовчуванням n дорівнює 53. |
4 або 8 байтів |
real | Числові дані з плаваючою точністю від -3,40E + 38 до 3,40E + 38 | 4 байта |
Типи даних дати та часу
Тип даних | Опис | Зберігання |
---|---|---|
datetime | З 1 січня 1753 року по 31 грудня 9999 року з точністю до 3,33 мілісекунди | 8 байт |
datetime2 | З 1 січня 0001 року по 31 грудня 9999 року з точністю до 100 наносекунд | 6-8 байт |
smalldatetime | З 1 січня 1900 року по 6 червня 2079 року з точністю до 1 хвилини | 4 байти |
date | Зберігає лише дату. З 1 січня 0001 р. до 31 грудня 9999 р. | 3 байти |
time | Зберігає час лише з точністю до 100 наносекунд | 3-5 байт |
datetimeoffset | Те саме, що datetime2 із додаванням зміщення часового поясу | 8-10 байт |
timestamp | Зберігає унікальний номер, який оновлюється щоразу, коли створюється або змінюється рядок. Значення часової позначки базується на внутрішньому годиннику й не відповідає реальному часу. Кожна таблиця може мати лише одну змінну мітки часу |
Інші типи даних
Тип даних | Опис |
---|---|
sql_variant | Зберігає до 8000 байт даних різних типів, крім тексту, ntext і мітки часу |
uniqueidentifier | Зберігає глобальний унікальний ідентифікатор (GUID) |
xml | Зберігає дані у форматі XML. Максимум 2 ГБ |
cursor | Зберігає посилання на курсор, який використовується для операцій з базою даних |
table | Зберігає набір результатів для подальшої обробки |
MS Access Типи даних
Тип даних | Опис | Зберігання |
---|---|---|
Text | Використовується для тексту або комбінацій тексту та цифр. Максимум 255 символів | |
Memo | Memo використовується для більшої кількості тексту. Зберігає до 65 536 символів. Примітка. Ви не можете сортувати поле memo. Однак вони доступні для пошуку | |
Byte | Дозволяє цілі числа від 0 до 255 | 1 байт |
Integer | Дозволяє цілі числа від -32 768 до 32 767 | 2 байти |
Long | Дозволяє цілі числа від -2,147,483,648 до 2,147,483,647 | 4 байти |
Single | Число з плаваючою комою одинарної точності. Оброблятиме більшість десяткових знаків | 4 байти |
Double | Число з плаваючою комою подвійної точності. Обробить більшість десяткових дробів | 8 байт |
Currency | Використовуйте для валюти. Містить до 15 цифр цілих доларів плюс 4 знаки після коми. Порада. Ви можете вибрати валюту країни, яку використовувати | 8 байт |
AutoNumber | Поля автонумерації автоматично надають кожному запису власний номер, який зазвичай починається з 1 | 4 байти |
Date/Time | Використовуйте для дат і часу | 8 байт |
Yes/No | Логічне поле може відображатися як Yes/No, True/False або On/Off. У коді використовуйте константи True і False (еквівалентні -1 та 0). Примітка. Нульові значення не допускаються в полях Yes/No | 1 біт |
Ole Object | Може зберігати зображення, аудіо, відео та інші BLOB (великі двійкові об’єкти) | до 1 Гб |
Hyperlink | Містять посилання на інші файли, включно з вебсторінками | |
Lookup Wizard | Дозволяє ввести список параметрів, які потім можна вибрати зі спадного списку | 4 байти |