目录
- 关系型数据库与非关系型数据库的区别
- 数据库三范式
- MySQL中 drop、delete、truncate的区别
- MySQL中 char和 varchar 的区别
- MySQL中inner join、left join、right join以及full join的区别
- MySQL中 having 和 where 的区别
- sql中on和where的区别
- count(*)、count(1)、count(列名)的区别
- MySQL中视图和表的区别
- 数据完整性约束
- SQL 的执行顺序
- SQL 的优化方法
- 大数据量里的分页查询怎么优化
- 写了一个sql ,如何查看有没有命中索引
- MySQL 的存储引擎和区别
- 索引是什么
- 索引为什么可以加快查询速度
- MySQL中索引的分类
- B树和B+树的区别
- MySQL的索引结构
- 为什么不用二叉树、红黑树、哈希表、B树
- 聚集索引和非聚集索引的区别
- Innodb 和 MyISAM 的索引的区别
- 主键索引和辅助索引具体是什么
- 覆盖索引是什么
- 回表查询是什么
- 简述事务
- MySQL是如何保证ACID的
- MVCC 讲一下
- 数据库事务并发会引发哪些问题
- 事务的四个隔离级别
- Mysql中常见的几种日志
关系型数据库与非关系型数据库的区别
(1)关系型数据库是按照二维表的结构来存储数据,常用的有 mysql、oracle;非关系型数据库一般基于键值对(例如Redis)、基于文档(例如Mongodb)等形式来存储数据。
(2)非关系型数据库一般只能保证数据的最终一致性(更新后的数据不一定立马能访问,但是最后是能访问到的),而关系型数据库保证数据的强一致性,
也就是更新后的数据立马能被访问到。
(3)关系型数据库横向扩展比较难(难以跨多台服务器进行横向扩展),而一些非关系型数据库则原生就支持数据的水平扩展。(在多台服务器之间水平扩展)
数据库三范式
MySQL中 drop、delete、truncate的区别
三者都表示删除。
(1)drop、truncate 是 DDL ,数据定义语言,delete 是 DML,数据操纵语言;
(2)delete 用来删除表的一部分数据或者全部数据,drop 是用来删除表以及表中的全部数据,truncate 是用来删除表中的全部数据;
(3)delete 删除的数据可以回滚,drop、truncate删除的数据不可以回滚;
(4)执行速度:drop > truncate > delete。
MySQL中 char和 varchar 的区别
MySQL中inner join、left join、right join以及full join的区别
MySQL中 having 和 where 的区别
(1)where 后面不能使用聚合函数,而 having 后面可以使用聚合函数;
(2)where 用在 groupby 的前面,而 having 用在 groupby 的后面。
(3)where 对数据行进行过滤, having 是对 分组进行过滤。
sql中on和where的区别
count(*)、count(1)、count(列名)的区别
MySQL中视图和表的区别
视图是一种虚拟的表,不存储数据,它是一个数据库查询结果的可视化表示。
(1)视图是外模式(也称为用户模式或者子模式,是用户或者应用程序所见到的数据库的逻辑结构),表是内模式(也称为存储模式或物理模式,是数据库的