基础面试题

目录

MySql

1.连接查询

2.聚合函数

3.SQL 关键字

1.分页 (Iimit)

2.倒序 (order by)

3.分组  (group by)

4.去重  (distinct)

4. SQL Select 语句完整的执行顺序:

5. ★数据库三范式

6. 存储引擎

7.★数据库事务

7.1. ★事务特性: ACID

7.2. ★事务隔离级别

8.★索引

8.1. ★索引的概念和优点

8.2. 索引的分类

8.3. ★索引的底层实现原理

 9.★MySql Explain优化

9.1 select_type列

9.2 table列

9.3 ★type 列

9.4 key列

9.5 key_len列

9.6 ref列

9.7 rows列

9.8 filtered列

9.9 Extra列


MySql

1.连接查询(以小表为基准)[先查小表,根据小表遍历大表]

             1.左连接 left join

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

             2.右连接 right join

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

2.聚合函数

            聚合函数:SQL中提供的可以用来统计、计算、求最值等

            COUNT:     统计行的数量

                SUM:   获取组的和

                 AVG:   计算组的平均值

                MAX:   计算组的最大值 

                 MIN:   计算组的最小值 

3.SQL 关键字

                1.分页 (Iimit)

              SELECT * FROM students LIMIT 100,6;

              查询学生表中所有数据,跳过100条,从第101条开始显示,取6条。

                2.倒序 (order by)[ desc 倒序 大到小 ; asc 正序 小到大]

              SELECT * FROM students ORDER BY age DESC, id DESC;

              查询学生表中所有数据,根据 年龄 倒序排序,年龄相等则根据 ID 倒序排序。

                3.分组  (group by)

              SELECT sex , count(*) FROM students  GROUP BY sex;

              查询学生表的性别和每组的数量,根据sex进行分组

                4.去重  (distinct)

              SELECT DISTINCT name FROM students;

              查询学生表的姓名并去除重复的然后返回

4. SQL Select 语句完整的执行顺序:

 form→ left join→ on→ where→ group by→ having→ select→ avg()/sum()→ order by→   asc/desc→ limit 

  1. FROM: 指定查询的数据来源,即从哪个表或视图中检索数据。

  2. LEFT JOIN (或其他类型的JOIN): 用于将多个表连接起来,形成更大的数据集。LEFT JOIN 会返回左表中的所有记录,即使右表中没有匹配的记录。

  3. ON: 在JOIN子句中,用于指定连接条件,即哪些列的值需要相等以形成连接。

  4. WHERE: 用于过滤记录,只保留满足指定条件的行。

  5. GROUP BY: 当使用聚合函数如SUM(), AVG()时,用于将数据分组。

  6. HAVING: 类似于WHERE子句,但是作用于聚合操作的结果,用于过滤掉不满足条件的分组。

  7. SELECT: 选择需要返回的列。如果使用了聚合函数或分组,SELECT列表中的非聚合列必须出现在GROUP BY子句中。

  8. AVG()/SUM() (或其他聚合函数): 用于计算每组的平均值、总和等。

  9. ORDER BY: 按照一列或多列的值对结果进行排序。

  10. ASC/DESC: 指定排序的方向,ASC为升序,DESC为降序。

  11. LIMIT: 限制返回的行数,常用于分页查询。

5. 数据库三范式

第一范式:列或字段要有原子性不可再分解

第二范式:非主键字段必须依赖于主键字段,不存在部份依赖,必须有主键字段(解决的冗余)

第三范式:非主键字段不能依赖于其他非主键字段,(解决的冗余)

6. 存储引擎

MyISAM 存储引擎 与 InnoDB 引擎区别?

1. 事务支持MyISAM 不支持事务处理,而 InnoDB 支持事务处理。

2. 锁定机制(锁的粒度)MyISAM 在最低支持表级锁。而 InnoDB 支持行级锁,不会对整个表进行锁定,可以减少锁定冲突和死锁的发生。

3. 并发性能:在并发性能方面,InnoDB 要优于 MyISAM。由于 InnoDB 支持行级锁定和事务处理,因此在高并发情况下,InnoDB 的并发性能更高。

7.数据库事务

    7.1. 事务特性: ACID
  • A原子性。多条SQL要么同时成功,要么同时失败

  • C一致性。事务执行前后,数据状态是一致的

  • I隔离性。每个事务都是单独的个体,事务之间各自的执行结果互不影响

  • D持久性。事务一旦结束,对数据库的改变将是永久性的,无法再次撤回

    7.2. 事务隔离级别
问题描述隔离级别
脏读一个事务读取到另一个事务还未提交的数据read-commited(读未提交)
不可重复读一个事务内多次读取一行数据的内容,其结果不一致

repeatable-read(读已提交)

   针对 update delete

幻读一个事务内多次读取一张表中的内容,其结果不一致

serialized-read(可重复读)

           针对 insert

效率慢,无安全问题同一时间只能有一个事务进行serializable(可串行化)

 InnoDB 和 Falcon 存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

8.索引

8.1. 索引的概念和优点

概念:

索引存储在内存中,为服务器存储引擎为了快速找到记录的一种数据结构。索引的主要作用是加快数据查找速度,提高数据库的性能。 空间换时间

优点:加快查询效率

缺点1.占用内存空间       2.影响增删改,效率低下

8.2. 索引的分类

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

(2) 唯一索引:与普通索引类似,不同的就是索引列的值必须唯一,但允许有空值。(会员表里面的手机号,身份证号

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

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

(5) 全文索引:老版本 MySQL 自带的全文索引只能用于数据库引擎为

8.3. 索引的底层实现原理

Mysql 目前提供了以下 4 种索引:

B+Tree 索引: 最常见的索引类型, 大部分索引都支持 B+树索引.

Hash 索引: 只有 Memory 引擎支持, 使用场景简单.

R-Tree 索引(空间索引): 空间索引是 MyISAM 引擎的一个特殊索引类型, 主要地理空间数据, 使用也很少.

S-Full-text(全文索引): 全文索引也是 MyISAM的一个特殊索引类型,

B树与B+树的主要区别:(高薪面试题)

  1. 存储数据的位置:  
    B树: 数据既存储在所有节点中(叶子节点和非叶子节点都有数据

    B+树: 所有的数据记录都存储在叶子节点中非叶子节点仅包含索引信息。叶子节点包含了完整的数据和索引键。

  2. 叶子节点之间的链接:

    B树: 叶子节点之间没有链接。

    B+树: 叶子节点之间通过指针相互链接,形成一个链表循环链表,这使得范围查询和遍历变得高效。

 9.MySql Explain优化

9.1 select_type列 :"select_type"列是用来描述查询的类型
9.2 table列 :"table"列用于表示查询所涉及的表或派生表的名称。
9.3 type 列 ("type"列用于表示访问表时所采用的访问类型。)

下面是常见的"type"值及其含义:

  1. const: 表示通过索引只能匹配到一行数据。 explain select * from student where id = 1688

  2. eq_ref: 表示使用了等值连接(例如,使用主键或唯一索引连接表)。explain SELECT * FROM student s1 JOIN student s2 ON s1.id = s2.id WHERE s1.age = 25;

  3. ref: 表示使用了非唯一索引进行查找,并返回匹配的多行或一行数据。 explain select * from constudent where name = '张68'

  4. eqrange: 表示使用了索引进行范围查找,例如使用比较符(>, <, BETWEEN)或IN操作符。 explain select * from student where age < 1688

  5. index: 表示全索引扫描,也就是说用了某一个索引的全部, 通常发生在查询使用索引覆盖的情况下。explain select count(*) from student ;explain select sum(age) from student

  6. all: 表示全表扫描,即没有使用索引,需要遍历整个表进行查询。 explain select * from student

"type"列的结果是一个逐渐优化的输出,从最优到最差。尽可能选择更快,更有效的访问方法。                                                  

9.4 key列 :在MySQL的EXPLAIN查询结果中,"key"列用于表示用于访问表的索引的名称。它显示了优化器选择的用于访问表的索引的名称,或者标识没有使用索引。
9.5 key_len列 :"key_len"列用于表示索引字段的最大长度。它显示了优化器使用的索引字段的最大长度,以字节为单位。
9.6 ref列 :在MySQL的EXPLAIN查询结果中,"ref"列用于表示连接条件所引用的列或常量。它显示了查询中使用的引用,用于连接表或进行进一步的过滤。
9.7 rows列 :在MySQL的EXPLAIN查询结果中,"rows"列用于表示优化器估计的扫描或访问的行数。它显示了查询执行过程中预计要处理的行数。
9.8 filtered列 :"filtered"列用于表示查询结果经过表过滤后的预计百分比。它显示了查询条件对表数据的过滤效果。"filtered"列的值范围从0到1之间,其中1表示所有行都满足查询条件,0表示没有行满足查询条件。
9.9 Extra列 :"Extra"列提供了关于执行计划中其他附加信息的说明。该列包含了一些额外的操作、提示和优化器的相关信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341979.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《web应用技术》第十次作业

将自己的项目改造为基于vue-cli脚手架的项目&#xff0c;页面有导航&#xff0c;学会使用router。 <el-aside width"200px" style"background-color: aliceblue;"> <el-menu :default-openeds"[1]" style"background-color:rgb(1…

【数据结构】排序(直接插入、折半插入、希尔排序、快排、冒泡、选择、堆排序、归并排序、基数排序)

目录 排序一、插入排序1.直接插入排序2.折半插入排序3.希尔排序 二、交换排序1.快速排序2.冒泡排序 三、选择排序1. 简单选择排序2. 堆排序3. 树排序 四、归并排序(2-路归并排序)五、基数排序1. 桶排序&#xff08;适合元素关键字值集合并不大&#xff09;2. 基数排序基数排序的…

电风扇如何实现跌倒断电保护功能

电风扇作为日常生活中常用的家电产品&#xff0c;为了提升安全性能&#xff0c;在设计上通常会考虑加入跌倒断电保护功能。其中&#xff0c;光电倾倒开关是实现跌倒断电保护功能的关键组件之一。 光电倾倒开关内置红外发光二极管和光敏接收器&#xff0c;其工作原理非常巧妙。…

MySQL之查询性能优化(六)

查询性能优化 查询优化器 9.等值传播 如果两个列的值通过等式关联&#xff0c;那么MySQL能够把其中一个列的WHERE条件传递到另一列上。例如&#xff0c;我们看下面的查询: mysql> SELECT film.film_id FROM film-> INNER JOIN film_actor USING(film_id)-> WHERE f…

使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱

使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱 在大数据处理和分析的场景中&#xff0c;Hadoop MapReduce是一种常见且高效的工具。本文将展示如何使用Hadoop MapReduce来分析邮件日志&#xff0c;提取邮件的发送状态&#xff08;成功、失败或退回&#xff09;和…

企业微信hook接口协议,ipad协议http,内部联系人备注修改

内部联系人备注修改 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"1688855749266556","vid":1688856554448765,"remark":"备注啦啦啦22222","des&quo…

软件测试——蓝桥杯笔记(自用)

Before和BeforeClass&#xff0c;在测试前&#xff0c;初始化Driver&#xff0c;BeforeClass适用于静态方法 After和AfterClass&#xff0c;在测试后&#xff0c;关闭Driver&#xff0c;AfterClass适用于静态方法 自动化测试记得使用BeforeClass&#xff0c;AfterClass 单元…

2004NOIP普及组真题 2. 花生采摘

线上OJ&#xff1a; 【04NOIP普及组】花生采摘 核心思想&#xff1a; 1、本题为贪心即可。 2、因为本题严格限制了顺序&#xff0c;所以先把每个节点的花生数量按降序排序。然后逐一判断下一个花生是否需要去采摘即可 3、每一次采摘完&#xff0c;记录耗时 t 以及采集的花…

手机相册的排列方式探讨

不论你是不是程序员&#xff0c;你一定留意过一个问题&#xff1a;相册 App 基本都将图片裁剪成了居中的 1:1 正方形。那么手机相册 App&#xff0c;为什么要将图片切割成 1:1 正方形&#xff0c;然后以网格排列&#xff1f;是行业标准吗&#xff1f; 自适应图片宽度的图库&a…

Stable Diffusion——四种模型 LoRA(包括LyCORIS)、Embeddings、Dreambooth、Hypernetwork

目前 Stable diffusion 中用到主要有四种模型&#xff0c;分别是 Textual Inversion &#xff08;TI&#xff09;以 Embeddings 为训练结果的模型、Hypernetwork 超网络模型、LoRA&#xff08;包括 LoRA 的变体 LyCORIS&#xff09;模型、Dreambooth 模型。 视频博主 koiboi 用…

Linux中Apache网站基于Http服务的访问限制(基于地址/用户)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月3日11点44分 &#x1f004;️文章质量&#xff1a;95分 为了更好地控制对网站资源的访问&#xff0c;可…

用 Axios 封装一个双 token 无感刷新

为什么要用双Token无感刷新&#xff0c;它解决了什么问题&#xff1f; 为了保证安全性&#xff0c;后端设置的Token不可能长期有效&#xff0c;过了一段时间Token就会失效。而发送网络请求的过程又是需要携带Token的&#xff0c;一旦Token失效&#xff0c;用户就要重新登陆&…

python书上的动物是啥

Python的创始人为Guido van Rossum。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;做为ABC语言的一种继承。之所以选中Python作为程序的名字&#xff0c;是因为他是一个叫Monty Python…

C# 判断字符串不等于空的示例

在C#中&#xff0c;要判断一个字符串是否不等于空&#xff08;即它既不是null也不是空字符串""&#xff09;&#xff0c;方法有如下几种&#xff0c;如下。 方法1 使用逻辑运算符和string.IsNullOrEmpty方法 string myString "123"; // 假设要检查的字…

重邮803计网概述

目录 一.计算机网络向用户提供的最重要的功能 二.互联网概述 1.网络的网络 2.计算机网络的概念 3. 互联网发展的三个阶段 4.制订互联网的正式标准要经过以下的四个阶段 5.互联网的组成&#xff08;功能&#xff09; 6.互联网功能 7.互联网的组成&#xff08;物理&#…

java自学阶段二:JavaWeb开发50(Spring和Springboot学习)

Spring、Springboot基础知识学习 目录 学习目标Spring基础概念IOC控制反转DI依赖注入事务管理AOP面向切面编程Spring案例说明&#xff08;Postman使用、Restful开发规范、lombok、Restful、nginx了解&#xff09; 一&#xff1a;学习目标&#xff1a; 1&#xff09;了解Sprin…

将小爱音箱接入 ChatGPT 和豆包ai改造成专属语音助手

这个GitHub项目&#xff0c;mi-gpt&#xff0c;旨在将小爱音箱和米家设备与ChatGPT和豆包集成&#xff0c;有效地将这些设备转变为个性化语音助手。以下是对其功能和设置的详细分析&#xff1a; 主要特点 角色扮演&#xff1a;该项目允许小爱适应不同的角色&#xff0c;如伴侣…

HCIA-WLAN实验-二层旁挂组网

目录 前言&#xff1a;拓扑说明创建新拓扑配置网络互通SW1上配置VLAN10 20 30SW1上放行对应的VLANSW2上创建vlan 10 20并在对应接口放行VLAN在AC上创建vlan10并放行对应接口在SW1上创建vlanif20和vlanif30&#xff0c;并配置对应的IP在AC上创建vlanif10并配置IP在路由器AR上配置…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景&#xff1a; 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】&#xff1a; 形如SyntaxError: EOL while scanning string literal&#xff0c;以红色波浪线形式在Pycharm下出现 过程&#xff1a; 问题概述&#xff1a; 简单…

[数据集][目标检测]道路圆石墩检测数据集VOC+YOLO格式461张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;462 标注数量(xml文件个数)&#xff1a;462 标注数量(txt文件个数)&#xff1a;462 标注类别…