基础
- 数据库的三范式是什么?
1. 即列不能够再分成其他几列
2. 一是表必须有一个主键;二是没有包含在主键中的列必须完全依 赖于主键,而不能只依赖于主键的一部分
3. 另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖 于非主键列 B,非主键列 B 依赖于主键的情况
- 165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?
一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是8;但是如果重启(文中提到的)MySQL的话,这条记录的ID是6。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。
但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是8。因为MylSAM表会把自增主键的最大ID记录到数据文件里面,重启MYSQL后,自增主键的最大ID也不会丢失。
注:如果在这7条记录里面删除的是中间的几个记录(比如删除的是3,4两条记录),重启MySQL数据库后,insert一条记录后,ID都是8。因为内存或者数据库文件存储都是自增主键最大ID
- 166.如何获取当前数据库版本?
- 167.说一下 ACID 是什么?
- 168.char 和 varchar 的区别是什么?
char的长度是不可变的,而varchar的长度是可变的
超出长度自动截取
- 169.float 和 double 的区别是什么?
- 170.mysql 的内连接、左连接、右连接有什么区别?
内连接关键字:inner join;左连接:left join;右连接:right join。
内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。
- 171.mysql 索引是怎么实现的?
B+tree
- 172.怎么验证 mysql 的索引是否满足需求?
使用 explain 查看 SQL 是如何执行查询语句的,从而分析你的索引是否满足需求。 explain 语法:explain select * from table where type=1。
- 173.说一下数据库的事务隔离?
- 174.说一下 mysql 常用的引擎?
- 175.说一下 mysql 的行锁和表锁?
MyISAM 只支持表锁,InnoDB 支持表锁和行锁,默认为行锁。 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低。 行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高。
- 176.说一下乐观锁和悲观锁?
- 177.mysql 问题排查都有哪些手段?
使用 show processlist 命令查看当前所有连接信息。 使用 explain 命令查询 SQL 语句执行计划。 开启慢查询日志,查看慢查询的 SQL。
- 178.如何做 mysql 的性能优化?