视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql完整新约束
2020-11-09 07:23:50 责编:小采
文档


主键:primary key 可以指定一列或多列为主键,主键在表中的总是唯一的,且构成主键的一部分的列的不允许为空。 惟一性原则:表中不同的行在主键上有唯一的。有必要区分primary key和super key。 unique唯一键键 一个表只能有一个主键,但可以有多个唯一键。

主键:primary key
可以指定一列或多列为主键,主键在表中的值总是唯一的,且构成主键的一部分的列的值不允许为空。
惟一性原则:表中不同的行在主键上有唯一的值。有必要区分primary key和super key。
unique唯一键键

一个表只能有一个主键,但可以有多个唯一键。唯一键可以为空值。

替代键:unique

一个表只能有一个主键,但可以有多个替代键。替代键可以为空值。
它可以是数据表内不作为主键的其他任何列。在替代键列内不允许出现数据重复的现象。

外键foreign key

如果存储在表A中的数据也必须存在表B中,且两个表中的数据必须一致,这种类型关系称为参照完整新约束。

参照动作:

定义外键时可以添加更新时的参照动作:当一个表执行一种动作时参照表也执行相应的动作。

参照动作有:uodata和delete
参照表的响应动作有:
① RESTRICT(外表中的外键改动,默认值)
② CASCADE(跟随外键改动)
③ SET NULL(设空值)
④ SET DEFAULT(设默认值)

⑤ NO ACTION(无动作,默认的)

check完整性约束
check保证该列的值绝对符合条件。不允许不符合check条件的任何插入和更新操作。

例如:

create table student(
stu_id int not null primary key,
stu_name varchar(5) not null,
stu_tel int(5) unique,
stu_score int(2) check (stu_score>=60)
);
这个表的主键是stu_id,其中stu_name不允许为空值,所有的行中stu_tel不能有重复,且所有学生的成绩stu_score必须大于60分。

例:参照完整性约束。
create table student1(
id	int not null primary key,
stu_address	varchar(5),
foreign key(id) references student(stu_id)
on update cascade
on delete restrict
);

原始数据:
mysql> select * from student;
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
| 1 | a | 150 | 60 |
+--------+----------+---------+-----------+
1 row in set (0.00 sec)
mysql> select * from student1;
+----+-------------+
| id | stu_address |
+----+-------------+
| 1 | china |
+----+-------------+
1 row in set (0.00 sec)

更新student数据
mysql> update student set stu_id=3 where stu_id=1;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0

表student数据被更改了:
mysql> select * from student;
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
| 3 | a | 150 | 60 |
+--------+----------+---------+-----------+
1 row in set (0.00 sec)

表student1数据跟着被更改:
mysql> select * from student1;
+----+-------------+
| id | stu_address |
+----+-------------+
| 3 | china |
+----+-------------+
1 row in set (0.00 sec)
此时不能删除delete表student中stu_id=3的数据,因为参照动作on delete restrict;


下载本文
显示全文
专题