面试——数据库
1. SQL语句中:drop、delete、truncate
三个都是表示删除:
- 定义:drop和truncate表示删除表格的结构,delete是删除数据
- 速度:一般来说:drop>truncate>delete
- SQL语句类型:delete是dml数据操控语言,这个操作会放在rollback segment,事务提交以后才生效。如果有相应的触发器,执行的时候被触发;drop和truncate是ddl数据定义语言,操作立即生效,不会放在rollback segment,无法回滚,操作不触发触发器trigger。
2.drop、delete与truncate分别在什么场景之下使用?
- drop:不再需要一张表的时候:比如删除一个索引:alter table drop index index_name
- truncate:保留表,只删除其中的数据
- delete:删除部分数据,加上where子句
3.left join、right join、inner join
1,left join:以左表作为保留表,B表中保留满足条件的
2,right join:以右表作为保留表,A表中保留满足条件的,
3,inner join:查找的数据是左右两表共有的
4.SQL的查询优化
(1)从表连接的角度优化:尽量使用内连接,因为内连接是两表都满足的行的组合,而外连接是以其中一个表的全部为基准。
(2)尽量使用存储过程代替临时写SQL语句:因为存储过程是预先编译好的SQL语句的集合,这样可以减少编译时间。
(3)从索引的角度优化:对那些常用的查询字段简历索引,这样查询时值进行索引扫描,不读取数据块。
(4)还有一些常用的select优化技巧:
(5)A.只查询那些需要访问的字段,来代替select*
5. 索引
索引是一种数据结构,对数据库表中的一或多列的值进行排序,是为了帮助MYSQL高效获取数据,索引的实现通常使用B树及其变种B+树。
优点:
- 大大加快了数据的检索速度
- 保证了数据的唯一性
- 加速了表与表之间的联系
- 在使用order by、group by子句进行数据索引的时候,可以显著减少时间
缺点:
- 索引需要占用物理内存
- 如果修改、增加、删除表中数据,索引也要动态维护。
索引的类型:
根据索引的功能,可以将索引划分为四类:普通索引、唯一索引、主键索引、聚集索引