Следует отметить, что в стандарте SQL1 содержится спецификация языка SQL, используемого для описания структуры базы данных, но не указывается способ создания базы данных, поскольку в различных СУБД применялись неодинаковые подходы к этому вопросу. Подобное положение дел наблюдается и сегодня. Методы создания баз данных, применяемые в ведущих реляционных СУБД, отчетливо иллюстрируют эти различия.
• В СУБД ORACLE база данных создается в ходе процесса установки программного обеспечения. Как правило, таблицы пользователя помещаются в единую общесистемную базу данных, имя которой определяется файлом конфигурации ORACLE. Эта база данных связана с данной конкретной копией серверного программного обеспечения
• В СУБД Microsoft SQL Server и Sybase Adaptive Server входит инструкция CREATE DATABASE, которая является частью языка определения данных. Сопутствующая ей инструкция DROP DATABASE удаляет существующие базы данных. Эти инструкции можно использовать как в интерактивном, так и в программном SQL. Имена создаваемых баз данных отслеживаются в специальной “главной” базе данных, которая связана с конкретной инсталлированной СУБД. В пределах текущего сервера SQL все имена должны быть уникальными. С помощью параметров инструкции CREATE DATABASE можно задать физическое устройство, на котором размещается база данных.
Инструкция CREATE TABLE, синтаксическая диаграмма которой изображена на рисунке 17, определяет новую таблицу и подготавливает ее к приему данных. Различные предложения инструкции задают элементы определения таблицы. Синтаксическая диаграмма инструкции кажется довольно громоздкой, поскольку требуется указать много элементов и параметров для них, однако на практике же создать таблицу относительно несложно.
Рисунок 17 Синтаксическая диаграмма инструкции
CREATE TABLE
После выполнения пользователем инструкции CREATE TABLE появляется новая таблица, которой присваивается имя, указанное в инструкции, и владельцем которой становитесь выполнивший её пользователь. Имя таблицы должно быть идентификатором, допустимым в SQL, и не должно конфликтовать с именами принадлежащих вам таблиц. Созданная таблица является пустой, но СУБД подготавливает ее к приему данных, которые записываются с помощью инструкции INSERT.
Столбцы новой таблицы задаются в инструкции CREATE TABLE. Определения столбцов представляют собой заключенный в скобки список, элементы которого отделены друг от друга запятыми. Порядок следования определений столбцов в списке соответствует расположению столбцов в таблице. Каждое такое “определение” содержит следующую информацию:
• имя столбца, которое используется для ссылки на столбец в инструкциях SQL. Каждый столбец в таблице должен иметь уникальное имя, но в разных таблицах имена столбцов могут совпадать.
• тип данных столбца, показывающий, данные какого вида хранятся в столбце. Типы данных были рассмотрены ранее. Для некоторых типов, например VARCHAR и FLOAT, требуется дополнительная информация, такая как размерность или число цифр после запятой. Эта информация заключается в скобки и должна следовать за ключевым словом, задающим тип данных.
• значение по умолчанию, которое заносится в столбец в том случае, если в инструкции INSERT для таблицы не указано значение данного столбца.
• указание на то, обязательно ли столбец должен содержать данные. Ограничение NOT NULL, если оно задано, предотвращает занесение в столбец значений NULL, в противном случае значения NULL допускаются.