图书馆学习没有多大干劲了,数据库又快考试了根据考试内容写总结。老师回放已过期不得不自己来尝试 心酸!
需要按照要求给表创建主键、创建索引,创建外键(并设置删除和更新规则)
一、创建主键
自己创建一个数据库和最少两个表(student表 和 course 表),然后上图:点击创建主键
二、创建外键
1、什么是外键:(这是百度说的,不是我说的)如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
最后总结一下用人的话说:就是有两个表A和表B A和B同时有属性x,但是在A中X只是一个普普通通的键没啥大的作用,却在B中担当主键的位置。所以B就是主表,A就是从表,x就是A中的外键。所以A就是参照表,B就是被参照表。
我希望创建的外键在student表中,也就是说:course作为被参照表(主表)student表作为参照表(从表)。
表格信息:
表格名称 | 主键 | 外键 |
---|---|---|
student | sno | scname |
course | cno |
2、创建外间的步骤:
1、在student表中创建关系
弹出关系窗口,点击添加,点击 表和列的规范 一项,设置主表和从表的关系。(这里student表的scname参照course表中的cno)
2、设置insert和update规范
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eh1CsODt-1622373901735)(C:\Users\赵轶楠\AppData\Roaming\Typora\typora-user-images\image-20210530185111634.png)]
默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。
“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。
“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。
“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。
使用代码创建外键(在创建表格时加上"foreign key() references table_name() "即可,先创建主表再创建从表)
create table course
cno nchar(10) primary key,
cname nchar(10) not null,
tname nchar(10);
create table student
sno nchar(10) primary key,
sname nchar(10) not null,
ssex nchar(10),
scname nchar(10) foreign key(scname) references course(cno);
三、创建索引
1、什么是索引:索引就像一个标签,创建索引之后便可以加快查询的速度
2、创建索引的步骤:
- 点击表在索引处右击创建索引
- 点击添加,至少选择一个作为索引点击确定,及创建完毕
出现第二个图标即是成功
3、用代码创建索引(CREATE[ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX索引名
ON {表名|视图名} (列名[ ASC | DESC ] [ ,…n ] ))
create index_name
on course(cno)
动作描述 使用聚集索引 使用非聚集索引
外键列 应 应
主键列 应 应
列经常被分组排序(order by) 应 应
返回某范围内的数据 应 不应
小数目的不同值 应 不应
大数目的不同值 不应 应
频繁更新的列 不应 应
频繁修改索引列 不应 应
一个或极少不同值 不应 不应
聚集索引:
- 聚集索引的叶节点就是实际的数据页
- 聚集索引中的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上
- 行的物理位置和行在索引中的位置是相同的
- 每个表只能有一个聚集索引
- 聚集索引的平均大小大约为表大小的5%左右
非聚集索引:
- 非聚集索引的页,不是数据,而是指向数据页的页。
- 若未指定索引类型,则默认为非聚集索引。
- 叶节点页的次序和表的物理存储次序不同
- 每个表最多可以有249个非聚集索引
- 在非聚集索引创建之前创建聚集索引(否则会引发索引重建)