Создание объектов
Объекты базы данных создаются программным путем с помощью оператора CREATE. Точный синтаксис оператора CREATE различен для каждого объекта, однако объекты, которые вы можете создавать, а также базовый синтаксис оператора CREATE для каждого объекта, вы можете найти в таблице 22.1.
CREATE DATABASE <имя> | Создает базу данных |
CREATE DEFAULT <имя> AS < выражение_константы > | Создает значение по умолчанию |
CREATE FUNCTION <имя> RETURNS <возвращаемое_значение> AS <операторы_tsql> | Создает пользовательскую функцию (См. урок 30, "Пользовательские функции") |
CREATE INDEX <имя> ON <таблица_или_представление> (<индексируемые_столбцы>) | Создает индекс в таблице или представление |
CREATE PROCEDURE <имя> AS < операторы_tsql> | Создает хранимую процедуру (См. урок 28, "Хранимые процедуры") |
CREATE RULE <имя> AS <условное_выражение> | Создает роль базы данных |
CREATE SCHEMA AUTHORIZATION <владелец> <определения_объектов> | Создает таблицы, представления и разрешения как один объект |
CREATE STATISTICS <имя> ON < таблица_или_представление> (<столбцы>) | Создает статистические данные, используемые оптимизатором запросов |
CREATE TABLE <имя> (<определение_таблицы>) | Создает таблицу |
CREATE TRIGGER <имя> {FOR | AFTER | INSTEAD OF} < действие_dml> AS <операторы_tsql> | Создает триггер (См. уроку 29, "Триггеры") |
CREATE VIEW <имя> AS < оператор_выборки> | Создает представление |
Из операторов CREATE, рассмотренных в таблице 22.1, только оператор CREATE TABLE является достаточно сложным. Это вызвано тем, что определение таблицы составляет несколько различных элементов. Вы должны определить столбцы, а каждый столбец должен иметь имя и тип данных. Вы можете задать для столбцов возможность использования нулевых (NULL) значений идентификационной строке или в GUID, значение по умолчанию, любые ограничения, применимые к столбцу, а также несколько других свойств, которые мы не будем здесь рассматривать. Упрощенная версия синтаксиса, для определения столбцов имеет следующий вид:
<имя_столбца> <тип_данных> [NULL | NOT NULL] [ [DEFAULT <значение_по_умолчанию>] | [IDENTITY [(начальное_значение>, <шаг_увеличения>)[NOT FOR REPLLCATION]]]] [ROWGUIDCOL] [<ограничение_для_столбца>[, <ограничение_для_столбца>...]]
Учтите, что указывание значений по умолчанию и спецификации идентичности является взаимоисключающим. Так, вы можете задавать значения по умолчанию для столбца или для идентификационного столбца, но никак не для обоих.
Описание для <ограничение_для_столбца> представлено ниже:
[CONSTRAINT <имя_ограничения] [ [PRIMARY KEY | UNIQUE] [CLUSTERED | NONCLUSTERED] | [[FOREIGN KEY] REFERENCES <ссылочная_таблица> (имя_столбца)] | [CHECK [NOT FOR REPLICATION] (<логическое выражение>)] ]
Вы можете задавать более одного выражения <ограничение_для_столбца> для столбца, но при этом вы должны задать тип каждого ограничения (PRIMARY KEY/UNIQUE, FOREIGN KEY или CHECK).
Все это выглядят несколько пугающе, но если вы начнете с основных определений (например, MyColumn varchar 20) и будете просто добавлять необходимые фразы, то увидите, что все не так уж сложно. Как и в приведенных ниже примерах, вам почти никогда не придется использовать более двух или трех фраз в одном определении столбца:
MyColumn varchar(20) MyColumn varchar(20) NOT NULL MyColumn varchar(20) PRIMARY KEY CLUSTERED MyColumn varchar(20) IDENTITY (1, 1) PRIMARY KEY CLUSTERED MyColumn varchar(20) NOT NULL FOREIGN KEY REFERENCES Oils (OilName)
увеличить изображение
увеличить изображение
Совет. Если окно Query (Запрос) отобразит сообщение о том, что объект с именем "SimpleTable" уже существует, то вам не следует щелкать на Object Browser перед нажатием клавиши F5.
Создайте таблицу с ограничением внешнего ключа.
- В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно) для очистки содержимого панели редактирования Editor Pane.
- В панели редактирования введите следующий оператор:
CREATE TABLE RelatedTable ( RelatedID smallint IDENTITY (1,1) PRIMARY KEY CLUSTERED, SimpleID smallint REFERENCES SimpleTable (SimpleID), RelatedDescription varchar(20) )
- Чтобы выполнить оператор, в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос). Query Analyzer создаст таблицу.
- Чтобы выбрать Object Browser, щелкните на любом месте в его панели.
- Нажмите клавишу F5, чтобы обновить содержимое экрана. Object Browser отобразит в папке User Tables новую таблицу RelatedTable.
увеличить изображение
Создайте представление
- В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно) для очистки содержимого панели редактирования Editor Pane.
- В панели редактирования введите следующий оператор:
CREATE VIEW SimpleView AS
SELECT RelatedID, SimpleDescription, RelatedDescription FROM RelatedTable INNER JOIN SimpleTable ON RelatedTable.SimpleID = SimpleTable.SimpleID
- Для выполнения оператора, в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос). Query Analyzer создаст представление.
- В Object Browser раскройте папку View для базы данных Aromatherapy. (Если папка View уже раскрыта, щелкните на любом месте в панели Object Browser для ее выбора.)
увеличить изображение - Нажмите клавишу F5, чтобы обновить содержимое экрана. Object Browser отобразит в папке View новое представление SimpleView.
увеличить изображение
Создайте индекс
- В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно) для очистки содержимого панели редактирования Editor Pane.
- В панели редактирования введите следующий оператор:
CREATE INDEX SimpleIndex ON SimpleTable (SimpleDescription)
- Для выполнения оператора в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос). Query Analyzer создаст индекс.
- В таблице SimpleTable раскройте папку Indexes и убедитесь, что индекс SimpleIndex добавлен.
увеличить изображение