DDL Урок 1. Создание таблиц

SQL   2 июня 2013  Автор статьи:  

И, внезапно, продолжение уроков по SQL. Продолжим изучение языка с той его подчасти на которой закончили. DDL — Data Definition Language — это язык, который служит для описания структур данных в SQL сервере. Иными словами, если в первом цикле SQL мы занимались тем, что строили запросы к некоторой базе данных, которая пришла к нам из неоткуда или мы ее создали в каком — нить графическом редакторе, то теперь мы займемся тем, что будем создавать свою базу данных с помощью скриптов, а конкретно с помощью DDL. Почему мы не остановимся на графическом интерфейсе? Зачем делать что — то руками, если проще и удобней все сделать там? Оказывается графический интерфейс не всегда удобен, а также, когда вы программируете в нем, то могут возникнуть проблемы с переносом базы данных на другой сервер. Итак, выбор тру кодеров писать базу данных руками в чем нам и поможет DDL. Естественно первое, что мы хотим научиться сделать это создавать новые таблицы. Как было показано в предыдущем курсе для того, чтобы создать простенькую табличку достаточно воспользоваться упрощенным синтаксисом CREATE TABLE:

CREATE TABLE имя_таблица
( имя_столбца тип [NULL | NOT NULL])

Но так, как мы уже более менее понимаем зачем нужны базы данных и с чем их едят, то научимся на столбцы накладывать ограничения (Constraint)

PRIMARY KEY Constraints

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

  • Таблица может содержать только один первичный ключ
  • Первичный ключ должен быть всегда уникальным
  • Все столбцы, помеченные как первичный ключ не могут быть NULL

Покажем как навешивать ограничения на первичный ключ в коде:

CREATE TABLE Book
(
ID INT NOT NULL IDENTITY CONSTRAINT PK_Book PRIMARY KEY,
)

Как вы могли догадаться, CONSTRAINT — ключевое слово, PK_Employee — название ограничения, а PRIMARY KEY — это ключевые слова, которые показывают тип ограничения.
Кроме этого первичный ключ можно задавать не в объявлении самого поля, а внутри таблицы:

CREATE TABLE Category
(
ID INT NOT NULL IDENTITY,
CONSTRAINT PK_Category PRIMARY KEY (ID)
)

Если вам нужен составной Primary Key, то вы можете создать его так:

CREATE TABLE BookCategories
(
CategoryID INT NOT NULL,
BookID INT NOT NULL,
CONSTRAINT PK_BookCategories PRIMARY KEY (CategoryID, BookID)
)

Если ваш Primary Key одна строка то используете объявление в поле, а если составной, то используйте объявление в таблице.
Вопрос, который должен возникнуть у вас, а что означает IDENTITY? Данное свойство задает полю автоинкремент, таким образом первая запись будет иметь ID=1, следующая ID=2 и так далее, при этом нам не нужно самим явно задавать значения поля ID. Кроме этого, если вас не устраивает прирост на 1, начиная с 1, то вы можете задать свои параметры. IDENTITY(0,2) означает, что записи будут нумероваться с нуля четными числами. Использование уникального идентификатора ID при создании таблицы называется искусственным первичным ключом. Данный способ стоит применять в том случае, если у вас нет подходящего естественного ключа, т.е вы не можете составить ключ из нужных полей таблицы. Например, у вас есть таблица Student в которой есть только два поля FIO и Age, тогда

FOREIGN KEY Constraints

Внешний ключ задает связь поля с полем из некоторой таблицы.

  • Связь можно установить только с первичным ключом или столбцом, на который наложен уникальный индекс (UNIQUE)
  • Если полю с ограничением внешнего ключа задается значение отличное от NULL, то оно должно присутствовать в связанном столбце.
  • Ссылаться можно только на поля, которые находятся в той же базе на том же сервере, что и ваша таблица
  • Ограничение должно ссылаться на столько же столбцов в другой таблице, на скольких столбцах оно определено

Свяжем нашу таблицу BookCategories с таблицами Category и Book. Поле BookID свяжется с полем ID таблицы Book, а поле CategoryID будет ссылаться на ID в таблице Category.

UNIQUE Constraints

Ограничение на уникальность — это такое ограничение, что все значения в этом столбце должны быть уникальны, притом для каждого такого ограничения строится индекс.
Чтобы навесить уникальность на поле Name в таблице Employee можно использовать следующий код:

CREATE UNIQUE INDEX UI_Employee_Name ON Employee(Name)

Продолжим разговор о DDL в следующих уроках.

  • Роман Головач

    Великолепно

Научиться программировать

  • на Delphi

  • на Java

  • на C++