vlambda博客
学习文章列表

大数据百科全书(八)-MySQL常见面试题




不要再问老师:


菩提老师,学大数据,为啥要了解数据库知识?为啥要面试MySQL


菩提老师,学大数据,为啥要懂Linux?我啥要会shell编程


菩提老师,学大数据,为啥要学JAVA?要懂java编程

 
大数据是一个多学科的岗位,大数据相关岗位目前工资是比其他的岗位高,你啥也不会,凭什么给你那么高的工资?他高也是有他的道理。



来,话不多说,咱今天来看看常见的MySQL面试题

 


1. 如何一个表数据的前50行?


SELECT *  FROM   LIMIT 0,50;

大数据百科全书(八)-MySQL常见面试题



2. 对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:



 1)    索引的目的是什么? 快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。 加速表和表之间的连接


2)    使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

3)    索引对数据库系统的负面影响是什么? 

负面影响: 创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;


索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;


当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。


4)    为数据表建立索引的原则有哪些? 在最频繁使用的、用以缩小查询范围的字段上建立索引。

5)    在频繁使用的、需要排序的字段上建立索引

6)    什么情况下不宜建立索引? 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。

7)    对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等
大数据百科全书(八)-MySQL常见面试题




3.  解释MySQL外连接、内连接与自连接的区别



1)    先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。

2)    内连接则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。 

外连接其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中 的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

3)    左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。

右外连接,也称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换,MySQL目前还不支持全外连接。


大数据百科全书(八)-MySQL常见面试题



4.   SQL语言包括哪几部分?每部分都有哪些操作关键字?



1)    数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等

2)    数据操纵:Select ,insert,update,delete,

3)    数据控制:grant,revoke

4)    数据查询:select
大数据百科全书(八)-MySQL常见面试题




5.   常见的通用SQL函数?



1)    CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。

2)    FORMAT(X, D)- 格式化数字X到D有效数字。

3)    CURRDATE(), CURRTIME()- 返回当前日期或时间。

4)    NOW() – 将当前日期和时间作为一个值返回。

5)      MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() – 从日期值中提取给定数据。

6)    HOUR(),MINUTE(),SECOND() – 从时间值中提取给定数据。

7)    DATEDIFF(A,B) – 确定两个日期之间的差异,通常用于计算年龄

8)    SUBTIMES(A,B) – 确定两次之间的差异。

9)    FROMDAYS(INT) – 将整数天数转换为日期值。
大数据百科全书(八)-MySQL常见面试题


 

6.  什么情况下设置了索引但无法使用



1) 1.以“%”开头的LIKE语句,模糊匹配

2) OR语句前后没有同时使用索引

3) 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)
大数据百科全书(八)-MySQL常见面试题



7.  Mysql中的myisam与innodb的区别(最经典题目)



  • InooDB支持事务,而MyISAM不支持事务

  • InnoDB支持行级锁,而MyISAM支持表级锁

  • InnoDB支持MVCC,而MyISAM不支持


  • InnoDB支持外键,而MyISAM不支持


  • InnoDB不支持全文索引,而MyISAM支持
大数据百科全书(八)-MySQL常见面试题



8.     MySQL中的varchar和char的区别以及varchar(50)中的50代表的涵义



1)varchar和char


char是一种固定长度的类型,varchar则是一种可变长度的类型


2)varchar(50)的涵义


最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,


但后者在排序时会消耗更多的内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)

大数据百科全书(八)-MySQL常见面试题


 

9.   InnoDB有多少种日志



  • 错误日志:

    记录出错信息,也记录一些警告信息或者正确的信息



  • 查询日志:
    记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行

  • 慢查询日志:
    设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中

  • 二进制日志:
    记录对数据库执行更改的所有操作

  • 中继日志,事务日志。
大数据百科全书(八)-MySQL常见面试题



10.  为什么使用数据索引能提高效率



1)     数据索引的存储是有序的


2)     在有序的情况下,通过索引查询一个数据是无需遍历索引记录的


3)     极端情况下,数据索引的查询效率为二分法查询效率,趋近于 log2(N)

大数据百科全书(八)-MySQL常见面试题



11.  为什么说B+比B树更适合实际应用中操作系统的文件索引和数据库索引?



1.  B+的磁盘读写代价更低 B+的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B树更小。

如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。

一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

2.  B+-tree的查询效率更加稳定 由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。

所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
大数据百科全书(八)-MySQL常见面试题