MYSQL 36道题
- 1. Mysql中char和varchar有什么区别?
- 2. Mysql中float和double的区别是什么?
- 3. Mysql中date和datetime类型的区别?
- 4. Mysql中sql语句执⾏的顺序?(查询语句)
- 5. 说一下Mysql常用的存储引擎?
- 6. 说一下MySQL数据库事务的三个安全性问题?
- 7. 说一下MySQL数据库事务的隔离级别?
- 8. 谈谈对Mysql存储过程的认识?
- 9. Mysql中存储过程和存储函数的区别?
- 10.说一说你对触发器的理解?
- 11. 开发中用的什么数据库,group by 和order by 都是啥意思?
- 12. Inner join、left join和right join 的区别?(高频)
- 13. a、b两表字段相同,写一条sql将a表数据拷贝到b表中?
- 14. Mysql数据库的三大范式是什么?
- 15. Mysql中如何获取当前数据库版本?
- 16. Mysql如何实现分页?
- 17. Mysql中往两个字段中间添加一个新字段,sql语句如何实现?
- 18. Mysql行列转换,sql语句如何实现?
- 19. Mysql中如何给字段创建索引?
- 20.Mysql中创建索引越多越好吗?为什么?
- 21.说一说你们公司数据库都是如何优化的?
- 22.说一下Mysql的行锁和表锁?
- 23.数据库表结构设计字段怎么优化?
- 24.Mysql数据库如何实现主从复制?如果主库出现问题了,从库怎么办?
- 25.数据库连接池原理是什么?
- 26.常用的高性能连接池有哪些?
- 27.Mysql中常用的几种约束?
- 28.mysql体系架构
- 29.存储引擎的介绍
- 30.存储引擎的特点
- 31.存储引擎的选择
- 32.索引
- 33.索引数据结构
- 34.二叉搜索树
- 35.平衡二叉搜索树
- 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