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.
Пример
StudentID INT NOT NULL,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50),
Age INT
);
2. UNIQUE
Гарантирует, что все значения в столбце уникальны.
Пример
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.
Пример
OrderID INT NOT NULL PRIMARY KEY,
OrderNumber INT NOT NULL,
OrderDate DATE NOT NULL
);
4. FOREIGN KEY
Гарантирует, что значения в одной таблице соответствуют значениям в другой таблице, тем самым устанавливая связь между двумя таблицами.
Пример
OrderID INT NOT NULL PRIMARY KEY,
OrderNumber INT NOT NULL,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
5. CHECK
Гарантирует, что значения в столбце удовлетворяют определённым условиям.
Пример
ProductID INT NOT NULL PRIMARY KEY,
ProductName VARCHAR(100) NOT NULL,
Price DECIMAL(10, 2) CHECK (Цена >= 0)
);
6. DEFAULT
Задает значение по умолчанию для столбца.
Пример
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);
Комплексный пример
Пример
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()
);
С помощью этих ограничений система управления базами данных может обеспечивать согласованность, целостность и точность данных.
В следующих разделах мы подробно объясним каждое ограничение.
Другие расширения