Команды и инструкции языка SQL
Команды языка SQL записываются при помощи инструкций. Полный синтаксис команды, как правило, довольно сложный и может содержать десятки инструкций. Но это не значит, что каждый раз нужно использовать все инструкции и помнить их наизусть. Часть инструкций носят необязательный характер, то есть могут использоваться, а могут пропускаться, если в них нет необходимости. Такие инструкции в описании команды обычно записываются в квадратных скобках.
Рассмотрим команду, которая применяется при создании новой базы данных – CREATE DATABASE.
Ставить квадратные скобки при записи инструкции не нужно!!! Они просто означают, что данную инструкцию можно пропустить. Если же инструкция указана без квадратных скобок, то она является обязательной.
Синтаксис команды CREATE DATABASE
У этой команды очень простой синтаксис, показанный на рисунке выше.
Для создания базы данных, которая будет называться «priem», достаточно написать
CREATE DATABASE priem
;
Все остальные инструкции команды могут быть пропущены. Но все-таки у них тоже есть смысл и они могут использоваться.
- Инструкция IF NOT EXIST позволяет перед созданием базы данных проверить, существует ли уже база с таким именем. Если она существует, то ничего не произойдет. Если она не существует, то база будет создана согласно всем инструкциям. При пропуске инструкции IF NOT EXIST в случае существования базы возникнет ошибка.
- Инструкция CHARACTER SET устанавливает кодировку, которая будет использоваться для всей базы данных. Если она пропущена, то это не значит, что кодировка не используется. Просто выбирается некоторая кодировка по умолчанию.
- Инструкция COLLATE устанавливает порядок сортировки принятый для данной кодировки.
Полная команда создания базы данных может выглядеть, например так:
CREATE DATABASE priem
CHARACTER SET utf8 COLLATE utf8_general_ci;
Синтаксис команды CREATE TABLE
Создать схему данных – это значит создать таблицы, правильно их настроить и связать между собой. Только после того как пройден этот этап, можно заполнять таблицы конкретными данными. В языке SQL таблица создается при помощи команды CREATE TABLE.
- Инструкция TEMPORARY позволяет создавать таблицу временно.
- Инструкция IF NOT EXIST работает точно так же как и аналогичная инструкция команды CREATE DATABASE.
- Сам раздел, где указываются определения полей таблицы, является обязательным. Но для определения поля могут использоваться разные инструкции, не все из которых обязательны. Этот раздел имеет следующую структуру:
Рассмотрим более подробно структуру определения одного поля таблицы:
- type – обязательное определение типа поля. Поле может быть числовым, строковым, датой, логическим и т.д. Любая СУБД имеет стандартный набор типов полей.
- Инструкция NULL | NOT NULL разрешает или запрещает ставить в поле значение NULL (то есть оставлять поле пустым)
- Инструкция DEFAULT позволяет установить в поле значение по умолчанию, которое будет автоматически подставляться, если пользователь не введет другого значения.
- Инструкция AUTO_INCREMENT используется для полей целого типа, которые нужно автоматически при появлении следующей записи увеличивать на единицу.
- Инструкция PRIMARY KEY устанавливается, если данное поле входит в первичный ключ.
Рассмотри простой пример, содержащий только обязательные инструкции.
Для создания таблицы, которая будет хранить список специальностей в вузе нужно создать таблицу с именем specialnost
и двумя полями idspec
(числовой уникальный код специальности) и specname
(название специальности). При этом поле idspec
нужно объявить первичным ключом. Это можно выполнить следующей командой:
CREATE TABLE specialnost
( idspec
INT NOT NULL AUTO_INCREMENT, namespec
VARCHAR(50) NULL, PRIMARY KEY (idspec
));
В разделе определения внешних ключей находятся ссылки на поля других таблиц, которые обычно называются внешними ключами.
Внешние ключи
Раздел определение внешних ключей выглядит следующим образом:
Необязательные инструкции ON UPDATE и ON DELETE позволяют задать вид ограничения при попытке обновить или удалить связанную запись. Именно они обеспечивают поддержание целостности данных.
Рассмотрим задание из примера 3 с дополнительным условием. Каждая специальность относится к некоторому факультету. Факультеты хранятся в таблице facult
. Уникальный код факлутета задается полем idfacult
. При попытке удалить факультет, к которому привяазан список специальностей, должно возникнуть предупреждение.
CREATE TABLE IF NOT EXISTS specialnost
(
idspec
int(11) NOT NULL AUTO_INCREMENT,
namespec
varchar(50) DEFAULT NULL,
idfacult
int(11) DEFAULT NULL,
PRIMARY KEY (idspec
),
FOREIGN KEY (idfacult
) REFERENCES facult
(idfacult
) ON DELETE RESTRICT);