Типы данных языка SQL
В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице 19.7
Таблица 19.7 – типы данных языка SQL
Тип данных | Объявления |
Символьный | CHAR | VARCHAR |
Битовый | BIT | BIT VARYING |
Точные числа | NUMERIC | DECIMAL | INTEGER | SMALLINT |
Вещественные числа | FLOAT | REAL | DOUBLE PRECISION |
Дата/время | DATE | TIME | TIMESTAMP |
Интервал | INTERVAL |
Строковые типы:
§ CHARACTER(n) или CHAR(n) - символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.
§ VARCHAR(n) - строки символов переменной длины.
Битовые типы:
§ ВIT(п) - строка битов постоянной длины.
§ BIT VARYING(n) - строка битов переменной длины.
Точные типы:
§ NUMERIC[(n,m)] - точные числа, здесь и - общее количество цифр в чис- . ле, m - количество цифр слева от десятичной точки.
§ DECIMAL[(n,m)] - точные числа, здесь п - общее количество цифр в числе, m - количество цифр слева от десятичной точки.
§ DEC[(n,m)] - то же, что и DECIMAl.[(n,m)].
§ INTEGER или INT - целые числа.
§ SMALLINT - целые числа меньшего диапазона.
Вещественные типы:
§ FLOAT[(n)] - числа большой точности, хранимые в форме с плавающей точкой. Здесь n - число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
§ REAL - вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.
§ DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.
Типы даты/времени и интервал:
§ DATE - календарная дата.
§ TIME – формат времени.
§ ТIМЕSТАМР(точность) - дата и время.
§ INTERVAL - временной интервал.
Большинство коммерческих СУБД поддерживают дополнительные типы данных, которые не специфицированы в стандарте. Так, например, практически все СУБД в том или ином виде поддерживают тип данных для представления неструктурированного текста большого объема. Этот тип аналогичен типу MEMO в настольных СУБД. Называются эти типы по-разному, например в ORACLE этот тип называется LONG, в DB2 - LONG VARCHAR, в SYBASE и MS SQL Server - TEXT.
Операторы определения данных
Определение таблиц
Для создания и модификации объектов в языке SQL определена группа операторов DDL (Data Definition Language – язык описания данных). В группе DDL определены операторы для создания, удаления и изменения таблиц, представлений и индексов. Рассмотрим операторы для работы с таблицами.
Создание таблицы БД осуществляется оператором CREATE TABLE, имеющим следующий синтаксис:
CREATE TABLE имя таблицы (
Поле_1: тип_данных ограничения,
Поле_2: тип_данных ограничения)
Главное в команде создания таблицы – определение имени таблицы и описание набора имен полей, которые указываются в соответствующем порядке. Кроме того, этой командой оговариваются типы данных и размеры полей таблицы.
Пусть требуется создать таблицу для хранения данных о товарах, поступающих в продажу в некоторой торговой фирме. Необходимо учесть такие сведения, как название и тип товара, его цена, сорт и город, где товар производится:
CREATE TABLE TOVAR
(ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Price MONEY NOT NULL,
Type VARCHAR(25) NOT NULL,
Sort VARCHAR(50),
City VARCHAR(50))
Ключевое слово NULL используется для указания того, что в данном столбце могут содержаться пустые значения NULL. Значение NULL отличается от пробела или нуля – к нему прибегают, когда необходимо указать, что данные неизвестны. Если указано ключевое слово NOT NULL, то будут отклонены любые попытки пропустить ввод данных в данное поле. По умолчанию стандарт SQL предполагает наличие ключевого слова NULL.
PRIMARY KEY – определяет поле первичного ключа, в некоторых реализациях СУБД может использоваться другой способ определения первичного ключа:
CREATE TABLE TOVAR
(ID INT NOT,
. . .
City VARCHAR(50),
PRIMARY KEY (ID));
Подобным образом можно определить сложный первичный ключ:
PRIMARY KEY (поле_1, …, поле_n)
Структура существующей таблицы может быть модифицирована, для модификации таблицы используется команда ALTER TABLE, которая позволяет: добавлять и удалять поля, переопределять первичные и внешние ключи и переопределять ограничения. Объявление начинается с команды ALTER TABLE Имя_таблицы, а далее следует объявление модификации. Внутри команды может быть только одна модификация. Возможные модификации:
ALTER COLUMN Имя_поля SET DEFAULT Выражение
ALTER COLUMN Имя_поля DROP DEFAULT
ADD Имя_поля
DROP COLUMN Имя_поля
ADD CONSTRAINT Имя_ограничения
DROP CONSTRAINT Имя_ограничения
Например, добавим к таблице товар новое поле – единица (Unit):
ALTER TABLE TOVAR
ADD Unit VARCHAR(10) NOT NULL
Если таблица не пуста, то добавляемый столбец не может быть определен с атрибутом NOT NULL. Этот атрибут означает, что для каждой строки данных соответствующий столбец должен содержать некоторое значение, поэтому добавление столбца с атрибутом NOT NULL приводит к появлению противоречия – уже существующие строки данных таблицы не будут иметь в новом столбце ненулевых значений.
Придется добавить в таблицу новое, необязательное (NULL) поле и заполнить это поле какими-либо значениями для каждой записи и только после этого сделать поле обязательным для заполнения, т.е. установив атрибут NOT NULL.
Изменение поля (в частности, типа данных) может быть выполнено следующим образом:
ALTER TABLE TOVAR
ALTER COLUMN City CHAR(30) NOT NULL
Добавить внешний ключ (ключ связи) можно следующим способом:
ALTER TABLE TOVAR
ADD CONSTRAINT FK_Сategory
FOREIGN KEY (ID_Сategory)
REFERENCES Сategory
Удаление таблицы осуществляется командой DROP TABLE, при этом используется простой и понятный синтаксис:
DROP TABLE TOVAR
Оператор DROP TABLE дополнительно позволяет указывать, следует ли операцию удаления выполнять каскадом. Если в операторе указано ключевое слово RESTRICT, то при наличии в базе данных хотя бы одного объекта, существование которого зависит от удаляемой таблицы, выполнение оператора DROP TABLE будет отменено. Если указано ключевое слово CASCADE, автоматически удаляются и все прочие объекты базы данных, чье существование зависит от удаляемой таблицы, а также другие объекты, зависящие от удаляемых объектов. Общий эффект от выполнения оператора DROP TABLE с ключевым словом CASCADE может оказаться весьма ощутимым, поэтому подобные операторы следует использовать с максимальной осторожностью.
Дата добавления: 2015-11-18; просмотров: 1163;