Обмен технологиями

SQL-ограничения

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

SQL-ограничения

1. Описание

Концепция: Ограничения — это правила, которые действуют на поля таблицы и ограничивают данные, хранящиеся в таблице.

Цель: Обеспечить точность, достоверность и целостность данных в базе данных.

ограничениеописыватьКлючевые слова
ненулевое ограничениеОграничьте это поле, чтобы оно не было пустымне ноль
уникальное ограничениеУбедитесь, что все данные в этом поле уникальны и не повторяются.уникальный
ограничения первичного ключаПервичный ключ — это уникальный идентификатор строки данных, он должен быть непустым и уникальным.основной ключ
Ограничения по умолчаниюПри сохранении данных, если значение поля не указано, используется значение по умолчанию.по умолчанию
Проверить ограничения (после 8.0.16)Убедитесь, что поле соответствует определенному условиюпроверять
ограничения внешнего ключаИспользуется для установления связи между данными из двух таблиц.внешний ключ

2. Использование

Автоинкремент: auto_increment

MySQL

ALTER TABLE my_table MODIFY id INT AUTO_INCREMENT;
  • 1

SQLServer

-- 删除依赖于id列的约束
ALTER TABLE my_table DROP CONSTRAINT <constraint_name>;

-- 修改字段为自增
ALTER TABLE my_table ALTER COLUMN id INT IDENTITY(1,1);

-- 重新创建约束(如果有)
ALTER TABLE my_table ADD CONSTRAINT <constraint_name> PRIMARY KEY (id);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Добавление ограничений

-- 1、添加主键
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (主键字段名);
-- 例:ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);
-- 2、添加外键
alter table 表名 add constraint 外键名 foreign key (外键字段名) references 主表(主字段名);
-- 删除外键
alter table 表名 drop foreign key 外键名;
-- 3、添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 (需要约束的字段);
-- 4、添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT '默认值' FOR 字段名;
-- 5、检查约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (Age >= 18 检查的条件);
-- 6、非空约束
ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(255) NOT NULL;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Роль внешних ключей
Чтобы обеспечить целостность данных, поле внешнего ключа называется дочерней таблицей, а связанная таблица — родительской таблицей.
Удаление и обновление поведения

  • нет действия (по умолчанию): при удалении/обновлении соответствующей записи в родительской таблице, если запись имеет внешний ключ,Его невозможно обновить/удалить.
  • каскад: при удалении/обновлении соответствующей записи в родительской таблице, если запись имеет внешний ключ,Затем удалите/обновите записи в подтаблице.
  • установить ноль: при удалении/обновлении соответствующей записи в родительской таблице, если запись имеет внешний ключ,Затем установите для значения внешнего ключа в подтаблице значение null.
  • установить по умолчанию: при изменении родительской таблицы для столбца внешнего ключа, созданного в дочерней таблице, устанавливается значение по умолчанию (не поддерживается InnoDB).
# 指定行为
alter table 表名 add constraint 外键名 foreign key (外键字段) references 主表(主字段名) on update cascade on delete cascade;
  • 1
  • 2