- 1.什么是MySQL?
- 2.MySQL常用的存储引擎有什么?它们有什么区别?
- 3.数据库的三大范式
- 4.MySQL的数据类型有哪些
- 5.什么是索引?有什么优缺点?
- 6.MySQL索引的数据结构?
- 7.MySQL中哈希索引和B+树索引的区别?
- 8.MySQL的索引类型有哪些?
- 9.MySQL索引的种类有哪些?
- 10.B树和B+树的区别
- 11.MySQL索引为什么使用B+树而不是B树?
- 12.什么是聚簇索引,什么是非聚簇索引?
- 13.非聚簇索引一定会进行回表查询吗?
- 14.索引的使用场景有哪些?
- 15.索引的设计原则?
- 16.如何对索引进行优化?
- 17.如何创建索引或删除索引?使用索引查询时性能一定会提升吗?
- 18.什么是前缀索引?
- 19.什么是最左匹配原则?
- 20.索引在什么情况下会失效?
- 21.什么是数据库事务?事务的四大特性是什么?
- 22.数据库的并发一致性问题
- 23.数据库的隔离级别有哪些?隔离级别是如何实现的?
- 24.什么是MVCC?
- 25.什么是数据库的锁?数据库的锁与隔离级别的关系?
- 26.数据库锁的类型有哪些?
- 27.MySQL中InnoDB的行锁模式及其是如何实现的?
- 28.什么是数据库的乐观锁和悲观锁,如何实现?
- 29.什么是死锁?如何避免?
- 30.SQL语句主要分为哪几类
- 31.SQL约束有哪些?
- 32.什么是子查询?
- 33.了解MySQL的连接查询吗?
- 34.mysql中in和exists的区别?
- 35.varchar和char的区别?MySQL中int(10)和char(10)和varchar(10)的区别?
- 36.drop、delete和truncate的区别?
- 37.UNION和UNION ALL的区别?
- 38.什么是临时表,什么时候会使用到临时表,什么时候删除临时表?
- 39.大表数据查询如何进行优化?
- 40.了解慢日志查询吗?统计过慢查询吗?对慢查询如何优化?
- 41.为什么要设置主键?主键一般用自增ID还是UUID?
- 42.MySQL字段为什么要设置成not null?
- 43.如何优化查询过程中的数据访问?
- 44.如何优化长难的查询语句?如何优化LIMIT分页?如何优化UNION查询?
- 45.如何优化WHERE子句
- 46.SQL语句执行的很慢原因是什么?
- 47.SQL语句执行顺序?
- 48.数据库中大表如何优化?
- 49.什么是垂直分表、垂直分库、水平分表、水平分库?
- 50.分库分表后,ID键如何处理?
- 51.MySQL的复制原理及流程?如何实现主从复制?
- 52.了解读写分离吗?
52.了解读写分离吗?
首先说一点,NULL和空值是不一样的,空值是不占用空间的,而NULL是占用空间的,所以字段设为NOT NULL后仍然可以插入空值。
字段设置成not null主要有以下几点原因:
- NULL值会影响一些函数的统计,如count,遇到NULL值,这条记录不会统计在内。
- B树不存储NULL,所以索引用不到NULL,会造成第一点中说的统计不到的问题。
- NOT IN子查询在有NULL值的情况下返回的结果都是空值。例如user表如下
id | username |
---|---|
0 | zhangsan |
1 | lisi |
2 | null |
select * from user where username NOT IN (select username from `user` where id != 0)
,这条查询语句应该查到zhangsan这条数据,但是结果显示为null。- MySQL在进行比较的时候,NULL会参与字段的比较,因为NULL是一种比较特殊的数据类型,数据库在处理时需要进行特数处理,增加了数据库处理记录的复杂性。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版