2.16关于数据库基础相关知识回顾

文章详细阐述了数据库设计中的三范式,包括属性不可再分、消除部分依赖和传递依赖。此外,解释了超键、候选键、主键和外键的概念,并通过例子加以说明。还讨论了varchar与char的区别,IN和EXISTS子查询的适用场景,以及MySQL中的drop、delete、truncate操作差异。最后,概述了MySQL执行查询的步骤,并列举了SQL约束的不同类型,如非空、唯一、主键、外键和默认约束。
摘要由CSDN通过智能技术生成

1.数据库的三范式是什么?

一:属性不可再分,即表中的每个列都不可以再进行拆分
二:在满足1NF的前提下,表中不存在部分依赖,非主键列要完全依赖于主键。(主要是说在联合主键的情况下,非主键列不能只依赖于主键的一部分)
三:在满足2NF的前提下,不存在传递依赖。(A -> B, B -> C, A->C)
总结:第一范式属性不可再分,第二范式属性消除部份依赖,第三范式消除传递依赖
在这里插入图片描述
2.超键,候选键,主键,外键分别是什么?
书中的定义:
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

主键(primary key): 用户选作元组标识的一个候选键程序主键

外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键

举例:
创建简单的两个表,说明一下各个键!

学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)

超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!

候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!

主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!

外键:宿舍号就是学生信息表的外键

3.varchar和char有什么区别?

char是一种固定长度的类型,varchar则是一种可变长度的类型

在这里插入图片描述
4.in和exists的区别?
在这里插入图片描述

当查询两个表的大小相当时,用In 和 exists差别不大。
如果两个表中一个表较小,一个表较大,那么子查询表大的用exists,子查询表小的用In,效率会高的

IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况
举例:.select * from a where aid in (select aid from b) —>效率低:全程扫描b表,用到a 表上的aid的索引,因为a表小,b表大

5.drop,delete,truncate的 区别?
在这里插入图片描述
6.mysql执行查询的过程?

  1. 客户端通过 TCP 连接发送连接请求到 MySQL 连接器,连接器会对该请求进行权限验证及连接资源分配
    连接器的作用:
    负责与客户端通信,但是它是半双工模式,所以只能由客户端向服务器发送请求或者服务器响应客户端,两者不能同时进行。
    验证请求用户的账号和密码是否有误,如果验证通过,会在 MySQL 自带的权限中查询当前用户的权限。
  2. 查询缓存。

当判断缓存是否命中时,MySQL 不会进行解析查询语句,而是直接使用 SQL 语句和客户端发送过来的其他原始信息。所以,任何字符上的不同,例如空格、注解等都会导致缓存的不命中。如果无法命中缓存,就继续走到分析器的这一步,如果命中缓存就直接返回给客户端。

  1. 通过分析器进行语法分析。

通过分析器将客户端发送的 SQL 语句进行分析,这一过程包括预处理和解析过程。

  1. 优化器进行优化。

此阶段主要是进行SQL语句的优化,会根据具体情况进行最优的选择,判断是否使用索引,以及选择合适的索引,生成执行计划。

  1. 交给执行器,调用存储引擎的 API 将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。

在这里插入图片描述
7.SQL约束有哪几种?
在这里插入图片描述

1.NOT NULL——非空约束
2.UNIQUE——唯一约束
3.PRIMARY KEY——主键约束
4.FOREIGN KEY——外键约束
5.CHECK——检查约束
6.DEFAULT——默认约束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值