Ограничения в sql (constraints)

Ограничения в sql (constraints)

Ограничения (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 помогают обеспечить целостность данных и защитить таблицы от ошибок ввода данных. Они представляют собой мощный инструмент для создания структурированных и надежных баз данных.

Техноблог
Добавить комментарий