Для каждого поля создаваемой таблицы может быть определено значение по умолчанию, принимаемое, если в команде INSERTINTO не определено значение поля записи/ Для этого в определении поля указывается DEFAULT = значение.
Например:
ball float CHECK (ball >= 4) DEFAULT = 4;
Если параметр DEFAULTне указан, значение по умолчанию является NULL. Если при этом задано ограничение NOT NULL, то значение поля должно быть обязательно определено непосредственно или через DEFAULT.
3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
Индекс – это упорядоченный список содержимого столбцов или группы столбцов в таблице. Он служит для ускорения поиска данных в таблице. Т.к. записи в таблице в общем случае не упорядочены, то поиск записи по значению поля проводится последовательным просмотром. При длине таблицы в N записей это, в среднем, требует N/2 проверок. При наличии индекса, в среднем, требуется log 2N проверок.
Индекс также служит для быстрого нахождения записей, для которых значение поля находится в определённых пределах. Быстро отсортировать записи по совпадающему значению поля, извлечь записи из таблицы в отсортированных последовательностях и т.д. Будучи однажды созданным, индекс остаётся невидимым для пользователя. SQL сам решит, когда воспользоваться индексом и сделает это автоматически. Также автоматически выполнится обновление индекса при обновлении индексируемой таблицы.
Индекс может быть непосредственно создан командами CREATETABLE и ENTER TABLE. Формат этой команды имеет следующий вид:
CREATE [UNIQUE] INDEX имя_таблицы ON имя_таблицы (имя_столбца, … , имя_столбца );
Где:
UNIQUE – значение индекса должно быть уникальным в таблице. SQL отслеживает уникальность индекса и не позволяет изменить БД так, чтобы уникальность нарушилась. Такой индекс нельзя создать, если таблица содержит записи с повторяющимися значениями поля. Уникальные индексы следует создавать одновременно с созданием таблиц.
имя_индекса уникально в базе данных.
имя_таблицы – имя индексируемой таблицы
имя_столбца – это имя столбца таблицы по значению которого строится индекс. Если указано несколько столбцов, индексы упорядочиваются по значению первого столбца, при совпадении значения – второго и т.д.
Пример:
CREATE INDEX СтудфамON Студент (sname);
Т.к. возможны полные однофамильцы, индекс строится не уникальным. Необходимость поименования индекса в основном связана с возможностью и необходимостью его уничтожения. Уничтожение индекса осуществляется по команде
DROP INDEX имя_индекса;
Две таблицы находятся, как правило, в отношении один ко многим через значения связующих полей. Для приведённого примера такая связь между таблицами Студент и Оценка по значениям полей snum и osnum. При этом, связующее поле со стороны отношения один называется родительским ключом, а со стороны многие – внешним ключом. SQL автоматически поддерживает отношения ссылочной целостности при внесении данных, если для таблицы определён внешний ключ. Это можно сделать в виде ограничения на столбец, являющийся внешним ключом в следующем формате:
REFERENCES родительская_таблица (столбец);
А можно сделать и в виде ограничения на таблицу:
FOREIGNKEY (список_стобцов_внеш_ключа) REFERENS родительская_таблица [(список_столбцов)];
В обоих случаях могут не указываться столбцы ключа родительской таблицы, если они определены параметром PRIMARYKEY. Типы столбцов в ключах обеих таблиц должны соответствовать друг другу.
Пример:
CREATE TABLE оценка (opnum char (3) NOT NULL REFERENS преподаватель(pnum), osnum char (3) NOT NULL REFERENS студент(snum), …
Пример (для таблицы Студент):
CREATE TABLE студент (snum char (3) PRIMARY KEY, sname char (30) NOT NULL, sgrp char (3), FOREIGN KEY (spdp) REFERENCE преподаватель(pnum));
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.