首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2020年MySQL数据库面试题总结(50道题含答案解析)

BLOB 和 TEXT 类型之间唯一区别在于对 BLOB 进行排序和比较时区分大小写,对 TEXT 不区分大小写。...加速之间连接 使用分组和排序子句进行数据检索,可以显著减少查询中分组和排序时间 (2)索引对数据库系统负面影响是什么?...外连接  其结果集中不仅包含符合连接条件,而且还会包括左、右或两个所有数据,这三种情况依次称之为左外连接,右外连接,和全外连接。...左外连接 也称左连接,左为主表,左所有记录都会出现在结果集中,对于那些并没有匹配记录,仍然要显示,右边对应那些字段以NULL 来填充。...要同时修改数据库两个不同,如果它们不是一个事务的话,当第一个修改完,可能第二个修改过程中出现了异常而没能修改,此时就只有第二个依旧是未修改之前状态,而第一个已经被修改完毕。

3.9K20

听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(常用查询,正则表达式,运算符)

MySQL 查询,当名字比较长或者内某些字段比较,为了方便书写或者多次使用相同,可以给字段列或设置别名。...优先级最高,而“:=”优先级最低。 运算符优先级 ? 6、连接查询 MySQL 连接查询,通常都是将来自两个或多个结合起来,基于这些之间共同字段,进行数据拼接。...(1)内连接 MySQL 连接就是两张或多张同时符合某种条件数据记录组合。通常在FROM 子句中使用关键字 INNER JOIN 来连接多张使用 ON 子句设置连接条件。...左连接以左侧为基础,接收左所有,并用这些与右侧参考记录进行匹配,也就是说匹配左所有以及右符合条件。...右连接跟左连接正好相反,它是以右为基础,用于接收右所有,并用这些记录与左进行匹配。也就是说匹配右每一及左符合条件记录。

3.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

一文搞定MySQL多表查询连接(join)

对应关系:关键字段中有重复为多表,没有重复为一对应关系 一对一关系 一对一关系,A 最多只能匹配于 B ,反之亦然。...内连接分以下几种: 等值连接连接条件中使用等于号(=)运算符比较连接,其查询结果列出被连接所有列,包括其中重复列。...自然连接连接条件中使用等于(=)运算符比较连接,但它使用选择列表指出查询结果集合中所包括列,删除连接重列。...而采用外连接,它返回到查询结果集合不仅包含符合连接条件,而且还包括左(左外连接)、右(右外连接)或两个边接(全外连接)所有数据。...联结两个,实际上做是将第一个每一第二个每一配对。WHERE 子句作为过滤条件,它只包含那些匹配给定条件(这里是联结条件)

15.5K20

MysqlSQL优化指北

由于联合索引B+树是按照索引先后顺序进行排序,所以索引idx_name_birthday_phone_number,先按照name列进行排序,如果name列相同,则按照birthday...匹配左边列 因为B+树数据页和记录先是按照name列排序name列相同情况下才使用birthday列进行排序,也就是说name列不同记录birthday可能是无序。...索引就用不上了,因为name相同记录先按照birthday进行排序,birthday相同记录才按照phone_number进行排序。...字段排列就会: 先比较字符串第一个字符,第一个字符小那个字符串就比较小 如果两个字符串第一个字符相同,那就再比较第二个字符,第二个字符比较那个字符串就比较小 如果两个字符串第二个字符也相同...减少对时间 两阶段锁协议: InnoDB事务锁是需要时候才加上,但并不是不需要了就立刻释放,而是要等到事务结束才释放。

95820

MySQL 文档翻译】理解查询计划

可以不读取所有情况下对一个巨大执行查询; 可以比较每个组合情况下执行涉及多个连接....它按照 MySQL 处理语句读取它们顺序排列. 这意味着 MySQL 从第一个读取一, 然后第二个中找到匹配, 然后第三个, 以此类推....因为只有一, 所以这一可以被优化器其余部分视为常量. const 非常快, 因为它们只被读取一次.当您将 PRIMARY KEY 或 UNIQUE 索引所有部分与常量值进行比较就是使用...Uses index 没有出现在 Extra 列.当查询仅使用属于单个索引,MySQL 可以使用此连接类型.ALL(全扫描了)对先前每个组合进行扫描....rows 列是来自 MySQL 连接优化器有根据猜测. rows 通过将产品与查询返回实际行数进行比较, 检查这些数字是否更接近事实.

2.1K20

Oracle数据库之操作符及函数

from t_score where score>=70 and cid = '07'; ①、intersect 返回两个查询公共; ②、union:返回两个查询不重复所有;这里面可以是一个数据...(mysql是另外联合查询--不是一个) ③、minus:返回从第一个查询结果中排除第二个查询中出现;(第一个结果查找不满足第二个) 6、连接操作符:     将多个字符串或数据合并成一个字符串...二、SQL函数:     用于执行特殊操作函数; 1、分类:   单行、 分组、分析; 2、单行函数分类:   从查询每一返回一个;   字符、数字、日期、转换、其他; 3、字符函数:...,为空指定0; nvl2:不为空指定2,为空指定3; NullIF:相等为空,否则为前者 --查询员工所有人姓名,工资+奖金(奖金没有的时候,由null转为0)---nvl转换空函数...:     根据一组来计算聚合;用于计算完成聚集累计排名、移动平均数等; row_number:返回连续排位,不论是否相等; rank:具有相等值排位相同,序数随后跳跃; dense_rank

1.2K20

EXPLAIN 使用分析

type 表示连接类型 possible_keys 表示查询,可能使用索引 key 表示实际使用索引 key_len 索引字段长度 ref 列与索引比较 rows 扫描出行数(估算行数...id相同时,执行顺序由上至下; 如果是子查询,id序号会递增,id越大优先级越高,越先被执行; id如果相同,可以认为是一组,从上往下顺序执行;在所有组,id越大,优先级越高,越先执行。...ref: 非唯一性索引扫描,返回匹配某个单独所有,本质上也是一种索引访问,它返回所有匹配某个单独,可能会找多个符合条件,属于查找和扫描混合体。...ref 列与索引比较,表示上述连接匹配条件,即哪些列或常量被用于查找索引列上 rows 根据统计信息以及索引选用情况,大致估算出找到所需记录所需要读取行数 Extra 包含不适合在其他列显示...而不是按照表内索引顺序进行读取。MySQL无法利用索引完成排序操作称为“文件排序” Using temporary 使用了临时保存中间结果,mysql查询结果排序时使用临时

97120

MysqlSQL性能优化指北

由于联合索引B+树是按照索引先后顺序进行排序,所以索引idx_name_birthday_phone_number,先按照name列进行排序,如果name列相同,则按照birthday...列进行排序,如果birthday列相同,则按照phone_number 进行排序。...匹配左边列 因为B+树数据页和记录先是按照name列排序name列相同情况下才使用birthday列进行排序,也就是说name列不同记录birthday可能是无序。...,那就再比较第二个字符,第二个字符比较那个字符串就比较小 如果两个字符串第二个字符也相同,那就接着比较第三个字符,依此类推 所以这样是可以用到索引: CopySELECT * FROM person_info...减少对时间 两阶段锁协议: InnoDB事务锁是需要时候才加上,但并不是不需要了就立刻释放,而是要等到事务结束才释放。

85310

Java企业面试——数据库

三者共同点是都返回符合连接条件和查询条件(即:内连接数据。不同点如下: 左外连接返回不符合连接条件单符合查询条件数据。 右外连接返回不符合连接条件单符合查询条件数据。...全外连接返回不符合连接条件单符合查询条件数据,并且还返回不符合连接条件单符合查询条件数据。...Oracle、MySQL均不支持,其作用是:找出全外连接和内连接之间差异所有。这在数据分析中排错中比较常用。也可以利用数据库集合操作来实现此功能。...自然连接无需指定连接列,SQL会检查两个是否相同名称列,且假设他们连接条件中使用,并且连接条件仅包含一个连接列。...或多表连接是限制连接形成最终中间返回结果约束。 从这里可以看出,将WHERE条件移入ON后面是不恰当。推荐做法是: ON只进行连接操作,WHERE只过滤中间记录。

1.5K40

MySQL-多表操作

但是MySQL,CROSS JOIN与INNER JOIN(或JOIN)语法功能相同,都可以使用ON设置连接筛选条件,可以互换使用,但是此处不推荐读者将交叉连接与内连接混用 左外连接 左外连接是外连接查询一种...它用于返回连接关键字(RIGHT JOIN)右(主表)中所有的记录,以及左(从)符合连接条件记录。 当右某行记录在左没有匹配记录,左相关记录将设为空。...判断指定条件是否子查询语句返回结果集中。 然后根据比较结果完成相关需求操作。 子查询 当子查询结果是一条包含多个字段记录(一多列),称为子查询。...子查询结果必须全部与指定字段相等才满足WHERE指定条件。 行在相等比较(=或),各条件之间是与逻辑关系。 不等比较(或!),各条件之间是或逻辑关系。...进行其他方式比较,各条件之间逻辑关系包含两种情况。 因此,读者选取子查询比较运算符,要根据实际需求慎重选择。

3.2K20

MySQL优化总结

) 使用小而简单合适数据类型 a.字符串类型 固定长度使用char,非定长使用varchar,分配合适且足够空间 char查询,会把末尾空格去掉; b.小数类型 一般情况可以使用float或...这些都会导致严重性能开销 尽量将列设置为NOT NULL a.可为NULL列占用更多存储空间 b.可为NULL列,使用索引和比较,mySQL需要做特殊处理,损耗一定性能 建议:通常最好指定列为...而且操作代价很大 按数据存储结构分类: 1.聚簇索引 定义:数据物理顺序与列(一般是主键那一列)逻辑顺序相同,一个只能拥有一个聚集索引。...join 3.避免 SELECT *,从数据库里读出越多数据,那么查询就会变得越慢 4.尽可能使用 NOT NULL列,可为NULL列占用额外空间,且比较和使用索引需要特殊处理,影响性能...index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。ALL:对于每个来自于先前组合,进行完整扫描。

1.7K40

explain 深入剖析 MySQL 索引及其性能优化指南

5.possible_keys:MySQL搜索数据记录可以选用各个索引名字。...没有找到理想索引,因此对于从前面每一个组合,MYSQL检查使用哪个索引,并用它来从返回。...这是使用索引最慢连接之一。 Using filesort 看到这个时候,查询就需要优化了。MySQL需要进行额外步骤来发现如何对返回排序。...如果不想返回全部,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型解释(按照效率高低顺序排序)。 system 只有一 system 。...index 这个连接类型对前面的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于数据)。 ALL 这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免。

1.7K60

MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

BLOB 和 TEXT 类型之间唯一区别在于对 BLOB 进行排序和比较时区分大小写,对 TEXT 不区分大小写。...加速之间连接 使用分组和排序子句进行数据检索,可以显著减少查询中分组和排序时间 (2)索引对数据库系统负面影响是什么?...外连接 其结果集中不仅包含符合连接条件,而且还会包括左、右或两个所有数据,这三种情况依次称之为左外连接,右外连接,和全外连接。...左外连接,也称左连接,左为主表,左所有记录都会出现在结果集中,对于那些并没有匹配记录,仍然要显示,右边对应那些字段以NULL 来填充。...要同时修改数据库两个不同,如果它们不是一个事务的话,当第一个修改完,可能第二个修改过程中出现了异常而没能修改,此时就只有第二个依旧是未修改之前状态,而第一个已经被修改完毕。

2.6K11

2022 最新 MySQL 面试题

3、 页面锁: 开销和加锁时间界于锁和之间 ; 会出现死锁 ; 锁定粒度界于 锁和之间, 并发度一般。 2、MySQL 中有哪些不同表格?...BLOB 和 TEXT 类型之间唯一区别在于对 BLOB 进行排序和比较时区分大小 写, 对 TEXT 不区分大小写。...加速之间连接 使用分组和排序子句进行数据检索, 可以显著减少查询中分组和排序时间 2、 索引对数据库系统负面影响是什么?...要同时修改数据库两个不同, 如果它们不是一个事务的话, 当第一个修 改完, 可能第二个修改过程中出现了异常而没能修改, 此时就只有第二个依 旧是未修改之前状态, 而第一个已经被修改完毕。...答: 视图是一种虚拟, 具有和物理表相同功能。 可以对视图进行增, 改, 查, 操作, 视图通常是有一个或者多个或列子集。 对视图修改不影 响基本

8710

MySQL经典52题

页面锁:开销和加锁时间界于锁和之间;会出现死锁;锁定粒度界于锁和之间,并发度一般。2.Mysql中有哪些不同类型?...TEXT是一个不区分大小写BLOB。BLOB和TEXT类型之间唯一区别在于对BLOB进行排序和比较时区分大小写,对TEXT不区分大小写。...加速之间连接 使用分组和排序子句进行数据检索,可以显著减少查询中分组和排序时间索引对数据库系统负面影响是什么?...左外连接 也称左连接,左为主表,左所有记录都会出现在结果集中,对于那些并没有匹配记录,仍然要显示,右边对应那些字段以NULL来填充。...要同时修改数据库两个不同,如果它们不是一个事务的话,当第一个修改完,可能第二个修改过程中出现了异常而没能修改,此时就只有第二个依旧是未修改之前状态,而第一个已经被修改完毕。

7910

Mysql面试题

BLOB和TEXT类型之间唯一区别在于对BLOB进行排序和比较时区分大小写,对TEXT不区分大小写。...加速之间连接 使用分组和排序子句进行数据检索,可以显著减少查询中分组和排序时间 索引对数据库系统负面影响是什么?...对于查询很少涉及列或者重复比较列,不宜建立索引。...左外连接 也称左连接,左为主表,左所有记录都会出现在结果集中,对于那些并没有匹配记录,仍然要显示,右边对应那些字段以NULL来填充。...要同时修改数据库两个不同,如果它们不是一个事务的话,当第一个修改完,可能第二个修改过程中出现了异常而没能修改,此时就只有第二个依旧是未修改之前状态,而第一个已经被修改完毕。

1.1K51

MySQL从删库到跑路(五)——SQL查询

合并,两个对应列数和数据类型必须相同。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。...全连接: 全连接返回和右所有。当某行在另一个没有匹配行时,则另一个选择列表列包含空。如果之间有匹配,则整个结果集行包含基数据MySQL不支持全外连接。...:先对第一个和第二个按照两连接做查询,然后用查询结果和第三个连接查询,以此类推,直到所有的连接上为止,最终形成一个中间结果,然后根据WHERE条件过滤中间记录,根据SELECT指定返回查询结果...五、子查询 1、带IN关键字子查询 IN关键字进行子查询,内层查询语句仅仅返回一个数据列,数据列里将提供给外层查询语句进行比较操作。...ANY和SOME关键字是同义词,表示满足其中任一条件,允许创建一个表达式对子查询返回列表进行比较,只要满足内层子查询任何一个比较条件,就返回一个结果作为外层查询条件。

2.5K30

mysql explain用法和结果含义

for each Record(index map:#):没有找到理想索引,因此对于从前面每一个组合,MYSQL检查使用哪个索引,并用它来从返回。...这是使用索引最慢连接之一 Using filesort: 看到这个时候,查询就需要优化了。MYSQL需要进行额外步骤来发现如何对返回排序。...如果不想返回全部,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型解释(按照效率高低顺序排序) system 只有一:system。...因为只有一,这个实际就是常数,因为MYSQL先读这个然后把它当做常数来对待 eq_ref:连接MYSQL查询,从前面的,对每一个记录联合都从读取一个记录,它在查询使用了索引为主键或惟一键全部使用...这个类型严重依赖于根据索引匹配记录多少—越少越好 range:这个连接类型使用索引返回一个范围,比如使用>或<查找东西发生情况 index: 这个连接类型对前面的每一个记录联合进行完全扫描

1.5K10

这个MySQL优化原理剖析,比照X光还清楚

MySQL客户端和服务器之间通讯协议是“半双工”。 二、查询状态 对于MySQL连接,任何时刻都有一个状态,该状态表示了MySQL当前正在做什么。...如果无法命中缓存,就继续走到分析器一步,如果命中缓存就直接返回给客户端 。 如果使用查询缓存,进行读写操作时会带来额外资源消耗,如果在一个写多读少环境,缓存会频繁新增和失效。...这个过程任何错误都可能终止查询。 1. 语法解析器和预处理:首先MySQL通过关键字将SQL语句进行解析,生成一颗对应“解析树”。...Using where:列数据是从仅仅使用了索引信息而没有读取实际行动返回,这发生在对表全部请求列都是同一个索引部分时候,表示mysql服务器将在存储引擎检索后再进行过滤。...Using join buffer:改强调了获取连接条件没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个,那应该注意,根据查询具体情况可能需要添加索引来改进能。

66840

MySQL 系列】MySQL 语句篇_DQL 语句

也就是两个所有的所有可能组合。这相当于内连接没有连接条件或者连接条件永远为真。 如果一个有 m 和另一个有 n ,它们交叉连接返回 m * n 行数据。...内连接将第一个每一第二个每一进行比较,如果满足给定连接条件,则将两个组合在一起作为结果集中。...左连接以左数据行为基础,根据连接匹配右每一,如果匹配成功则将左和右组合成新数据返回;如果匹配不成功则将左和 NULL 组合成新数据返回。...2.3.5、运算符 BETWEEN BETWEEN 运算符确定一个是否介于某两个之间。BETWEEN 运算符常用于比较数字和日期类型数据。...2.3.8、操作符 EXISTS MySQL ,EXISTS 操作符用来判断一个子查询是否返回数据

13410
领券