​ 图书馆学习没有多大干劲了,数据库又快考试了根据考试内容写总结。老师回放已过期不得不自己来尝试 心酸!

需要按照要求给表创建主键、创建索引,创建外键(并设置删除和更新规则)

一、创建主键

​ 自己创建一个数据库和最少两个表(student表 和 course 表),然后上图:点击创建主键

在这里插入图片描述

二、创建外键

1、什么是外键:(这是百度说的,不是我说的)如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字

最后总结一下用人的话说:就是有两个表A和表B A和B同时有属性x,但是在A中X只是一个普普通通的键没啥大的作用,却在B中担当主键的位置。所以B就是主表,A就是从表,x就是A中的外键。所以A就是参照表,B就是被参照表。

我希望创建的外键在student表中,也就是说:course作为被参照表(主表)student表作为参照表(从表)。

表格信息:

表格名称主键外键
studentsnoscname
coursecno

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个非聚集索引
  • 在非聚集索引创建之前创建聚集索引(否则会引发索引重建)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐