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

Следующий код добавляет значение по умолчанию ‘NY’ для поля region.

USE ClassNorthwind

/* Drop the constraint if it already exists */

IF OBJECT_ID('DF_Region') IS NOT NULL

ALTER TABLE Employees

DROP CONSTRAINT DF_Region

GO

/* Add the constraint */

ALTER TABLE Employees

ADD CONSTRAINT DF_Region DEFAULT 'NY' FOR Region

GO

Используйте процедуры sp_helpconstraint и sp_help для получения информации о значении по умолчанию.

Объявление ограничения CHECK

Следующий скрипт добавляет проверку любезности

USE ClassNorthwind

GO

/* Drop the constraint if it already exists */

IF EXISTS

(SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS 

where CONSTRAINT_NAME = 'CK_TitleOfCourtesy')

ALTER TABLE Employees

DROP CONSTRAINT CK_TitleOfCourtesy

GO

/* Now add the CK_TitleOfCourtesy constraint */

ALTER TABLE Employees WITH NOCHECK

ADD CONSTRAINT CK_TitleOfCourtesy

CHECK (TitleOfCourtesy IN ('Ms.','Mrs.','Mr.','Dr.'))

GO

Следующий скрипт добавляет ограничение на доту рождения:

USE ClassNorthwind

ALTER TABLE Employees

ADD CONSTRAINT CK_BirthDate

CHECK (BirthDate < GETDATE())

GO

Объявление ограничения первичного ключа

Первый скрипт, добавляющий первичный ключ к таблице Employees:

USE ClassNorthwind

SET NOCOUNT ON

GO

/* The Employees table */

IF EXISTS

(SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS

where CONSTRAINT_SCHEMA = 'dbo'

AND CONSTRAINT_NAME = 'PK_Employees'

AND CONSTRAINT_TYPE = 'PRIMARY KEY')

ALTER TABLE Employees

DROP CONSTRAINT PK_Employees

GO

ALTER TABLE Employees

ADD CONSTRAINT PK_Employees

PRIMARY KEY NONCLUSTERED (EmployeeID)

GO

/* Reset the NOCOUNT option */

SET NOCOUNT OFF

GO 

Ещё один скрипт, добавляющий первичный ключ к таблице Customers:

USE ClassNorthwind

ALTER TABLE Customers

ADD CONSTRAINT PK_Customers

PRIMARY KEY NONCLUSTERED (CustomerID)

GO

Выполните скрипт, написанный в файле PriKey2.SQL. Здесь создаются первичные ключи для таблиц, которые мы будем использовать в дальнейшем.

Объявление ограничения вторичного ключа

Скрипты объявления вторичного ключа находятся в файлах ForKey1.sql и ForKey2.sql.

Объявление значений по умолчанию и ролей

Создаём и связываем значение по умолчанию с колонкой в таблице:

USE ClassNorthwind

/* If the object already exists, drop it */

IF OBJECT_ID('DF_Country') IS NOT NULL

BEGIN

EXEC sp_unbindefault 'dbo.Suppliers.Country'

DROP DEFAULT DF_Country

END

GO

/* The default for copy_no will be zero */

CREATE DEFAULT DF_Country   AS 'Singapore'

GO

EXEC sp_bindefault DF_Country, 'dbo.Suppliers.Country'

GO

Этот скрипт добавляет значение по умолчанию 'Singapore' для поля Country. Выполните следующий скрипт, который добавляет новую строку в таблицу Suppliers. В этой строке не указано поле Country. После этого выполняется поиск всех строк, у которых поле Country равно 'Singapore' и мы видим в результате созданную строку, потому что поле Country нами не было указано при создании и было вставлено значение по умолчанию 'Singapore'.

USE ClassNorthwind

/* Добавление новой строки */

INSERT Suppliers (CompanyName) VALUES ('Karl')

GO

/* Поиск строк у которых поле Country равно 'Singapore' */

SELECT * FROM Suppliers

WHERE Country='Singapore'

GO

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

USE ClassNorthwind

-- If the rule already exists, unbind and drop it.

IF OBJECT_ID('R_PhotoPath') IS NOT NULL

BEGIN

EXEC sp_unbindrule 'dbo.Employees.PhotoPath'

DROP RULE R_PhotoPath

END

GO

-- Create and bind the Rule.

CREATE RULE R_PhotoPath

AS @PhotoPath LIKE 'http://accweb/emmployees/%'

GO

EXEC sp_bindrule R_PhotoPath, 'dbo.Employees.PhotoPath'

GO

Выполните следующий скрипт для проверки правила. Вы должны увидеть ошибку, потому что Интернет адрес введён неправильно - xemmployess, что несоотвутствует шаблону из за опечатки:

UPDATE Employees

SET PhotoPath='http://accweb/xemmployess/'

WHERE LastName='Fuller'

Планирование индексов

6.1 Введение в индексы

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