Введение в программирование SQL Server. Создание и управление базой данных. Инструменты целостности данных, страница 18

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

CREATE TABLE Customer

(CustID uniqueidentifier NOT NULL DEFAULT NEWID(),

CastName varchar (30) NOT NULL)

Генерирование скрипта

Когда вы создаёте объекты в базе данных, очень важно сохранять все объявления объектов в скриптовом файле.

Вы можете использовать SQL Server Enterprise Manager для документирования существующей структуры базы (схемы) данных с помощью генерирования одного или нескольких Transact-SQL скриптов. Эти скрипты содержат описание операторов, использованных для создания базы данных и объектов.

Схема сгенерированная как скрипт Transact-SQL может использоваться для:

*  Обеспечение резервирования, что позволит пользователю пересоздать все объекты;

*  Создать или обновить скрипт разработчика базы данных;

*  Создать тестовое окружение разработчика из существующей схемы;

*  Тренировать новых работников.

Вы можете генерировать:

*  Содержимое базы данных в один скрипт файл;

*  Только схему таблиц для одной, нескольких или всех таблиц в базе данных в один или несколько файлов.

*  Схему таблиц или индексов в один или более файлов, встроенные процедуры в другой файл, значения по умолчанию и роли в отдельный файл.

4.4 Рекомендуемая практика

Следующая рекомендуемая практика поможет вам создать типы данных и таблицы:

*  Указывайте соответствующие типы данных и размер;

*  Когда пишите оператор CREATE TABLE, сразу же указывайте характеристики колонок;

*  После создания базы данных и объектов генерируйте скрипт, который позволит вам легко воссоздать базу данных и её объекты.

4.5 Лабораторная

Создания типов данных определённых пользователем

Следующий пример проверяет на наличие в базе данных ClassNorthwind типа postalcode. Если он существует, то удаляется и создаётся заново:

USE ClassNorthwind

IF EXISTS (SELECT domain_name FROM information_schema.domains

WHERE domain_schema = 'dbo' AND domain_name = 'postalcode')

EXEC  sp_droptype  postalcode

GO

EXEC  sp_addtype  postalcode, 'nvarchar(10)' , NULL

GO

В следующем примере происходит проверка типов:

USE ClassNorthwind

SELECT domain_name

FROM information_schema.domains

ORDER BY domain_name

GO

Результат выполнения этого кода:

domain_name                                                                                                                     

--------------------------------------------------------------------------postalcode

Создайте ещё следующие типы, которые нам пригодятся при создании таблицы:

USE ClassNorthwind

IF EXISTS (SELECT domain_name FROM information_schema.domains

WHERE domain_schema = 'dbo' AND domain_name = 'city')

EXEC  sp_droptype  city

IF EXISTS (SELECT domain_name FROM information_schema.domains

WHERE domain_schema = 'dbo' AND domain_name = 'region')

EXEC  sp_droptype  region

IF EXISTS (SELECT domain_name FROM information_schema.domains

WHERE domain_schema = 'dbo' AND domain_name = 'country')

EXEC  sp_droptype  country

GO

EXEC  sp_addtype  city, 'nvarchar(15)', NULL

EXEC  sp_addtype  region, 'nvarchar(15)', NULL

EXEC  sp_addtype  country, 'nvarchar(15)', NULL

GO

/* Display results */

SELECT domain_name

FROM information_schema.domains

ORDER BY domain_name

GO

Создания таблицы

Для создания таблицы воспользуемся следующим скриптом:

USE ClassNorthwind

IF OBJECT_ID('dbo.Employees') IS NOT NULL

DROP TABLE dbo.Employees

GO

CREATE TABLE dbo.Employees (

EmployeeID int IDENTITY (1, 1) NOT NULL ,

LastName nvarchar (20) NOT NULL ,

FirstName nvarchar (10) NOT NULL ,

Title nvarchar (30) NULL ,

TitleOfCourtesy nvarchar (25) NULL ,

BirthDate datetime NULL ,

HireDate datetime NULL ,

Address nvarchar (60) NULL ,

City city ,

Region region ,

PostalCode postalcode ,

Country country ,

HomePhone nvarchar (24) NULL ,

Extension nvarchar (4) NULL ,

Photo image NULL ,

Notes ntext NULL ,

ReportsTo int NULL ,