说一说leftjoin和leftsemijoin
leftjoin等价于leftouterjoin,可以直接执行。leftsemijoin是MySQL内部优化的in、exist的方式。leftjoin将结果集会逐条匹配,leftsemijoin只要存在一个就算匹配上。
执行成功与失败结果.png
说一说union与unionall
结果集:union数据不重复,unionall数据可能有重复union:如果查询字段的顺序的第一个字段是聚集索引(或者主键),UNION的双方就会以merge的方式去重。如果查询字段的顺序非聚集索引,UNION的过程是现将两个结果集合并起来(上文提到的Concatenation),然后再做sort排序去重。合并结果集,需要去重就用UNION,不需要去重就用UNIONALL,如果两个结果集中没有重复的结果集,就用UNIONALL
mysql如何记录货币
主要使用三种类型:float、double、decimal
什么是通用sql函数
CONCAT(A,B):连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。FORMAT(X,D):将数据内容格式化的,可以将数据格式化为整数或者带几位小数的浮点数(四舍五入)。CURRDATE(),CURRTIME():返回当前日期或时间。NOW():将当前日期和时间作为一个值返回。MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY():从日期值中提取给定数据。HOUR(),MINUTE(),SECOND():从时间值中提取给定数据。DATEDIFF(A,B):确定两个日期之间的差异,通常用于计算年龄SUBTIMES(A,B):确定两次之间的差异。FROMDAYS(INT)–将整数天数转换为日期值。
mysql有关权限的表都有哪几个?
权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。
MySQL那ACID靠什么保证的?
A原子性由undolog日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sqlC一致性一般由代码层面来保证I隔离性由MVCC来保证D持久性由内存+redolog来保证,mysql修改数据同时在内存和redolog记录这次操作,事务提交的时候通过redolog刷盘,宕机的时候可以从redolog恢复
MySQL高级开发面试题(三)
MySQL高级开发面试题(二)
MySQL高级开发面试题(一)