Методы разработки запросов. Язык DDL

Запрос (query) – это средство выбора необходимой информации из базы данных. Вопрос, сформированный по отношению к базе данных, и есть запрос. Применяются два типа запросов: по образцу (QBE – Запрос by example) и структурированный язык запросов (SQL – Structured Запрос Language).

SQL – запросы – это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора. Все запросы Access строит на основе SQL – запросов, чтобы посмотреть их, необходимо в активном окне проектирования запроса выполнить команду Вид/SQL.

Он поддерживается практически всеми современными базами данных. SQL подразделятся на два подмножества команд: DDL (Data Definition Language - язык определения данных) и DML (Data Manipulation Language - язык обработки данных). Команды DDL используются для создания новых баз данных, таблиц и столбцов, а команды DML - для чтения, записи, сортировки, фильтрования, удаления данных.

Рассмотрим команды создания базы данных и таблиц.

Для создания базы данных служит команда

CREATE DATABASE имя_БД

Для активизации базы данных служит команда

USE имя_БД

Выполняйте эту команду при каждом входе в Query Analyzer, поскольку по умолчанию в качестве активной установлена БД master.

Для создания таблиц используется команда CREATE TABLE. Краткий формат этой команды (квадратные скобки означают необязательные элементы):

CREATE TABLE имя_таблицы(

Список_описаний_полей,

[Список_ограничений_таблицы]);

Описание поля имеет формат:

Имя_поля тип_поля[(размер)]

[NULL] [NOT NULL]

[PRIMARY KEY]

[UNIQUE]

[IDENTITY]

[DEFAULT умолчание]

[CHECK (условие)]

[REFERENCES имя_таблицы(имя_поля)]

Чаще всего используются типы полей:

VARCHAR - строковый тип переменной длины;

NUMERIC - числовой тип;

DATETIME - тип дата/время.

NULL - специальное "неопределенное" значение, предусмотренное стандартом SQL. Ограничение NULL/NOT NULL служит для указания, что данный тип поля допускает/запрещает ввод NULL-значений.

PRIMARY KEY - ограничение, указывающее, что в данной таблице данное поле представляет собой первичный ключ (составной первичный ключ таким образом объявлять нельзя!) При использовании этого огpаничения создается первичный индекс.

UNIQUE - ограничение, указывающее, что в данном поле могут храниться только уникальные значения. При использовании этого ограничения создается уникальный индекс.

IDENTITY начальное_значение, приращение - ограничение, указывающее, что данное поле представляет собой счетчик, т.е, значения в данное поле вставляются автоматически с нарастанием при вставке строки. Если "начальное_значение" и "приращение" пропущены, они полагаются равными 1.

DEFAULT умолчание - очевидно, значение по умолчанию, т.е., значение, которое присваивается данному полю, если при вставке новой строки этому полю не было явно присвоено некоторое значение.

CHECK (условие)- условие на поле, которое будет проверяться при вводе новых строк.

REFERENCES имя_таблицы(имя_поля) - ограничения декларативной ссылочной целостности.

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

Ограничения уровня таблицы определяются после списка описаний полей. Каждое из них содержит ключевое слово CONSTRAINT и уникальное имя. Ограничение CHECK уровня таблицы может быть определено.

Ограничение внешнего ключа определяется так:

CONSTRAINT имя_ограничения FOREIGN KEY (список_полей)

REFERENCES родительская_таблица(внешний ключ)

В том случае, когда первичный ключ состоит из нескольких полей, его нужно создавать как ограничение уровня таблицы:

CONSTRAINT имя_ограничения PRIMARY KEY (список_полей)

В том случае, если вы поместили несколько команд в один SQL-файл, они выполняются подряд как единый пакет. Если при выполнении какой-то команды произошла ошибка, остальные команды выполняться не будут. Для того, чтобы рассматривать каждую команду как отдельный пакет, нужно после каждой команды выполнять команду GO.