1.默认约束(DEFAULT )
为数据表中的字段指定默认值。保证事物的属性一定会有一个值。
BLOB、TEXT数据类型不支持默认约束。
1 CREATE DATABASE mahaiwuji; 2 USE mahaiwuji; 3 4 CREATE TABLE student1 ( 5 id INT, 6 sname VARCHAR(30), 7 sex VARCHAR(1) DEFAULT '男' 8 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 9 10 INSERT INTO student1 VALUES (1,'张三','男'); 11 INSERT INTO student1 VALUES (2,'李四','女'); 12 INSERT INTO student1(id,sname) VALUES (3,'王五');
2.非空约束(NOT NULL)
字段的值不能为NULL。
1 CREATE TABLE student2 ( 2 id INT, 3 sname VARCHAR(30) NOT NULL, 4 sex VARCHAR(1) 5 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 6 7 INSERT INTO student2 VALUES (1,'张三','男'); 8 INSERT INTO student2 VALUES (2,'李四',NULL); 9 -- error,因为姓名指定了不能为空 10 INSERT INTO student2(id,sex) VALUES (3,'女');
3.唯一约束(UNIQUE)
保证数据表中字段的唯一性,即表中字段的值不能重复出现。
1 CREATE TABLE student3 ( 2 id INT, 3 sname VARCHAR(30) UNIQUE, 4 sex VARCHAR(1) 5 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 6 7 INSERT INTO student3 VALUES (1,'张三','男'); 8 INSERT INTO student3 VALUES (2,'李四','女'); 9 -- error,因为姓名指定不能重复 10 INSERT INTO student3 VALUES (3,'李四','男');
4.主键约束(PRIMARY KEY)
主键的作用:唯一标识表中的记录。
主键约束相当于唯一约束和非空约束的组合,要求被约束字段不允许重复,也不允许出现NULL值,每个表最多只允许含有一个主键。
列级约束
字段名 数据类型 PRIMARY KEY
1 CREATE TABLE student4 ( 2 id INT PRIMARY KEY, 3 sname VARCHAR(30), 4 sex VARCHAR(1) 5 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 6 7 INSERT INTO student4 VALUES (1,'张三','男'); 8 INSERT INTO student4 VALUES (2,'李四','女'); 9 -- error,因为id是主键,不能重复 10 INSERT INTO student4 VALUES (1,'王五','男');
表级约束
PRIMARY KEY (字段名1, 字段名2, …)
1 CREATE TABLE student5 ( 2 id INT, 3 sname VARCHAR(30), 4 sex VARCHAR(1), 5 PRIMARY KEY (id,sname) 6 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 7 8 INSERT INTO student5 VALUES (1,'张三','男'); 9 INSERT INTO student5 VALUES (1,'李四','女'); 10 -- error,因为id和sanme是联合主键,不能重复 11 INSERT INTO student5 VALUES (1,'张三','男');
5.外键约束(FOREIGN KEY)
外键指的是在一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束,从而保证数据的一致性和完整性。
被引用的表称为主表。
引用外键的表称为从表。
1 CREATE TABLE grade ( 2 gid INT, 3 gname VARCHAR(30), 4 PRIMARY KEY (gid) 5 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 6 7 INSERT INTO grade VALUES (1,'1班'); 8 INSERT INTO grade VALUES (2,'2班');
再创建一个学生表
1 CREATE TABLE student ( 2 sid INT, 3 sname VARCHAR(30), 4 sex VARCHAR(1), 5 gid INT, 6 PRIMARY KEY (sid) 7 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
为学生表添加外键约束
ALTER TABLE 从表表名 ADD CONSTRAINT 外键名 FOREIGN KEY 从表字段名 REFERENCES 主表表名(主表主键字段名);
1 ALTER TABLE student ADD CONSTRAINT FK_ID FOREIGN KEY (gid) REFERENCES grade(gid);
给学生表加数据
1 INSERT INTO student VALUES (1,'张三','男',1); 2 INSERT INTO student VALUES (2,'李四','男',2); 3 -- error,因为grade里没有gid为3的,所以添加失败 4 INSERT INTO student VALUES (3,'王五','男',3);
来源:https://www.cnblogs.com/mahaiwuji/p/12593735.html