Полное руководство по созданию ограничений в SQL Server

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

Методы создания ограничений:

  1. Синтаксис создания таблиц:
    Один из наиболее распространенных методов создания ограничений — их определение во время создания таблицы. Вот пример:
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    CONSTRAINT CHK_Salary CHECK (Salary > 0)
);
  1. Инструкция ALTER TABLE:
    Ограничения также можно добавить к существующей таблице с помощью инструкции ALTER TABLE. Вот пример:
ALTER TABLE Employees
ADD CONSTRAINT FK_Department
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID);
  1. Ограничение UNIQUE.
    Ограничение UNIQUE гарантирует, что все значения в столбце уникальны. Вот пример:
ALTER TABLE Employees
ADD CONSTRAINT UQ_Email UNIQUE (Email);
  1. Ограничение CHECK:
    Ограничение CHECK ограничивает значения, которые можно вставлять или обновлять в столбце. Вот пример:
ALTER TABLE Employees
ADD CONSTRAINT CHK_Age CHECK (Age >= 18);
  1. Ограничение DEFAULT:
    Ограничение DEFAULT присваивает столбцу значение по умолчанию, если во время операции INSERT не указано значение. Вот пример:
ALTER TABLE Employees
ADD CONSTRAINT DF_Salary DEFAULT 5000 FOR Salary;
  1. Ограничение PRIMARY KEY:
    Ограничение PRIMARY KEY уникально идентифицирует каждую строку в таблице. Вот пример:
ALTER TABLE Employees
ADD CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID);
  1. Ограничение FOREIGN KEY:
    Ограничение FOREIGN KEY устанавливает связь между двумя таблицами на основе первичного и внешнего ключей. Вот пример:
ALTER TABLE Orders
ADD CONSTRAINT FK_Customers
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);