当前位置:网站首页>MySQL面试必备(一)基础篇
MySQL面试必备(一)基础篇
2022-08-03 14:22:00 【老衲要学习】
1. 数据库的三大范式?
- 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。
- 第二范式:确保表中每列都和主键相关。
- 第三范式:确保每列都和主键列直接相关而不是间接相关。
2. MySQL支持哪些存储引擎?
支持多种存储引擎,如InnoDB,MyISAM,Memeory,Archive等。
InnoDB是MySQL的默认存储引擎,也是大多数场景下最合适的。
InnoDB和MyISAM的区别:
InnoDB | MyISAM | |
---|---|---|
事务 | 支持 | 不支持 |
外键 | 支持 | 不支持 |
聚集索引 | 是(主键) | 非(指针)主键独立 |
全文索引 | 不支持 | 支持(效率高) |
锁 | 表级锁 | 行级锁(默认)、表级锁 |
3. 超键、候选键、主键、外键分别是什么?
- 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
- 候选键:最小超键,没有冗余元素的超键。
- 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或者属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空(NULL)。
- 外键:在一个表中存在另一个表的主键,将两张表关联起来,称为外键。
4. SQL约束有哪几种?
- NOT NULL:用于控制字段的内容一定不能为空(NULL)。
- UNIQUE:控制字段内容不能重复,一个表允许有多个Unique约束。
- PRIMARY KEY:用于控制字段内容不能重复,在表中只允许存在一个主键。
- FOREIGH KEY:用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
- CHECK:用于控制字段的值范围。
5. MySQL中的VARCHAR和CHAR区别
CHAR定长,VARCHAR变长。
VARCHAR占用的空间为实际字符长度+1,最后一个字符存储使用了多大的空间。
6. MySQL中 in 和 exists 的区别
in 语句是把外表和内表作 hash 连接,而 exists 语句是对外表作 loop 循环再对内表进行查询。
效率问题:如果查询的两个表大小相当,那么用 in 和 exists 差别不大。如果两个表一小一大,则子查询表大的用 exists,表小的用 in
not in 和 not exists:如果查询语句用 not in,则内外表进行全表扫描,没有用到索引。而not exists 的子查询依然能用到表上的索引。not exists 的效率更高。
7. drop、delete、truncate的区别:
drop 删除表的内容和所有结构,DDL
delete 删掉表的内容,DML语句,支持回滚
truncate 清空表内容但保留表的结构。DDL
执行速度:drop > truncate > delete
8. MySQL执行查询的过程
- 客户端通过TCP连接发送连接请求到MySQL连接器,连接器会对该请求进行权限验证及连接资源分配
- 查缓存。(当判断缓存是否命中时,MySQL不会进行解析查询语句,而是直接使用SQL语句和客户端发送过来的其他原始信息。所以,任何字符上的不同,例如空格、注解等都会导致缓存的不命中)
- 语法分析。如何把语句给到预处理器,检查数据表和数据列是否存在,解析别名看是否存在歧义。
- 优化。是否使用索引,生成执行计划。
- 交给执行器,将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。
9. 数据库语言
- 数据定义语言(define,DDL):CREATE DROP ALTER
- 数据查询语言(query,DQL):SELECT
- 数据控制语言(control,DCL):GRANT REVOKE
- 事务控制语言 (Transaction control language,TCL):COMMIT ROLLBACK
。。。持续学习中
边栏推荐
猜你喜欢
node项目开发踩坑(一)
游戏版号“地下交易”,一个版号能卖上千万?
162_Power Query is a custom function for quickly merging tables in a folder TableXlsxCsv_2.0
[web penetration] detailed explanation of CSRF vulnerability
typedef关键字的用法
用1000行代码统计西安新房价格后,我有一个惊人的发现……
大型连锁百货运维审计用什么软件好?有哪些功能?
Ansible中的角色使用
基于.NET 6 的开源访客管理系统
【深度学习中的激活函数的整理与使用总结】
随机推荐
Ansible中的角色使用
回流和重绘
SQL 不新增表 把一张表定义成两张
你把 vite打包 玩明白
W11或W10系统如何进行休眠?
System learning Shell regular expressions
The Chinese Embassy in Nigeria issued an emergency safety warning for the area near Zuma Rock in Abuja
爱可可AI前沿推介(8.3)
网络数据集-骨干网和校园网-IP流量
GBase 8c数据库集群中,怎么替换节点呢?比如设置A节点为gtm,换到B节点上。
atrace和systrace的基本使用方法
C语言中操作符的详细介绍
GMapping原理分析[通俗易懂]
数据分析(二)——numpy
冰蝎加密 WebShell 过杀软
如何在 UE4 中制作一扇自动开启的大门
PostgreSQL V14中更好的SQL函数
QImageReader
项目管理:PMP和IPMP哪个更值得考?两个证书的区别在于哪里?
MySQL知识总结 (十二) 数据库相关概念