§ - текст, набранный строчными буквами (например, CREATE TABLE) является обязательным
§ - текст, набранный прописными буквами и заключенный в угловые скобки (например, <имя_базы_данных>) обозначает переменную, вводимую пользователем
§ - в квадратные скобки (например, [NOT NULL]) заключается необязательная часть команды
§ - взаимоисключающие элементы команды разделяются вертикальной чертой (например, [UNIQUE | PRIMARY KEY]).
Операторы базы данных
Команда
Описание
CREATE DATABASE <имя_базы_данных>
Создание базы данных.
DROP DATABASE <имя_базы_данных>
Удаление базы данных.
Создание таблицы:
CREATE TABLE <имя_таблицы>
(<имя_столбца> <тип_столбца>
[NOT NULL]
[UNIQUE | PRIMARY KEY]
[REFERENCES <имя_мастер_таблицы> [<имя_столбца>]]
, ...)
Пользователь обязан указать имя таблицы и список столбцов. Для каждого столбца обязательно указываются его имя и тип (см. таблицу в предыдущем разделе), а также опционально могут быть указаны параметры
NOT NULL - в этом случае элементы столбца всегда должны иметь определенное значение (не NULL)
один из взаимоисключающих параметров UNIQUE - значение каждого элемента столбца должно быть уникальным или PRIMARY KEY - столбец является первичным ключом.
REFERNECES <имя_мастер_таблицы> [<имя_столбца>] - эта конструкция определяет, что данный столбец является внешним ключом и указывает на ключ какой мастер_таблицы он ссылается.
Контроль за выполнением указанных условий осуществляет СУБД.
Пример: создание базы данных institut:
CREATE DATABASE institut;
CREATE TABLE groups (id_group INT PRIMARY KEY,
Group_name VARCHAR(7));
CREATE TABLE students (id INT PRIMARY KEY,
FIO VARCHAR(50) NOT NULL,
God_rogdenia INT,
id_group INT REFERENCES groups(id_group));
CREATE TABLE oblast (id_oblast INT PRIMARY KEY,
Obl_name VARCHAR(200));
CREATE TABLE student_adres ( id_adres INT PRIMARY KEY,
Id_oblast INT REFERENCES oblast(id_oblast),
Gorod VARCHAR(255),
Adres VARCHAR(255));
CREATE TABLE predmets (id_predmet INT PRIMARY KEY,
CREATE [UNIQUE] INDEX <имя_индекса> ON <имя_таблицы> (<имя_столбца>,...)
Эта команда создает индекс с заданным именем для таблицы <имя_таблицы> по столбцам, входящим в список, указанный в скобках. Индекс часто представляет из себя структуру типа B-дерева, но могут использоваться и другие структуры. Создание индексов значительно ускоряет работу с таблицами. В случае указания необязательного параметра UNIQUE СУБД будет проверять каждое значение индекса на уникальность.
Очень часто встает вопрос, какие поля необходимо индексировать. Обязательно надо строить индексы для первичных ключей, поскольку по их значениям осуществляется доступ к данным при операциях соединения двух и более таблиц. Также в ответе на этот вопрос поможет анализ наиболее частых запросов к базе данных. Например, для БД institut можно ожидать, что одним из наиболее частых запросов будет выборка списка студентов по ФИО. Для минимизации времени этого запроса необходимо построить индекс для таблицы students по ФИО:
CREATE INDEX idx_fio ON students (FIO);
Создание индексов для первичных ключей:
CREATE INDEX idx_students ON authors (id);
CREATE INDEX idx_oblast ON oblast (id_oblast);
CREATE INDEX idx_adres ON student_adres (id_adres);
CREATE INDEX idx_ predmets ON predmets (id_ predmet);
CREATE INDEX idx_ exams ON exams (id_ exam);
Первоначальное определение структуры индексов производится разработчиком на стадии создания прикладной системы. В дальнейшем она уточняется администратором системы по результатам анализа ее работы, учета наиболее часто выполняющихся запросов и т.д.