IBM面试:
1、delete,drop,truncate 都有删除表的作用,区别在于:
delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
2、数据库中表的几种join方式?
join是对数据库中的两张或两张以上的表进行连接操作。join分为:内连接(inner join)和外连接(outer join)。其中,外连接分为:左外连接,右外连接,全外连接。
1)面试官:B树和B+树之间的区别是什么?
B树结构图:
B+树结构图:
二者区别如下:
- b树的内部节点包含数据,b+树内部节点只有索引作用,数据都存储在了叶子结点;
- b树叶子节点没有互相引用,所以需要中序遍历。b+树叶子节点是单向(mysql双向)链表,可以顺序遍历。。故由此可得知,b+树更适合范围查找。
注解:中序遍历就是就是首先遍历左子树,然后访问当前节点,最后遍历右子树。对于下面的二叉树,中序遍历结果如下:
结果:[5,10,6,15,2]
直观来看,二叉树的中序遍历就是将节点投影到一条水平的坐标上。如图:
2)面试官:MySQL数据库中,什么情况下设置了索引但无法使用?(什么情况下会导致索引失效)
- 没有符合最左原则;
- is null 可以使用索引,is not null 无法使用索引;