Різні типи даних в SQL

Не всі типи значень, що містяться в полях таблиці, логічно однакові

Не всі типи значень, що містяться в полях таблиці, логічно однакові. Найбільш очевидні відмінності між числами і текстом. Неможливо розташувати числа у алфавітному порядку або витягти одне ім'я з іншого. Оскільки системи реляційних баз даних засновані на зв'язках між частинами інформації, різні типи даних повинні явно відрізнятися один від одного, щоб можна було застосувати відповідні способи їх обробки і порівняння.

У SQL кожному полю приписується «тип даних» (data type), який визначає, якого роду значення можуть міститися в поле. Всі значення для даного поля повинні бути одного типу.

Всі значення для даного поля повинні бути одного типу

Не всі типи значень, що містяться в полях таблиці, логічно однакові. Найбільш очевидні відмінності між числами і текстом. Неможливо розташувати числа у алфавітному порядку або витягти одне ім'я з іншого. Оскільки системи реляційних баз даних засновані на зв'язках між частинами інформації, різні типи даних повинні явно відрізнятися один від одного, щоб можна було застосувати відповідні способи їх обробки і порівняння.

У SQL кожному полю приписується «тип даних» (data type), який визначає, якого роду значення можуть міститися в поле. Всі значення для даного поля повинні бути одного типу.

У таблиці Customers, наприклад, поля cname і city є рядками тексту, тоді як поля rating, snum, cnum - числові. Саме з цієї причини неможливо занести значення «Highest» або «None» в поле rating, що має числовий тип. Це вдале обмеження, оскільки воно накладає деяку структуру на конкретні дані. Операцію порівняння, яка виконується для одних рядків і не виконується для інших, неможливо зробити, якщо значення поля мають змішаний тип даних.

Визначення цих типів даних є тією областю, в якій багато комерційних СУБД і офіційний стандарт SQL мають суттєві відмінності. Стандарт ANSI SQL розпізнає тільки текстовий і числовий типи, тоді як багато комерційних СУБД використовують і інші спеціальні типи даних. Зауважимо, що типи DATE (дата) і TIME (час) майже de-facto є стандартними (хоча конкретні їх формати відрізняються). Деякі СУБД підтримують такі типи даних як MONEY (гроші) і BINARY (двійковий). (BINARY - це спеціальне числове уявлення, що використовується комп'ютером. Вся інформація в комп'ютері представлена ​​двійковими числами, потім вона перетворюється в інші системи - так її легше використовувати і розуміти.)

ANSI визначає декілька різних типів числових значень. Складність числових типів ANSI пояснюється, по крайній мірі частково, спробою підтримати сумісність вкладеного SQL з безліччю інших мов.

Два типу даних ANSI, INTEGER і DECIMAL (для яких можна використовувати абревіатуру INT і DEC відповідно}, адекватні і теоретичним цілям, і безлічі практичних додатків в діловому житті. INTEGER відрізняється від DECIMAL тим, що забороняє використовувати цифри праворуч від десяткового дробу, а також саму десяткову точку.

Типом даних для тексту є CHAR (CHARACTER), який відноситься до рядка тексту. Поле типу CHAR має фіксовану довжину, рівну максимальному числу букв, які можна ввести в це поле. Більшість реалізацій SQL має нестандартний тип, названий VARCHAR, - це текстовий рядок будь-якої довжини аж до максимуму, що визначається конкретною реалізацією SQL. Значення CHAR і VARCHAR полягають в поодинокі лапки, як, наприклад, 'текст'. Різниця між ними полягає в тому, що для типу CHAR відводиться ділянка пам'яті, достатній для зберігання рядка максимальної довжини, а для VARCHAR пам'ять виділяється в міру необхідності.

Символьні типи складаються з усіх символів, які можна ввести з клавіатури, в тому числі і цифр. Однак, число 1 не є те ж саме, що символ '1'. Символ '1' це зовсім інша частина друкованого тексту, який не розпізнається комп'ютером як числове значення 1. 1 + 1 = 2, але '1' + '1' не дорівнює '2'. Значення типу CHARACTER зберігаються в комп'ютері як двійкові значення, але для користувача представляються у вигляді друкованого тексту. Перетворення виконується відповідно до формату, що визначаються тією системою, якою ви користуєтеся. Це може бути формат одного з двох стандартних типів (можливо, з розширеннями), які застосовуються в комп'ютерних системах: ASCII (використовується в усіх персональних і більшості малих комп'ютерів) і EBCDIC (використовується для великих комп'ютерів). Певні операції, такі як впорядкування значень поля за алфавітом, залежать від формату.

Тип DATE буде застосовуватися відповідно до вимог ринку, а не ANSI. У реалізаціях SQL, що не розпізнають тип DATE, можна оголосити дату символьним або числовим полем, але це ускладнить виконання безлічі операцій. Слід ознайомитися з документацією по програмному забезпеченню SQL-системи, щоб точно визначити, які типи даних вона підтримує.

Джерело: SQL для простих смертних / Мартін Грабер

З повагою, Артем Санніков

сайт: ArtemSannikov.ru

Tags: MySQL , База даних .