📅  最后修改于: 2023-12-03 15:22:39.373000             🧑  作者: Mango
在数据库中,约束用于限制可以插入、更新或删除的数据的类型、范围和完整性。它们是确保数据完整性的重要组成部分。SQL(结构化查询语言)是与关系型数据库通信的语言。利用SQL约束,可以在插入、更新、或删除数据时指定一组限制条件,以确保数据完整性。本文将带您深入了解SQL约束,特别是列表中的SQL约束。
SQL约束是指在表中设定规则,以保证插入、更新或删除操作时,数据的完整性、正确性和一致性。以下是我们常见的约束:
Primary key约束表示表中该列不允许为空,也不允许有重复的值。在一个表中只能定义一个primary key约束。
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
Unique约束表示该列的每个值必须唯一,但允许该列有空值。
CREATE TABLE students (
id INT,
name VARCHAR(50) UNIQUE,
age INT
);
Foreign key约束用于建立两个表之间的联系。它指定了一个字段(或字段组),该字段包含一个值,该值必须在某个主键或一组主键中可用。
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(id)
);
Check约束是用于强制要求在插入或更新列时的值必须符合一个指定的条件。
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender CHAR(1),
CHECK (age >= 18 AND gender IN ('M', 'F'))
);
Not null约束是用于确保表中不能包含空值的列。
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender CHAR(1) NOT NULL
);
上面的约束通常在表的定义中定义。但是,还有几种单独的SQL约束,可以在表创建后添加或删除。这些约束分别是:
Default是用于指定有默认值的列。
ALTER TABLE students
ALTER COLUMN age SET DEFAULT 20;
Drop default用于删除有默认值的列。
ALTER TABLE students
ALTER COLUMN age DROP DEFAULT;
Add constraint是用于添加新的约束。
ALTER TABLE students
ADD CONSTRAINT chk_age CHECK (age >= 18);
Drop constraint是用于删除约束。
ALTER TABLE students
DROP CONSTRAINT chk_age;
SQL约束是确保数据完整性、正确性和一致性的重要组成部分。本文介绍了SQL中常见的约束类型,以及单独的SQL约束,希望可以帮助您更好地理解SQL约束并在数据库操作中有所帮助。