Различные типы данных в 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
Метки: MySQL, База данных.