SQL Constraint: правила и ограничения в базе данных
SQL-ограничение (constraint) - это правило, которое определяет условия для сохранения целостности данных в базе данных. Оно гарантирует, что данные, удовлетворяющие определенным условиям, могут быть вставлены, обновлены или удалены из таблицы. SQL-ограничения могут быть определены на уровне столбцов или на уровне таблицы в целом.
Давайте рассмотрим несколько примеров SQL-ограничений и их кодов:
1. Ограничение уникальности (UNIQUE):
CREATE TABLE Users (
ID INT PRIMARY KEY,
Username VARCHAR(50) UNIQUE,
Email VARCHAR(100) UNIQUE
);
В этом примере мы создаем таблицу Users с двумя столбцами - Username и Email. Ограничение UNIQUE гарантирует, что значения в этих столбцах являются уникальными. Если мы попытаемся вставить пользователей с одинаковыми именами или электронными адресами, то система баз данных выдаст ошибку.
2. Ограничение NOT NULL:
CREATE TABLE Products (
ID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Price DECIMAL(10,2) NOT NULL
);
В этом примере мы создаем таблицу Products с двумя столбцами - Name и Price. Ограничение NOT NULL говорит о том, что значения в этих столбцах не могут быть пустыми. Если мы попытаемся вставить товары без указания имени или цены, то система баз данных вернет ошибку.
3. Ограничение внешнего ключа (FOREIGN KEY):
CREATE TABLE Orders (
ID INT PRIMARY KEY,
ProductID INT,
CustomerID INT,
FOREIGN KEY (ProductID) REFERENCES Products(ID),
FOREIGN KEY (CustomerID) REFERENCES Customers(ID)
);
В этом примере мы создаем таблицу Orders с тремя столбцами - ID, ProductID и CustomerID. Ограничение FOREIGN KEY связывает столбцы ProductID и CustomerID с таблицами Products и Customers соответственно. Оно гарантирует, что значения в этих столбцах ссылаются на существующие записи в соответствующих таблицах. Если мы попытаемся вставить заказы с недопустимыми значениями ProductID или CustomerID, то система баз данных выдаст ошибку.
4. Ограничение CHECK:
CREATE TABLE Employees (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Salary DECIMAL(10,2),
CONSTRAINT CK_Employees CHECK (Age >= 18 AND Salary >= 1000)
);
В этом примере мы создаем таблицу Employees с четырьмя столбцами - ID, Name, Age и Salary. Ограничение CHECK определяет условие (Age >= 18 AND Salary >= 1000), которое должно быть истинным для вставляемых записей. Если мы попытаемся вставить сотрудников младше 18 лет или с зарплатой меньше 1000, то система баз данных выдаст ошибку.
Все эти примеры демонстрируют различные типы SQL-ограничений и их использование. Ограничения позволяют нам определить правила для поддержания целостности данных в базе данных и обеспечивают более безопасное и надежное управление информацией.