1.约束是什么?
在使用约束之前,我们得知道约束是什么。
约束是SQL中用于确保数据库中数据的一致性和完整性的规则。
当我们对数据库插入(更新)数据时,插入(更新后)的数据必须严格遵守规则,否则无法插入(更新)数据。
2.SQL 约束
SQL 中的约束有一下几种:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
2.1 NOT NULL
NOT NULL 约束的目的是强制规定表中的某一列不能包含 NULL 值。这就意味着,在插入新纪录或更新已存在的记录时,必须提供一个具体的、非空的值,否则无法插入或更新记录。我们经常能够接触到受NOT NUL 约束的数据,例如:学生的学号、姓名等重要的信息。
2.1.1 添加 NOT NULL 约束
在定义字段的后面加上 NOT NULL:
注意:若想在已存在的表中添加 NOT NULL 约束,为了防止表中已经存在 NULL 值,可以先把 NULL 值更新为具体的值,再使用 ALTER TABLE table_name ALTER COLUMN colmn_name type NOT NULL; 添加 NOT NULL 约束。
2.1.2 删除 NOT NULL 约束
使用 ALTER TABLE table_name
MODIFY column_name type NULL;
2.1.3小结
NOT NULL 可以约束一些字段不能为 NULL 值,在记录一些重要信息时可以防止值为NULL,提高了数据存储的严谨性,以至于不会出现重要字段出现 NULL 值得尴尬情况。
2.2 UNIQUE
UNIQUE 约束的目的确保表中的一列或多列的值具有唯一性(唯一标识)。这就意味着,在表中插入新记录时,新的值不能与字段中任何值相同,并且在插入之后便不能再插入相同的值;更新表的记录时,更新后的值也不能与字段中任何值相同,否则无法更新。例如:学生的学号就是具有唯一性。
2.2.1 添加 UNIQUE 约束
在建表时添加 UNIQUE 约束
在定义字段的后面加上 UNIQUE 约束:
在所有字段后面添加 UNIQUE 约束:
在已经存在的表中添加 UNIQUE 约束
使用 ALTER TABLE:
2.2.2 删除 UNIQUE 约束
2.2.3小结
UNIQUE 标识唯一键,保证了数据在字段中的唯一性,在生活中有很多例子与UNIQUE约束一样,不允许出现重复值,为我们提供了便利。在表中使用UNIQUE约束能够帮助我们更好的存储、查询、更新数据。
注意:设置了 UNIQUE 约束的字段可以作为其他表的外键实现两个表的关联,另一个表添加外键的字段将会依赖于该字段。
2.3 PRIMARY KEY (主键)
PRIMARY KEY (主键) 用于唯一标识表中每一行记录的一个字段或字段组合。受主键约束的字段中必须包含唯一值并且不能包含 NULL 值。同时,主键可用于表连接,作为外键存在与其他表中。
注意:每个表都应该有一个主键,并且只能有一个主键。
2.3.1 添加主键
在建表时添加主键:
定义字段后面添加主键:
在定义完字段后添加主键:
在已经存在的表中添加主键:
使用 ALTER TABLE 添加主键:
注意:在已经存在的表中添加主键时,被主键约束的字段必须有 NOT NULL 和 UNIQUE 约束,否则无法添加。
2.3.2 删除主键
使用 ALTER TABLE 删除主键:
注意:pk_name 是主键名称,可以在图形化界面查看。
2.3.3 小结
主键可以说是一个表最重要的部分,表中的其他字段在一定程度上依赖于主键的数据。通过查看主键我们可以知道一个表可能会通过什么数据与其他表形成关联。我们必须记住的是,一个表永远只能有一个主键,但是添加组合主键(多个字段组成主键)。
2.4 FOREIGN KEY (外键)
FOREIGN KEY (外键) 用于指向另一个表中的唯一的键(UNIQUE、PRIMARY KEY),实现表与表之间的关联,保证了数据的一致性和完整性。
注意:一个表只能有一个主键,但是可以有多个外键。
2.4.1 添加外键
在建表时添加外键:
在定义字段的后面添加外键:
解释:“演示表_3”表示“演示表_4”连接的表,“姓名”表示外键连接的字段,“演示表_4”中的“姓名”必须在“演示表_3”中存在,否则无法在“演示表_4”中插入新记录。
在已经存在的表中添加外键:
2.4.2 删除外键
2.4.3 小结
外键使一个表与另一个表实现关联,通过将其他表的主键(PRIMARRY KEY)、或唯一键(UNIQUE)作为外键。因为有了外键的存在,数据库的数据的一致性与完整性得到了保证。
2.5 CHECK
CHECK 用于限制字段中的值的范围,给表中的某个字段设置 CHECK 约束后,在插入新记录或更新记录时,该字段的值必须处于 CHECK 规定的范围内。例如 age int CHECK (age >= 0 AND age <= 120); 在age字段设置了值的范围,那么age的值只能在0~120之间。
2.5.1 添加 CHECK 约束
在建表时添加 CHECK 约束:
选手的上场次数必须在1000场以内,否则无法插入新记录。
2.5.2 删除 CHECK 约束
2.5.3 小结
CHECK 约束让我们在插入新纪录时不会插入其他太“离谱”的数据,给我们一定的提示,使用CHECK约束能够使存储进数据库的数据更加合理。
2.6 DEFAULT
DEFAULT 约束用于给字段设置“默认值”,表中插入新记录时,若没有为设置了DEFAULT约束的字段提供值的话,会将默认值添加到新记录中。
2.6.1 添加 DEFAULT 约束
在建表时添加 DEFAULT 约束:
在定义字段后面添加 DEFAULT 约束:
在已经存在的表中添加 DEFAULT 约束
2.6.2 删除 DEFAULT 约束
3.总结
在 SQL 中,约束的作用不可谓不重要,它为数据指定规则,数据只有遵守“规则”,才有资格存储进数据库。在单个表中使用约束能够保证数据的完整性,但使用主键和外键将表联系起来,就可以保证数据库数据的一致性和完整性。