MySQL面试-基础篇(一)


想进大厂?MySQL不会可不行呀,小树懒给大家准备了面试的一些问题,今天就先来说基础篇。接受挑战吧,看看你能坚持到哪里?

1.用一句话介绍什么是MySQL?

MySQL是一种开源的关系型数据库管理系统,其服务器速度快、可靠性高,扩展性强,且易于使用。

2.对MySQL数据库去重的关键字是什么?

在select后加distinct关键字去除重复记录。distinct关键字只能出现在所有字段的最前面,如果有多个字段,联合起来去重。如:select distinct deptno ,job from emp;代表的是对deptno ,job都一样的记录进行去重

3.MySQL多表连接有哪些方式?怎么用的?这些连接都有什么区别?

在MySQL中,多表连接的语法格式如下:

SELECT <查询列表>

FROM <表名1> [连接类型]

JOIN <表名2> ON <连接条件>

WHERE <查询条件>

其中连接类型有三种:

左连接

右连接

内连接

多表连接往往要通过表之间的物理外键(或者逻辑外键)进行关联查询。

区别:

Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集

left join 在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。

right join 在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

4.MySQL数据库和Redis的区别?

(1)类型

从类型上来说,mysql是关系型数据库,redis是缓存数据库

(2)作用

mysql用于持久化的存储数据到硬盘,功能强大,速度较慢,基于磁盘,读写速度没有Redis快,但是不受空间容量限制,性价比高

redis用于存储使用较为频繁的数据到缓存中,读取速度快,基于内存,读写速度快,也可做持久化,但是内存空间有限,当数据量超过内存空间时,需扩充内存,但内存价格贵

(3)需求

mysql和redis因为需求的不同,一般都是配合使用。
需要高性能的地方使用Redis,不需要高性能的地方使用MySQL。存储数据在MySQL和Redis之间做同步。

5.说一下索引的优势和劣势?

优势:创建索引可以大大提高系统的性能。

  • 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  • 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  • 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  • 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

劣势:

  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
  • 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
  • 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。