面试题--数据库

数据库

1.连接查询(必会)

1.左连接 (左外连接)以左表为基准进行查询,左表数据会全部显示出来,右表 如果和左表匹配 的数 据则显示相应字段的数据,如果不匹配,则显示为 NULL;

2.右连接 (右外连接)以右表为基准进行查询,右表数据会全部显示出来,右表 如果和左表匹配的数据 则显示相应字段的数据,如果不匹配,则显示为 NULL; 2.聚合函数(必会) 1.聚合函数 SQL 中提供的聚合函数可以用来统计、求和、求最值等等。

2.分类

COUNT:统计行数量 SUM:获取单个列的合计值 AVG:计算某个列的平均值 MAX:计算列的最大值 MIN:计算列的最小值

3.SQL 关键字(必会)

1.分页 MySQL 的分页关键词 limit SELECT * FROM student3 LIMIT 2,6; 查询学生表中数据,从第三条开始显示,显示 6 条

2.分组 MySQL 的分组关键字:group by SELECT sex, count(*) FROM student3 GROUP BY sex; 3. 去重 去重关键字:distinct34 select DISTINCT NAME FROM student3;

4. SQL Select 语句完整的执行顺序: (必会)

查询中用到的关键词主要包含如下展示,并且他们的顺序依次为 form...on...left join...where...group by...avg()/sum()...having..select... order by...asc/desc...limit... from: 需要从哪个数据表检索数据 where: 过滤表中数据的条件 group by: 如何将上面过滤出的数据分组算结果 order by : 按照什么样的顺序来查看返回的数据

5. 数据库三范式(必会)

第一范式:1NF 原子性,列或者字段不能再分,要求属性具有原子性,不可再分解; 第二范式:2NF 唯一性,一张表只说一件事,是对记录的惟一性约束,要求记录有惟 一标识, 第三范式:3NF 直接性,数据不能存在传递关系,即每个属性都跟主键有直接关系, 而不是间接关系。

6. 存储引擎 (高薪常问)

1.MyISAM 存储引擎

主要特点: MySQL5.5 版本之前的默认存储引擎 支持表级锁(表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁); 不支持事务,外键。 适用场景:对事务的完整性没有要求,或以 select、insert 为主的应用基本都可以选用 MYISAM。在 Web、数据仓库中应用广泛。 特点: 1、不支持事务、外键 2、每个 myisam 在磁盘上存储为 3 个文件,文件名和表名相同,扩展名分别是 .frm -------存储表定义 .MYD --------MYData,存储数据 .MYI --------MYIndex,存储索引35 2.InnoDB 存储引擎 主要特点: MySQL5.5 版本之后的默认存储引擎; 支持事务; 支持行级锁(行级锁是 Mysql 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加 锁); 支持聚集索引方式存储数据。

7.数据库事务(必会)

1.事务特性 原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。 一致性:事务的执行使得数据库从一种正确状态转换成另一种正确状态 隔离性:在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务, 持久性:事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障, 事务的处理结果也会得到保存。

2.隔离级别

(1)读未提交(read Uncommited): 在该隔离级别,所有的事务都可以读取到别的事务中未提交的数据,会产生脏读问题,在项 目中基本不怎么用, 安全性太差;

(2) 读已提交(read commited): 这是大多数数据库默认的隔离级别,但是不是 MySQL 的默认隔离级别;这个隔离级别满足 了简单的隔离要求:一个事务只能看见已经提交事务所做的改变,所以会避免脏读问题; 由于一个事务可以看到别的事务已经提交的数据,于是随之而来产生了不可重复读和虚读等 问题(下面详细介绍这种问题,结合问题来理解隔离级别的含义);

(3 ) 可重复读(Repeatable read): 这是 MySQL 的默认隔离级别,它确保了一个事务中多个实例在并发读取数据的时候会读取 到一样的数据;不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简 单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当 用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB 和 Falcon 存储引擎通 过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。 (4) 可串行化(serializable):36 事物的最高级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之, 它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,一 般为了提升程序的吞吐量不会采用这个;

8.索引

1. 索引的概念和优点(了解)

概念: 索引存储在内存中,为服务器存储引擎为了快速找到记录的一种数据结构。索引的主要 作用是加快数据查找速度,提高数据库的性能。 优点: (1) 创建唯一性索引,保证数据库表中每一行数据的唯一性 (2) 大大加快数据的检索速度,这也是创建索引的最主要的原因 (3) 加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 (4) 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

2. 索引的分类(必会)

(1) 普通索引:最基本的索引,它没有任何限制。

(2) 唯一索引:与普通索引类似,不同的就是索引列的值必须唯一,但允许有 空值。如果是组合索引,则列值的组合必须唯一。

(3) 主键索引:它是一种特殊的唯一索引,用于唯一标识数据表中的某一条记 录,不允许有空值,一般用 primary key 来约束。

(4) 联合索引(又叫复合索引):多个字段上建立的索引,能够加速复合查询 条件的检索。

(5) 全文索引:老版本 MySQL 自带的全文索引只能用于数据库引擎为 MyISAM 的数据表,新版本 MySQL 5.6 的 InnoDB 支持全文索引。默认 MySQL 不支持中文全文检索,可以通过扩展 MySQL,添加中文全文检索或为中文内容表提供 一个对应的英文索引表的方式来支持中文。

3. 索引的底层实现原理(高薪常问)

索引是在 Mysql 的存储引擎(InnoDB,MyISAM)层中实现的, 而不是在服务层实现 的. 所以每种存储引擎的索引都不一定完全相同, 也不是所有的存储引擎都支持所有的索引 类型的, Mysql 目前提供了以下 4 种索引: B+Tree 索引: 最常见的索引类型, 大部分索引都支持 B+树索引. Hash 索引: 只有 Memory 引擎支持, 使用场景简单. R-Tree 索引(空间索引): 空间索引是 MyISAM 引擎的一个特殊索引类型, 主要地理 空间数据, 使用也很少. S-Full-text(全文索引): 全文索引也是 MyISAM 的一个特殊索引类型, 主要用于全 文索引, InnoDB 从 Mysql5.6 版本开始支持全文索引

写在最后:最近有小伙伴私信笔者,想要数据库的相关面试题,笔者在这准备了一些,希望能够给大家带来帮助。笔者小,中,大厂均有面试经历,坚持每日分享全栈开发知识,希望能够和大家共同进步。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值