Методы разработки запросов. Язык 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.