面试小知识--数据库

一.Mysql

     1.SQL的select语句的完整执行顺序

            1.from子句组装来自不同数据源的数据

            2.where子句基于指定条件进行筛选

            3.group  by  子句将数据划分为多个分组

            4.使用聚合函数进行计算

            5.使用having子句进行筛选分组

            6.计算所有表达式

             7.select 字段

             8.order  by对结果集进行排序

2.SQL聚合函数

        1.聚合函数是对一组进行计算并返回单一值的函数,经常与select语句中的使用

              1)avg():返回平均值 ,空值忽略

               2)count():返回指定的个数

              3)max():  返回最大值

               4)min():返回最小值

               5)sum():返回指定数据和

               6)group by():数据分,对group by之后的组进行聚合函数得到运算,计算每一组的值。

3.SQL之连接查询

               左连接:以左表为基准查询  右表和左表匹配显示   不匹配显示为null

               右连接:以右表为基准查询   右边全部显示  左表匹配的才显示相应的字段 不匹配  显示为null

               全连接:  先以左表进行左外连接  ,在以右表进行右外连接

                内连接:    显示表之间连接匹配所有行

4.SQL注入

               sql语句恒成立

               防止sql注入的方式:

                     1.预编译语句                 2.Mybatis框架中的mapper方式中的#也能很大程度防止sql注入

5.mysql性能优化

              1.当只要一行数据时使用limit 1

               2.选择正确的数据库引擎

               3.not exists  代替  not  in      

                   not  exists  可以发挥索引的作用    not  in不能使用索引   not  in最慢的方式要同每条记录进行比较,数据量大的情况不建议使用这种方式

              4.对操作符进行优化,尽量不采用不利于索引的操作符

比如:    in   not in      is  null    is not  null

 

6.Mysql架构器中的各个模块都是什么?

             1)连接管理与安全验证是什么?

                    每个客户端都会建立一个与服务器连接的线程,服务器会有一个线程池来管理这些连接  如果客户端接到mysql数据库还需要进行验证,包括用户名,密码,主机信息

           2)解析器是什么?

                   解析器的作用主要是  分析查询语句,最终生成解析树;解析器首先对查询语句进行分析,分析语法是否有问题。还有解析器会查询缓存,如果在缓存中有对应语句,就返回查询结果不进行接下来的优化操作。前提是缓存中的数据没有被修改,当然入锅被修改了也会被清出缓存

        3)优化器怎么用

              优化器主要对查询语句进行优化选择,包括选择适合的索引,数据的读取方式,包括获取查询的开销信息,统计信息等,这是为什么图中会有优化器指向存储引擎的箭头

    4)执行器什么?

              执行器包括查询语句,返回查询结果,生成执行计划包括与存储引擎的一些处理操作

 

7.SQL事务介绍

            一组命令都执行或者都不执行

             事务的四大特性:

                  ACID 原子性(Atomicity),一致性(Correspondence),隔离性(lslation),持久性(Durability)。

               原子性:整个事务中的操作要么全部完成,要么全不完成,不可能停止在中间的某环节。事务发生回滚,就像没执行过一样

              一致性:在事务开始和结束后 数据库的完整性没有被破坏

              隔离性:隔离状态执行事务,他们好像是系统给定的时间内执行的唯一操作。如果有两个事务,运行在 相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务,防止串行化,以及事务间的操作混淆。

           持久性:在事务完成以后,该事务对数据库所做的更改便持久的保存在数据之中

 

8. 事务的四种隔离级别

   隔离级别          脏读   不可重复读    幻读

    读未提交         是            是               是

    读已提交         否            是               是

    可重复读         否           否                是

     串行读            否           否                否

 读未提交:   读未提交就是脏读      事务可以读取其他事务未提交的数据

 读已提交:   事务在未提交所做的修改其他事务是不可见的

可重复读:   保证同一个事务的多次查询的结果一致

客串化:   可串行化就是保证读取的范围内没有新的数据的插入,比如事务第一次查询得到的某个范围的数据,第二次查询2也得到相同范围的数据,中间没有新的数据插入到该范围内。

posted @ 2022-06-30 10:58  李文浩learning  阅读(28)  评论(0)    收藏  举报