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 (номер года) является обычно общим и везде действующим стандартом. Системы баз данных сделали множество усовершенствований дополнительных возможностей типов данных и команд, например, таких как создание первичного ключа и автоматическое создание кода. Но перевод составленных в одной среде сколько-нибудь сложных приказов в другую может оказаться довольно трудным.