DEFAULT – более подробно мы поговорим о значениях по умолчанию в теме, посвящённой ограничениям. Значения по умолчанию подставляются в поля таблицы, для которых значение не было задано пользователем явно.
INDENTITY – значение – SQL Server – автоматически присваивает порядковый номер каждой добавляемоё строке. По умолчанию в качестве начального значения и приращения используется единица.. Базовый тип int или bigint.
SET IDENTITY_INSERT ON отключает процесс автоматического присваивания identity – значений.
NOT FOR REPLICATION – определяет, нужно ли при вставке строк в новую базу данных присваивать строке новое identity – значение или использовать существующее.
ROWGUIDCOL – данный параметр связан с репликацией. Используется для уникальной идентификации строки в таблице. Например,необходимо реплицировать строки из различных БД в одну общую базу данных. При использовании identifity – столбцов данных. При использовании identity – столбцов могут появляться строки с повторяющимися значениями в столбце.
GLOBALLY Unique Indentifier – глобально уникальный индентификатор, представляет собой 128 – битов значение и является уникальным во времени и в пространстве. Win 32 существует специальный API для генерации GUID программным путём. В SQL Server помимо опции ROWGUIDCOL для столбца, имеется особая функция для получения GUID – NFWID().
COLLATE – для отдельных столбцов определяется порядок сортировки, сравнения символов, чувствительности к регистру.
NULL|NOT – определяет, разрешено ли хранить в столбце NULL – значения.
ON – предназначен для указания группы файлов, а, следовательно, и физического устройства, где будет, размещаться таблица.
TEXTIMAGE_ON – параметр предназначен для разешения отдельной части таблицы в другой файловой группе. Используется, только если в таблице есть поля типов:
Text – большой объем текстовой информации
Ntext – текстовая информация в форматеUnicode
Image – цепочки двоичных данных.
Пример:
CREATE TABLE #USP
(UNUM INT CHECK IN (1, 2, 3, 4, 5) DEFAULT 2,
UDATE SMALLDATETIME,
SNUM INT NOT NULL,
PNUM INT NOT NULL,
UNIQUE (SNUM, PNUM) )
Ограничения – эффективное средство обеспечения целостности данных.
Ограничения представляют собой некоторые условия, налагаемые на столбцы, таблицы и так далее и гарантирующие, что ваша информация будет подчиняться определённым правилам целостности данных.
Типы ограничений:
Ограничения доменов – распределяются на один или несколько столбцов.
Ограничения логических объектов – касаются отдельных строк, не заботясь о столбеце в целом. К данному типу относятся ограничения первичного ключа и уникальности.
Ограничения ссылочной целостности – применяются в ситуациях, когда значения одного столбца должны быть каким-то образом связаны со значениями другого столбца. К данному типу относятся ограничения внешнего ключа.
Ограничения ключей:
Существует четыре общепринятых типа ключей:
Первичный
Внешний
Альтернативный
Инверсный
На первые три типа ключей могут налагаться ограничения в базе данных.
Инверсный ключ фактически представляет собой индекс, который не налагает на таблицу каких-либо ограничений, а вместо поддержки целостности применяется в качестве альтернативного способа сортировки.
Ограничения первичного ключа:
Первичный ключ представляет собой уникальный идентификатор строки.
Первичный ключ должен содержать уникальные значения ( и поэтому не может принимать NULL – Значение).
Создать первичный ключ можно при помощи команды CREATE TABLE либо команды ALTER TABLE.
Пример:
CREATE TABLE Customers
(customerNo int NOT NULL PRIMARY KEY,
CustomerName varhar (25) NOT NULL,
…
Phone char (15) NOT NULL)
Создание первичного ключа для существующей таблицы:
Alter Table Employees
ADD CONSTRAINT PK_EmployeeID
PRIMARY KEY (EmployeeID)
Ограничения внешнего ключа:
Ограничение внешнего ключа используются как для обеспечения целостности данных, так и для задания отношений между таблицами.
<имя_столбца><тип_данных>
<допустимсоть_NULL-значений>
FOREIGN KEY REFERENCES <имя_таблицы>
(<имя_столбца>)
[ON DELETE {CASCADE|NO ACTION}]
[ON UPDATE {CASCADE|NO ACTION}]
CREATE TABLE orderdetails (
OrderID int NOT NULL,
UnitPrice money Not NULL,
PartNo varchar(10) NOT NULL,
8000
…
CONSYRAINT PK_OrderDetails PRIMARY KEY (OrderID, PartNo),
CONSTRAINT FK_OrderDetails FOREIGN KEY (OrderID)
REFERENCES Orders (OrderID)
ON DELETE NO ACTION – по умолчанию
ON UPDATE CASCADE
Добавление внешнего ключа в существующую таблицу:
Первичный и внешний ключ может существовать для одного и того де поля.
В каждой таблице может присутствовать от 0 до 253 внешних ключей.
Единственное ограничивающее условие – данных столбец может иметь только один внешний ключ.
На один и тот же столбец может ссылаться неограниченное количество таблиц.
ALTER TABLE Orders
ADD CONSTRAINT FK_Employeeorders
FOREIGN KEY (EmployeeID) REFERENCES
Employees (EmployeeID)
Ограничения уникальности.
В таблице можно иметь более одного ограничения уникальности.
Создание ограничения уникальности для существующей таблицы:
ALTER TABLE Employees
ADD CONSTRAINT AK_EmployeeSSN
UNIQUE (SSN)
Выполнив запуск хранимой процедуры EXEC sp_helpconstraint <имя_таблицы>, можно получить сведения об именной таблицы.
Ограничения проверки.
ALTER TABLE Customers
ADD CONSTRAINT CN_CustomerPhone
CHECK (Phone
LIKE’ ([0-9] [0-9] [0-9]) [0-9] [0-9] [0-9] – [0-9] [0-9] [0-9] [0-9] [0-9]) ‘)
Ограничения стандартных значений (только INSERT).
Стандартные значения используются только в операторе INSERT - их нельзя применять к операторам UPDATE или DELETE.
Если в операторе INSERT присутствует значение для данного столбца, значения по умолчанию использованы не будут.
Если же для данного столбца значение в операторе INSERT не задано, система будет использовать стандартные значения.
CREATE TABLE Shippers (
ShipperID int NOT NULL PRIMARY KEY,
ShipperName varchar (25) NOT NELL,
…
Date smalldatetime NOT NULL DEFAULT
GETDATE()
)
- - функция GETDATE () возвращает текущую дату и время.
- - Например, 24. 06. 2008 17:44:52