Ограничения (constraints) в SQL — это инструменты, которые позволяют ограничить или задать правила для данных, хранящихся в таблицах баз данных. Эти ограничения могут быть применены к одному или нескольким столбцам в таблице и обеспечивают целостность данных и защиту от ошибок ввода.
Ограничения могут быть применены к одному или нескольким столбцам в таблице и могут определять условия, такие как NOT NULL (значение не может быть NULL), UNIQUE (значения должны быть уникальными), PRIMARY KEY (значения должны быть уникальными и не могут быть NULL), FOREIGN KEY (значения должны соответствовать значениям в другой таблице), CHECK (значения должны соответствовать определенному условию).
Ограничения SQL могут быть созданы при создании таблицы или добавлены в уже существующую таблицу. Они могут также быть изменены или удалены в любое время. Использование ограничений SQL является важным аспектом при работе с базами данных, так как они помогают гарантировать правильность и целостность данных.
Типы ограничений SQL
Существует несколько типов ограничений SQL, которые могут быть применены к столбцам в таблицах баз данных. Рассмотрим каждый тип ограничения подробнее:
NOT NULL
Ограничение NOT NULL в SQL определяет, что значение в столбце не может быть NULL. Если попытаться вставить NULL значение в столбец с ограничением NOT NULL, то будет выдана ошибка.
Синтаксис для создания ограничения NOT NULL при создании таблицы:
CREATE TABLE table_name ( column_name data_type NOT NULL, ... );
Пример создания ограничения NOT NULL при создании таблиц:
CREATE TABLE users ( id int PRIMARY KEY, name varchar(50) NOT NULL, email varchar(50) NOT NULL );
Пример создания ограничения NOT NULL к существующему столбцу:
ALTER TABLE users ALTER COLUMN name SET NOT NULL;
Чтобы изменить ограничение NOT NULL в уже существующей таблице, можно использовать оператор ALTER TABLE. Например, чтобы удалить ограничение NOT NULL на столбце name в таблице users:
ALTER TABLE users ALTER COLUMN name SET NULL;
PRIMARY KEY
Ограничение первичного ключа (PRIMARY KEY) в SQL определяет уникальный идентификатор для каждой строки в таблице. Значения в столбце PRIMARY KEY должны быть уникальными и не могут быть NULL.
Синтаксис для создания ограничения PRIMARY KEY при создании таблицы:
CREATE TABLE table_name ( column_name data_type PRIMARY KEY, ... );
Пример создания ограничения PRIMARY KEY при создании таблиц:
CREATE TABLE users ( id int PRIMARY KEY, name varchar(50), email varchar(50) );
Пример создания ограничения PRIMARY KEY к существующему столбцу
ALTER TABLE users ADD PRIMARY KEY (id);
Чтобы изменить ограничение PRIMARY KEY в уже существующей таблице, можно использовать оператор ALTER TABLE в сочетании с оператором MODIFY. Например, чтобы изменить столбец id в таблице users на PRIMARY KEY:
ALTER TABLE users MODIFY id int PRIMARY KEY;
UNIQUE
Ограничение уникальности (UNIQUE) в SQL определяет, что значения в столбце должны быть уникальными. Значения в столбце могут быть NULL, но не более одного NULL значения разрешено.
Синтаксис для создания ограничения UNIQUE при создании таблицы:
CREATE TABLE table_name ( column_name data_type UNIQUE, ... );
Пример создания ограничения UNIQUE при создании таблиц:
CREATE TABLE users ( id int PRIMARY KEY, name varchar(50), email varchar(50) UNIQUE );
Пример создания ограничения UNIQUE к существующему столбцу
ALTER TABLE users ADD CONSTRAINT email_unique_constraint UNIQUE (email);
Чтобы изменить ограничение UNIQUE в уже существующей таблице, можно использовать оператор ALTER TABLE в сочетании с оператором MODIFY. Например, чтобы удалить ограничение UNIQUE на столбце email в таблице users:
ALTER TABLE users MODIFY email varchar(50);
FOREIGN KEY
Ограничение внешнего ключа (FOREIGN KEY) в SQL определяет связь между двумя таблицами, где значения в столбце ссылки FOREIGN KEY соответствуют значениям в столбце PRIMARY KEY в другой таблице. Ограничение FOREIGN KEY помогает гарантировать целостность данных, обеспечивая, что ссылочные значения существуют в связанной таблице.
Синтаксис для создания ограничения FOREIGN KEY при создании таблицы:
CREATE TABLE table1 ( column1 data_type PRIMARY KEY, ... ); CREATE TABLE table2 ( column2 data_type, ... FOREIGN KEY (column2) REFERENCES table1(column1) );
Пример создания ограничения FOREIGN KEY при создании таблиц:
CREATE TABLE users ( id int PRIMARY KEY, name varchar(50), address_id int, FOREIGN KEY (address_id) REFERENCES addresses(id) ); CREATE TABLE addresses ( id int PRIMARY KEY, street varchar(50), city varchar(50), state varchar(50) );
Пример создания ограничения FOREIGN KEY к существующему столбцу
ALTER TABLE users ADD CONSTRAINT address_id_foreign_key_constraint FOREIGN KEY (address_id) REFERENCES addresses(id);
Чтобы изменить ограничение FOREIGN KEY в уже существующей таблице, можно использовать оператор ALTER TABLE в сочетании с оператором MODIFY. Например, чтобы удалить ограничение FOREIGN KEY на столбце address_id в таблице users:
ALTER TABLE users MODIFY address_id int;
CHECK
Ограничение CHECK в SQL определяет условие, которое должно быть выполнено для всех значений в столбце. Если значение не соответствует условию, то будет выдана ошибка.
Синтаксис для создания ограничения CHECK при создании таблицы:
CREATE TABLE table_name ( column_name data_type CHECK (condition), ... );
Пример создания ограничения CHECK при создании таблицы:
CREATE TABLE employees ( id int PRIMARY KEY, name varchar(50), salary decimal(10, 2) CHECK (salary > 0) );
Пример создания ограничения CHECK к существующему столбцу
ALTER TABLE employees ADD CONSTRAINT salary_constraint CHECK (salary > 0);
Это ограничение гарантирует, что значение в столбце salary всегда будет больше нуля.
Чтобы изменить ограничение CHECK в уже существующей таблице, можно использовать оператор ALTER TABLE в сочетании с оператором MODIFY. Например, чтобы изменить условие ограничения CHECK на столбце age в таблице users:
ALTER TABLE employees MODIFY salary decimal(10, 2) CHECK (salary >= 100.00);
DEFAULT
Ограничение DEFAULT в SQL позволяет установить значение по умолчанию для столбца в таблице базы данных. Если при вставке новой строки в таблицу не указано значение для столбца, то будет использоваться значение по умолчанию.
Синтаксис для создания ограничения DEFAULT при создании таблицы:
CREATE TABLE table_name ( column_name data_type DEFAULT default_value, ... );
Пример создания ограничения DEFAULT:
CREATE TABLE employees ( id int PRIMARY KEY, name varchar(50), salary decimal(10, 2) DEFAULT 5000.00 );
Пример создания ограничения DEFAULT к существующему столбцу
ALTER TABLE employees ALTER COLUMN salary SET DEFAULT 5000.00;
Это ограничение устанавливает значение по умолчанию для столбца salary в 5000.00, если при вставке новой строки в таблицу не указано значение для этого столбца.
Ограничение DEFAULT может быть применено к любому столбцу, за исключением столбцов с ограничением PRIMARY KEY и FOREIGN KEY.
Чтобы изменить ограничение DEFAULT в уже существующей таблице, можно использовать оператор ALTER TABLE в сочетании с оператором ALTER COLUMN. Например, чтобы изменить значение по умолчанию на столбце salary в таблице employees на 1000.00:
ALTER TABLE employees ALTER COLUMN salary SET DEFAULT 1000.00;
В целом, ограничения SQL помогают обеспечить целостность данных и защитить таблицы от ошибок ввода данных. Они представляют собой мощный инструмент для создания структурированных и надежных баз данных.