Создание объектов
Объекты базы данных создаются программным путем с помощью оператора 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)
![](image/22-04sm.jpg)
увеличить изображение
![](image/22-05sm.jpg)
увеличить изображение
Совет. Если окно 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 добавлен.
увеличить изображение