2.5.4 Наиболее важные приказы языка определения данных

iDevice ikoon 2.5.4 Наиболее важные приказы языка определения данных

Команда создания таблицы (create table) позволяет создать таблицу, ее упрощенная форма следующая:

create table tname (colname coltype [not null], ...);

Используемые здесь обозначения:

tname - имя создаваемой таблицы;
colname - столбца;
coltype - тип данных столбца;
not null - если это добавлено, то столбец не может иметь пустое значение, и следует ввести данные в данный столбец!

Некоторые возможные типы данных перечислены в следующей таблице.

Тип

Значение

integer

32 битное целое число

smallint

16 битное целое число

float

64 битное число с плавающей запятой (12 значащих цифр)

smfloat

32 битное число с плавающей запятой (7 значащих цифр)

char(n)

String (текст) из n символов

varchar(n)

Строки переменной длины (n - максимальное число символов)

date

Дата (число дней после 31 декабря 1899 г.) (1 января 1900 - 1 день) (известна также как дата юлианского календаря)

Команда создания таблицы должна быть сопровождена именем таблицы и списком столбцов таблицы. Для каждого столбца нужно показать тип данных и указать, может ли или не может быть оставлен пустым соответствующий столбец (иметь null (нуль) - * значение).
В случае SQL Null value означает не значение «0» (нулевое значение, zero value), а пустое, без содержания поле! В языке программирования этому аналогичен пустой указатель, в обычной жизни - отсутствие значения.

Пример:

Create table tudengid (tkood integer not null, eesnimi char(10) not null, perenimi char(15) not null, synnipaev date);

Для очистки таблицы вместе со своей структурой и содержанием (для удаления) может быть использован приказ (команда):

drop table tname;

Где

tname - имя удаляемой таблицы

Пример:

Drop table tudengid;

Для изменения структуры таблицы можно использовать следующие приказы:

alter table tname modify ( colname coltype [not null], ...);
alter table tname add ( colname coltype [not null], ...);
alter table tname delete ( colname, ...);

где tname, colname, not null значения приведены выше (создание таблиц)

Первый приказ изменяет тип данных столбца / столбцов. Изменение типа данных всегда возможно, если таблица пуста, но это может оказаться невозможным, если в таблице есть данные. Возможно ли это или нет, зависит от «взаимозаменяемости» данных: например, всегда возможно преобразовать число в строку, а обратное возможно только тогда, когда строка (string) представляет число. Некоторые преобразования могут сопровождаться потерей данных: например, изменение строки в строку меньшей длины или изменение данных типа float в данные типа smfloat.

Вторая строка из приведенных выше команд позволяет добавить столбец / столбцы в таблицу: это может оказаться невозможным, если таблица содержит данные и добавляемый столбец не допускает пустых значений (некоторые версии SQL позволяют для добавления использовать так называемые «значения по умолчанию» для разрешения этой проблемы).

Третья строка команд позволяет очистить столбец (исключить, удалить): если этот столбец содержит данные, они также будут удалены.

Примеры:

Alter table tudengid add (pikkus smallint);

Alter table tudengid modify (pikkus float);

Alter table tudengid delete (pikkus);

Следующая команда используется для создания индекса:

create [unique] index idxname on tname (colname, ...);

где используются следующие обозначения

unique - если используется, то означает, что индекс является уникальным;
idxname - имя создаваемого индекса;
tname - имя таблицы;
colname - имя столбца.

Полезно знать, что невозможно создать уникальный индекс для таблицы, которая уже содержит данные, если данные не соответствуют уникальной сути индекса.

Примеры:

Create unique index tudengiid on tudengid (tkood);

Create index tudenginimi on tudengid (perenimi, eesnimi);

При помощи следующего приказа можно очистить индекс:

drop index idxname;

Где idxname - имя удаляемого индекса.

При очистке индекса не имеет значения, является ли индекс уникальным или нет. Возможности изменения индекса в языке нет: для изменения следует индекс удалить и создать снова. Очистка индекса не приведет к потере данных, но стоит знать, что очистка уникального индекса может создать ситуацию, когда добавление промежуточных данных может обусловить невозможность его воссоздания.

Пример:

drop index tudenginimi;

Задания
Создать таблицу koerad для хранения данных собак (код, имя собаки)
Добавить дату рождения собаки synniaeg в таблицу.
Добавить уникальный индекс для кода

Указания

CREATE TABLE koerad (kood INT, koeranimi VARCHAR(30));

ALTER TABLE koerad ADD synniaeg DATE;

CREATE UNIQUE INDEX koeraindeks ON koerad(kood)

SQL-92 (номер года) является обычно общим и везде действующим стандартом. Системы баз данных сделали множество усовершенствований дополнительных возможностей типов данных и команд, например, таких как создание первичного ключа и автоматическое создание кода. Но перевод составленных в одной среде сколько-нибудь сложных приказов в другую может оказаться довольно трудным.