SQL ограничения


SQL Ограничения

Ограничения SQL используются для задания правил для данных в таблицах.

Если какое-либо действие с данными нарушает ограничения, это действие будет прервано ограничением.

Ограничения можно указать при создании таблицы (с помощью инструкции CREATE TABLE) или после создания таблицы (с помощью инструкции ALTER TABLE).

Синтаксис SQL CREATE TABLE + CONSTRAINT

CREATE TABLE table_name
(
    column_name1 data_type(size) constraint_name,
    column_name2 data_type(size) constraint_name,
    column_name3 data_type(size) constraint_name,
    ....
);

В SQL есть следующие ограничения:

  • NOT NULL— указывает, что столбец не может хранить значения NULL.
  • UNIQUE— гарантирует, что каждое значение в столбце должно быть уникальным.
  • PRIMARY KEY— комбинация NOT NULL и UNIQUE. Гарантирует, что столбец (или комбинация двух или более столбцов) имеет уникальный идентификатор, что помогает быстрее и проще находить конкретную запись в таблице.
  • FOREIGN KEY— обеспечивает ссылочную целостность, заставляя данные в одной таблице соответствовать значениям в другой таблице.
  • CHECK— гарантирует, что значения в столбце соответствуют заданным условиям.
  • DEFAULT— задаёт значение по умолчанию, когда столбцу не присвоено значение.
  • INDEX— используется для быстрого доступа к данным в таблицах базы данных.

1. NOT NULL

Гарантирует, что столбец не может иметь значения NULL.

Пример

CREATE TABLE Students (
    StudentID INT NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    Age INT
);

2. UNIQUE

Гарантирует, что все значения в столбце уникальны.

Пример

CREATE TABLE Employees (
    EmployeeID INT NOT NULL UNIQUE,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    Email VARCHAR(100) UNIQUE
);

3. PRIMARY KEY

Уникально идентифицирует каждую запись строки в таблице. Ограничение PRIMARY KEY — это комбинация NOT NULL и UNIQUE.

Пример

CREATE TABLE Orders (
    OrderID INT NOT NULL PRIMARY KEY,
    OrderNumber INT NOT NULL,
    OrderDate DATE NOT NULL
);

4. FOREIGN KEY

Гарантирует, что значения в одной таблице соответствуют значениям в другой таблице, тем самым устанавливая связь между двумя таблицами.

Пример

CREATE TABLE Orders (
    OrderID INT NOT NULL PRIMARY KEY,
    OrderNumber INT NOT NULL,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

5. CHECK

Гарантирует, что значения в столбце удовлетворяют определённым условиям.

Пример

CREATE TABLE Products (
    ProductID INT NOT NULL PRIMARY KEY,
    ProductName VARCHAR(100) NOT NULL,
    Price DECIMAL(10, 2) CHECK (Цена >= 0)
);

6. DEFAULT

Задает значение по умолчанию для столбца.

Пример

CREATE TABLE Customers (
    CustomerID INT NOT NULL PRIMARY KEY,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    JoinDate DATE DEFAULT GETDATE()
);

7. INDEX

Используется для быстрого доступа к данным в таблицах базы данных.

CREATE INDEX idx_lastname ON Employees (LastName);

Комплексный пример

Пример

CREATE TABLE Students (
    StudentID INT NOT NULL PRIMARY KEY,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50) NOT NULL,
    Age INT CHECK (Age >= 18),
    Email VARCHAR(100) UNIQUE,
    EnrollmentDate DATE DEFAULT GETDATE()
);

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

В следующих разделах мы подробно объясним каждое ограничение.

Другие расширения