数据库之MYSQL面试题

MYSQL 36道题


1. Mysql中char和varchar有什么区别?

char是一种固定长度的类型,varchar是一种可变长度的类型
char列的长度固定为创建表时的长度,其范围为0~255。当保存为char类型时,在它们右边填充空格以达到指定的长度。当检索到char值时,尾部的空格被删除掉
varchar列中的值为可变长字符串,其范围为0~65535
char会造成空间浪费,但是有速度优势;而varchar节省了空间,但是速度就不如char。
在这里插入图片描述


2. Mysql中float和double的区别是什么?

在内存中占有的字节数不同, 单精度内存占4个字节, 双精度内存占8个字节
有效数字位数不同(尾数) 单精度小数点后有效位数7位, 双精度小数点后有效位数16位
数值取值范围不同 根据IEEE标准来计算!
在程序中处理速度不同,一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
在这里插入图片描述


3. Mysql中date和datetime类型的区别?

date类型可用于需要一个日期而不需要时间的部分
格式为’YYYY-MM-DD’ 范围是’1000-01-01’ 到’9999-12-31’
datetime类型可用于需要同时包含日期和时间的信息的值
格式为YYYY-MM-DD HH:mm:ss 范围是’1000-01-0100:00:00’ 到 ‘9999-12-3123:59:59’


4. Mysql中sql语句执⾏的顺序?(查询语句)

在这里插入图片描述


5. 说一下Mysql常用的存储引擎?

在这里插入图片描述


6. 说一下MySQL数据库事务的三个安全性问题?

脏读:指的是一个事务读到另一个事务未提交的数据.
不可重复读:指的是一个事务读到了另一个事务已经提交的 update的数据, 导致多次查询结果不一致.导致在一个事务中两次读取数据不一致
虚读/幻读:指的是一个事务读到了另一个事务已经提交的 insert的数据,导致多次查询结果不一致.
在这里插入图片描述


7. 说一下MySQL数据库事务的隔离级别?

在这里插入图片描述


8. 谈谈对Mysql存储过程的认识?

经过事先编译存储在数据库的一段SQL语句的集合,类似于java中的方法。一般可以把一些比较耗时的操作编写到存储过程中,然后使用java程序调用,减少数据在数据库和应用服务器之间的传输,从而提高了数据处理效率。


9. Mysql中存储过程和存储函数的区别?

在这里插入图片描述


10.说一说你对触发器的理解?

触发器是一种与表绑定的一种数据库对象
作用是:监听表中记录变化。(insert update,delete)
当表中数据产生的增删改的操作,触发器就会被执行;

在这里插入图片描述


11. 开发中用的什么数据库,group by 和order by 都是啥意思?

开发用的mysql|oracle
group by–分组–将具有相同属性的记录放在一起
order by --排序
在这里插入图片描述


12. Inner join、left join和right join 的区别?(高频)

在这里插入图片描述


13. a、b两表字段相同,写一条sql将a表数据拷贝到b表中?

INSERT INTO 目标表 SELECT * FROM 来源表;


14. Mysql数据库的三大范式是什么?

针对数据表中的列,列要具备原子性,不可再拆分
在这里插入图片描述任何一个非主键字段,都依赖于主键字段。每个表只描述一件事情(拆分解决)
在这里插入图片描述
任何2个非主键字段数值之间不存在函数依赖
在这里插入图片描述


15. Mysql中如何获取当前数据库版本?

登录到mysql中以后 ---- select VERSION()
进入mysql的bin目录 ---- mysql --version|-V


16. Mysql如何实现分页?

limit start ,size
start=(页码-1) * size
size=页大小


17. Mysql中往两个字段中间添加一个新字段,sql语句如何实现?

ALTER TABLE table_name ADD 字段名称 char(4) after 已经在字段名称


18. Mysql行列转换,sql语句如何实现?

group by配合case表达式


19. Mysql中如何给字段创建索引?

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON tbl_name(index_col_name,…)


20.Mysql中创建索引越多越好吗?为什么?

不是;
索引可以有效的提升查询数据的效率,但索引数量不是多多益善,索引越多,维护索引的代价自然也就水涨船高。对于插入、更新、删除等DML操作比较频繁的表来说,索引过多,会引入相当高的维护代价,降低DML操作的效率,增加相应操作的时间消耗。另外索引过多的话,MySQL也会犯选择困难病,虽然最终仍然会找到一个可用的索引,但无疑提高了选择的代价。


21.说一说你们公司数据库都是如何优化的?

在这里插入图片描述


22.说一下Mysql的行锁和表锁?

https://www.bilibili.com/video/BV1Kr4y1i7ru?p=124


23.数据库表结构设计字段怎么优化?

在这里插入图片描述


24.Mysql数据库如何实现主从复制?如果主库出现问题了,从库怎么办?

mysql主从复制
在这里插入图片描述由于mysql默认的复制方式是异步的,主库把日志发送给从库后不关心从库是否已经处理,这样会产生
一个问题就是假设主库挂了,这时候从库升为主库后,日志就丢失了。由此产生两个概念。
在这里插入图片描述


25.数据库连接池原理是什么?

在这里插入图片描述


26.常用的高性能连接池有哪些?

Druid
BoneCP
HikariCP ---- springboot官方推荐


27.Mysql中常用的几种约束?

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性
主键
默认值
唯一
外键
非空
在这里插入图片描述


28.mysql体系架构

在这里插入图片描述在这里插入图片描述


29.存储引擎的介绍

存储引擎是决定了表中数据如何存储,查询,更新及索引如何存储。
默认的存储引擎
在这里插入图片描述在这里插入图片描述


30.存储引擎的特点

在这里插入图片描述


31.存储引擎的选择

实际开发全部都采用InnoDB
MongoDB代替MyISAM
Redis代替Money


32.索引

索引 : 是一种高效查询数据的数据结构
在这里插入图片描述


33.索引数据结构

在这里插入图片描述


34.二叉搜索树

二叉树(度为2的树),所有的节点最多2个子树
根节点大于所有左子树,小于右子树
顺序插入会成为一个链表,影响插入,删除,查询的时间复杂度0(n)
如果数据量比较大,树的高度比较高

在这里插入图片描述


35.平衡二叉搜索树

顺序插入会成为一个链表,影响插入,删除,查询的时间复杂度0(n)
AVL
红黑树

在这里插入图片描述


36.如果数据量比较大,树的高度比较高

B树
在这里插入图片描述
B+树

在这里插入图片描述
MySQL B+树
在这里插入图片描述Hash
在这里插入图片描述为什么InnoDB存储引擎采用B+tree
在这里插入图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值