/* 一、数据约束约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。MySQL中,常用的几种约束:约束类型: 主键 默认值 唯一 外键 非空关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL*/ /*1.1、默认值约束(default)——在用用户不对默认值的字段进行数据插入时,就默认地使用默认字段 特别注意:默认字段是可以为空的,也就是说当用户插入空(NULL)或''时是被允许的。 */ CREATE TABLE student( sid int, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男') /*1.2、非空(NOT NULL) 被非空约束的列,在插入值时必须非空。 在MySQL中违反非空约束,不会报错,只会有警告. */CREATE TABLE student( sid int NOT NULL, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.3、唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。 当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败. 注意:唯一的字段是可以为空的(NULL),且NULL不受唯一约束。也就是说可以存在多条字段为NUll的数据。*/CREATE TABLE student( sid int UNIQUE, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/* 1.4、主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行, 因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。 还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识 通常情况下,每一张表都会设置一个主键的字段,用于标记每一条记录的唯一性。*/CREATE TABLE student( sid int PRIMARY KEY, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.5、自增长(AUTO_INCREMENT) 当只增长字段有位数要求时,可以使用 ZEROFILL进行填充*/CREATE TABLE student( sid int PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.6、外键约束外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列(department表的dpt_name)中没有dpt3,则INSERT失败*/ CONSTRAINT `FK_kfaoihyj5oll835mvidvgsxp` FOREIGN KEY (`DEPARTMENT_ID`) REFERENCES `ssh_department` (`ID`) 关键字 外键名称 外键字段 关联表(字段)其中ssh_employee为副表,ssh_department为主表注意: (1)、当外键存在时,添加数据的顺序:先主表后副表; (2)、当外键存在时,修改数据的顺序:先副表后主表;/*1.7、级联操作 当我们设置了外键约束后,必须先修改或者删除副表中的所有关联数据,才能修改或者删除主表。 但很多时候,我们希望直接修改或删除主表的数据,从而影响副表数据。因此就需要级联设置来完成。 */CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE -- ON CASCADE UPDATE :级联修改-- ON DELETE CASCADE :级联删除-- 注意: 级联操作必须在外键基础上使用
新闻热点
疑难解答