В SQL ограничения (constraints) – это правила и условия, которые применяются к данным в таблицах базы данных для обеспечения целостности данных и соблюдения бизнес-правил. Ограничения задаются на уровне определения структуры таблицы и могут автоматически проверяться СУБД при вставке, обновлении или удалении данных. Ограничения используются для обеспечения точности, надежности и целостности данных. Вот некоторые распространенные типы ограничений в SQL:
- Ограничение PRIMARY KEY:
- Уникальное ограничение, которое обеспечивает уникальность значений в столбце или группе столбцов и идентифицирует уникальную запись в таблице.
- Гарантирует, что в столбце (или столбцах), определенном как PRIMARY KEY, нет повторяющихся значений.
- Обеспечивает быстрый доступ к записям с помощью PRIMARY KEY.
Пример:
sql
CREATE TABLE students ( student_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50) );
- Ограничение FOREIGN KEY:
- Связывает значения в одной таблице (дочерней) с значениями в другой таблице (родительской) и обеспечивает целостность ссылок между таблицами.
- Гарантирует, что значения в столбце дочерней таблицы ссылаются на существующие значения в родительской таблице.
- Обеспечивает соблюдение бизнес-правил и связей между данными.
Пример:
sql
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
- Ограничение UNIQUE:
- Гарантирует уникальность значений в столбце или группе столбцов, но не используется для идентификации записей как PRIMARY KEY.
- Позволяет хранить значения, которые должны быть уникальными, но не обязательно идентифицировать записи.
Пример:
sql
CREATE TABLE employees ( employee_id INT UNIQUE, first_name VARCHAR(50), last_name VARCHAR(50) );
- Ограничение CHECK:
- Определяет условия, которые значения в столбце должны удовлетворять.
- Позволяет задавать пользовательские бизнес-правила для данных в таблице.
Пример:
sql
CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(100), unit_price DECIMAL(10, 2), quantity INT, CHECK (unit_price > 0 AND quantity >= 0) );
Эти ограничения помогают обеспечивать целостность данных и соблюдать бизнес-правила, что является важной частью проектирования баз данных.