7.MySQL表的约束

喜欢而已 提交于 2020-03-29 18:32:22

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);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!