В стандарті SQL1 був описаний лише мінімальний набір типів даних. Вони підтримуються всіма промисловими СУБД.
Стандарт SQL2 добавив у цей набір літерні рядки змінної довжини, значення дати і часу, тощо.
Сучасні СУБД дозволяють опрацьовувати дані самих різних типів, серед яких найбільш поширеними є такі типи:
Цілі числа.
INT цілі числа (4 байти)
INTEGER - 2¢147¢483¢648. +2¢147¢483¢647
SMALLINT малі цілі числа (2 байти)
- 32¢768..+32¢767
В таких стовпчиках, як правило, зберігаються дані про кількість, вік співробітників, тощо. Також вони використовуються для зберігання ідентифікаторів: код клієнта, працівника чи замовлення.
2. Десяткові числа.
DECIMAL ( ,)
DEC ( ,)
NUMERIC ( ,)
- загальна кількість знаків у числі (максимум 15)
- кількість знаків у дробовій частці.
- може бути = 0
- повинна бути <
- в таких стовпчиках зберігаються числа, які мають дробову частину, і які необхідно обчислювати точно, наприклад: курси валют; проценти; крім того, в таких стовпчиках часто зберігаються грошові величини.
3. Числа з плаваючою крапкою.
FLOAT
REAL - до 7 знач. цифр, (4 байти) 3,4·10-38... 3,4·10+38
DOUBLE PRECISION- до 15 знач. цифр (8 байт) 1,7·10-308... 1,7·10+308
- використовуються для зберігання величин, які можна обчислювати наближено: значення ваги і відстані. Числа з плаваючою крапкою представляють більший діапазон значень, ніж десяткові числа, але при обчисленнях можливі похибки заокруглення.
4. Рядки символів постійної довжини.
CHAR ( )
CHARACTER ( )
- 0..32767 байт
- імена людей, назви компаній і товарів, адреси, тощо.
5. Рядки символів змінної довжини.
SQL 2
VARCHAR ( )
- 0..32767 байт
6. Грошові величини.
MONEY
CURRENCY - такий окремий тип є далеко не у всіх СУБД. Як правило, ці дані зберігаються у вигляді десяткового числа.
7. Дата і час.
DATE SQL2 - дата і час, від 1.01.0100 до 11.12.5941 (8 байт)
(TIME) - час
TIME ( )
TIMESTAMP ( ) - реалізація дати і часу дуже відрізняється у різних СУБД.
8. Булівські величини.
деякі СУБД явно підтримують (informix) логічні значення TRUE чи FALSE, інші – лише дозволяють виконувати логічні операції над даними в інструкціях SQL.
9. Довгий текст (SQL2).
деякі СУБД підтримують стовпчики, в яких можуть зберігатися довгі літерні рядки (як, правило до 32 000 або 65 000 символів, а в деяких випадках і >). Це дозволяє зберігати в БД цілі документи.
10. Неструктуровані потоки байтів. (SQL2)
Сучасні СУБД дозволяють зберігати неструктуровані потоки байтів змінної довжини. Такі стовпчики, як правило, використовуються для зберігання графічних та відео-зображень, виконуваних файлів, тощо. Тип IMAGE в SQL Server – дозволяє зберігати до 2 млрд. байтів.
Відмінності в реалізації типів даних у різних СУБД суттєво заважають в роботі – не можна переносити програми із однієї платформи на іншу.
Причини таких відмінностей – в самому шляху розвитку реляційних баз даних:
1). Виробник СУБД добавляє в свій продукт підтримку нового типу даних, який забезпечує нові корисні можливості для певної групи користувачів.
2). Інший виробник, оцінивши ідею, вводить підтримку цього типу даних в свій продукт, але вносить деякі модифікації, - щоб його не можна було звинуватити в сліпому копіюванні.
3). Якщо ідея виявилася вдалою, то через деякий час цей тип даних з’явиться в більшості СУБД.
4). Далі такою ідеєю починають цікавитися комітети по стандартизації, задача яких – усунення відмінностей в реалізації ідеї у ведучих СУБД.
Але чим більше таких відмінностей, тим важче знайти компроміс. Як правило, результати роботи комітету буде варіант, який не співпадає із жодною з реалізацій.
5). Виробники СУБД починають впроваджувати підтримку отриманого стандартизованого типу даних, але, оскільки вже є дуже багато інстальованих попередніх версій СУБД, - то вони вимушені підтримувати і старий варіант типу даних (для сумісності програм).
6). Через дуже значний період часу користувачі, нарешті, повністю переходять до використання стандартного варіанту типу даних і виробники СУБД починають вилучати підтримку старого варіанту із своїх продуктів.