数据库基本操作(创建主键、外键以及索引)
图书馆学习没有多大干劲了,数据库又快考试了根据考试内容写总结。老师回放已过期不得不自己来尝试 心酸!
需要按照要求给表创建主键、创建索引,创建外键(并设置删除和更新规则)
一、创建主键
自己创建一个数据库和最少两个表(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个非聚集索引
- 在非聚集索引创建之前创建聚集索引(否则会引发索引重建)
数据库基本操作(创建主键、外键以及索引)相关推荐
- MySql数据库主键外键与数据库设计
MySql数据库主键外键与数据库设计 首先要指出的: 列.字段.属性是一个概念 行.记录.元组是一个概念 MySQL数据库CONSTRAINT约束:非空约束,唯一约束,主键约束,外键约束 show c ...
- Python攻城师————MySQL数据库(自增、外键、关键字)
今日学习目标 正式学习MySQL数据库语句. 文章目录 今日学习目标 学习内容 一.自增特性 二.约束条件之外键 外键的定义 外键约束创建 三.查询关键字 查询关键字之select与from 查询关键 ...
- [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式
[数据库03]-约束(唯一性-主键-外键)/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式 一.约束 1.1 唯一性约束(unique) 1.2 主键约束 1.3 外键约束 二.存储引擎 2 ...
- 数据库 主键 外键 唯一键区别
下面我通过一个小栗子来说明我们应该如何选择主键,外键和唯一键. 现在我们想建立学生表,用来存储,一个系统的登陆信息.建表如下: create table student4 ( stu_id in ...
- MySQL数据库(25):外键 foreing key
外键 foreing key 外键表示了两个实体之间的联系 外键 foreing key: A表中的一个字段的值指向另B表的主键 B: 主表 A: 从表 主表:主键(主关键字) = 从表:外键(外关键 ...
- mysql 主键外键sql_SQL外键VS主键说明了MySQL语法示例
mysql 主键外键sql A Foreign Key is a key used to link two tables. The table with the Foreign Key Constra ...
- 主键主键外键和索引_主键和外键的目的/用途是什么?
主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure d ...
- mysql中表的约束,主键外键唯一键
mysql2 表的约束 空属性(NULL) 默认值 列描述 zerofill 主键 主键属性 复合主键 追加主键 删除主键 自增长 唯一键 外键 表的约束 空属性(NULL) 此时 name 的 Nu ...
- SQL-主键外键的定义
primary key 主键 需设置为不为空不重复&自增列 not null auto_increment primary key 一个表仅允许一个主键,但主键可由多列组成 create ta ...
最新文章
- 在Windows7/10上快速搭建深度学习框架Caffe开发环境
- ExtJs6.5.2新手入门——如何用sencha cmd创建自己的第一个项目
- django 内置 admin
- java中mq组建是什么_Java教程之RabbitMQ介绍
- nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t
- 为什么使用1 * 1 的卷积核
- python之用循环实现五子棋小程序
- android studio创建文件,如何在Android Studio中创建File Templates
- 淘淘相关工具类【json,httpClient,id,FTP,exception,cookie(包括共享cookie的设置等)】
- SpringBoot +spring security 与CSRF有关的几个 问题
- CAD转换PDF文件失败,打开后内容是空白的
- 十大重要IT公司排名 -2009
- 年轻人逃离算法?更懂你的时尚推荐算法,你会拒绝吗?| FashionHack 专栏
- Linux上搭建http服务器
- php的惰性加载,thinkphp5.0的惰性加载
- 微信小程序页面跳转,url传参参数丢失问题
- EOS智能合约开发系列(14): 关于require_auth函数
- 问题 E: 来淄博旅游
- 12.2 Kruskal算法
- zjs-my-diary-20191227