sql查询语句(用SQL语句查询数据库中带有某个字段的所有表名)

2023-05-13 12:30:05 35

sql查询语句(用SQL语句查询数据库中带有某个字段的所有表名)

本文目录

用SQL语句查询数据库中带有某个字段的所有表名

1SQL是一种标准,但是大部分 SQL 数据库程序都拥有它们自己的私有扩展!每个数据库使用SQL语句查询数据库中带有某个字段的所有表名也不相同,下面分别以 MySQL、Oracle、SQLServer 查询语句与大家分享。

2MySQL数据库查询带有某个字段的所有表名:(1)精确查询语句如下:SELECT * FROM information_schema.columns WHERE column_name=’column_name’;(2)模糊匹配查询SELECT * FROM information_schema.columns WHERE column_name LIKE ’%column_name%’;

3Oracle数据库查询带有某个字段的所有表名:(1)精确查询语句如下:SELECT column_name,table_name FROM user_tab_columns WHERE column_name=’column_name’;(2)模糊匹配查询SELECT column_name,table_name,FROM user_tab_columns WHERE column_name LIKE ’%column_name%’;

4SQLServer数据库查询带有某个字段的所有表名:(1)精确查询语句如下:SELECT .syscolumns WHERE name LIKE ’%字段名%’)

mysql:一条SQL查询语句是如何执行的

本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。

在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么,可以帮助我们理解和解决这些问题。

一 MySQL 基础架构分析

1.1 MySQL 基本架构概览

下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。

先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用。

  • 连接器: 身份认证和权限相关(登录 MySQL 的时候)。
  • 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。
  • 分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。
  • 优化器: 按照 MySQL 认为最优的方案去执行。
  • 执行器: 执行语句,然后从存储引擎返回数据。

简单来说 MySQL 主要分为 Server 层和存储引擎层:

  • Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。
  • 存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始就被当做默认存储引擎了。

1.2 Server 层基本组件介绍

1) 连接器

连接器主要和身份认证和权限相关的功能相关,就好比一个级别很高的门卫一样。

主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。

2) 查询缓存(MySQL 8.0 版本后移除)

查询缓存主要用来缓存我们所执行的 SELECT 语句以及该语句的结果集。

连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。如果缓存 key 被命中,就会直接返回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓存起来,方便下一次调用。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。

MySQL 查询不建议使用缓存,因为查询缓存失效在实际业务场景中可能会非常频繁,假如你对一个表更新的话,这个表上的所有的查询缓存都会被清空。对于不经常更新的数据来说,使用缓存还是可以的。

所以,一般在大多数情况下我们都是不推荐去使用查询缓存的。

MySQL 8.0 版本后删除了缓存的功能,官方也是认为该功能在实际的应用场景比较少,所以干脆直接删掉了。

3) 分析器

MySQL 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛的,分析器也会分为几步:

第一步,词法分析,一条 SQL 语句有多个字符串组成,首先要提取关键字,比如 select,提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。

第二步,语法分析,主要就是判断你输入的 sql 是否正确,是否符合 MySQL 的语法。

完成这 2 步之后,MySQL 就准备开始执行了,但是如何执行,怎么执行是最好的结果呢?这个时候就需要优化器上场了。

4) 优化器

优化器的作用就是它认为的最优的执行方案去执行(有时候可能也不是最优,这篇文章涉及对这部分知识的深入讲解),比如多个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等。

可以说,经过了优化器之后可以说这个语句具体该如何执行就已经定下来。

5) 执行器

当选择了执行方案后,MySQL 就准备开始执行了,首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。

二 语句分析

2.1 查询语句

说了以上这么多,那么究竟一条 sql 语句是如何执行的呢?其实我们的 sql 可以分为两种,一种是查询,一种是更新(增加,更新,删除)。我们先分析下查询语句,语句如下:

select * from tb_student A where A.age=’18’ and A.name=’ 张三 ’;

结合上面的说明,我们分析下这个语句的执行流程:

  • 先检查该语句是否有权限,如果没有权限,直接返回错误信息,如果有权限,在 MySQL8.0 版本以前,会先查询缓存,以这条 sql 语句为 key 在内存中查询是否有结果,如果有直接缓存,如果没有,执行下一步。
  • 通过分析器进行词法分析,提取 sql 语句的关键元素,比如提取上面这个语句是查询 select,提取需要查询的表名为 tb_student,需要查询所有的列,查询条件是这个表的 id=’1’。然后判断这个 sql 语句是否有语法错误,比如关键词是否正确等等,如果检查没问题就执行下一步。
  • 接下来就是优化器进行确定执行方案,上面的 sql 语句,可以有两种执行方案:
    a.先查询学生表中姓名为“张三”的学生,然后判断是否年龄是 18。 b.先找出学生中年龄 18 岁的学生,然后再查询姓名为“张三”的学生。
    那么优化器根据自己的优化算法进行选择执行效率最好的一个方案(优化器认为,有时候不一定最好)。那么确认了执行计划后就准备开始执行了。
  • 进行权限校验,如果没有权限就会返回错误信息,如果有权限就会调用数据库引擎接口,返回引擎的执行结果。

2.2 更新语句

以上就是一条查询 sql 的执行流程,那么接下来我们看看一条更新语句如何执行的呢?sql 语句如下:

update tb_student A set A.age=’19’ where A.name=’ 张三 ’;

我们来给张三修改下年龄,在实际数据库肯定不会设置年龄这个字段的,不然要被技术负责人打的。其实条语句也基本上会沿着上一个查询的流程走,只不过执行更新的时候肯定要记录日志啦,这就会引入日志模块了,MySQL 自带的日志模块式 binlog(归档日志) ,所有的存储引擎都可以使用,我们常用的 InnoDB 引擎还自带了一个日志模块 redo log(重做日志),我们就以 InnoDB 模式下来探讨这个语句的执行流程。流程如下:

  • 先查询到张三这一条数据,如果有缓存,也是会用到缓存。
  • 然后拿到查询的语句,把 age 改为 19,然后调用引擎 API 接口,写入这一行数据,InnoDB 引擎把数据保存在内存中,同时记录 redo log,此时 redo log 进入 prepare 状态,然后告诉执行器,执行完成了,随时可以提交。
  • 执行器收到通知后记录 binlog,然后调用引擎接口,提交 redo log 为提交状态。
  • 更新完成。

这里肯定有同学会问,为什么要用两个日志模块,用一个日志模块不行吗?

这是因为最开始 MySQL 并没与 InnoDB 引擎( InnoDB 引擎是其他公司以插件形式插入 MySQL 的) ,MySQL 自带的引擎是 MyISAM,但是我们知道 redo log 是 InnoDB 引擎特有的,其他存储引擎都没有,这就导致会没有 crash-safe 的能力(crash-safe 的能力即使数据库发生异常重启,之前提交的记录都不会丢失),binlog 日志只能用来归档。

并不是说只用一个日志模块不可以,只是 InnoDB 引擎就是通过 redo log 来支持事务的。那么,又会有同学问,我用两个日志模块,但是不要这么复杂行不行,为什么 redo log 要引入 prepare 预提交状态?这里我们用反证法来说明下为什么要这么做?

  • 先写 redo log 直接提交,然后写 binlog,假设写完 redo log 后,机器挂了,binlog 日志没有被写入,那么机器重启后,这台机器会通过 redo log 恢复数据,但是这个时候 bingog 并没有记录该数据,后续进行机器备份的时候,就会丢失这一条数据,同时主从同步也会丢失这一条数据。
  • 先写 binlog,然后写 redo log,假设写完了 binlog,机器异常重启了,由于没有 redo log,本机是无法恢复这一条记录的,但是 binlog 又有记录,那么和上面同样的道理,就会产生数据不一致的情况。

如果采用 redo log 两阶段提交的方式就不一样了,写完 binglog 后,然后再提交 redo log 就会防止出现上述的问题,从而保证了数据的一致性。那么问题来了,有没有一个极端的情况呢?假设 redo log 处于预提交状态,binglog 也已经写完了,这个时候发生了异常重启会怎么样呢? 这个就要依赖于 MySQL 的处理机制了,MySQL 的处理过程如下:

  • 判断 redo log 是否完整,如果判断是完整的,就立即提交。
  • 如果 redo log 只是预提交但不是 commit 状态,这个时候就会去判断 binlog 是否完整,如果完整就提交 redo log, 不完整就回滚事务。

这样就解决了数据一致性的问题。

三 总结

  • MySQL 主要分为 Server 曾和引擎层,Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。
  • 引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。
  • 查询语句的执行流程如下:权限校验(如果命中缓存)---》查询缓存---》分析器---》优化器---》权限校验---》执行器---》引擎
  • 更新语句执行流程如下:分析器----》权限校验----》执行器---》引擎---redo log(prepare 状态---》binlog---》redo log(commit状态)

sql查询语句(用SQL语句查询数据库中带有某个字段的所有表名)

本文编辑:admin
sql查询语句 ,表
暂无评论,期待你的首评

更多文章:


如何从夏衍的作品分析理解夏衍先生?夏衍一共写了多少作品

如何从夏衍的作品分析理解夏衍先生?夏衍一共写了多少作品

本文目录如何从夏衍的作品分析理解夏衍先生夏衍一共写了多少作品如何从夏衍的作品分析理解夏衍先生夏衍(1900一1995),原名沈乃熙,字瑞先,浙江杭州人,中国著名文学,电影,戏剧作家和社会活动家。一九二七年即加入中国共产党,一九二九年同鲁迅先

2023年5月20日 20:00

酷狗音乐官网(酷狗音乐官网审查元素打不开了怎么回事)

酷狗音乐官网(酷狗音乐官网审查元素打不开了怎么回事)

今天给各位分享酷狗音乐官网审查元素打不开了怎么回事的知识,其中也会对酷狗音乐官网审查元素打不开了怎么回事进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录酷狗音乐官网审查元素打不开了怎么回事酷狗会员可以几个人登录

2024年2月16日 20:00

千千阙歌原唱(千千阙歌这个曲子的原唱是谁)

千千阙歌原唱(千千阙歌这个曲子的原唱是谁)

本文目录千千阙歌这个曲子的原唱是谁《千千阙歌》原唱是谁《千千阙歌》原唱是哥哥还是陈慧娴千千阙歌原唱是谁千千阙歌是谁原唱的张国荣,梅艳芳还是陈慧娴千千阙歌原唱歌曲千千阙歌原唱千千阙歌这个曲子的原唱是谁  《千千阙歌》该歌曲选用日本歌星近藤真彦

2023年7月4日 06:10

hr校园招聘网有用吗?哪个校园招聘网站好

hr校园招聘网有用吗?哪个校园招聘网站好

本篇文章给大家谈谈校园招聘网,以及hr校园招聘网有用吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录hr校园招聘网有用吗哪个校园招聘网站好今天接到一个叫这一步校园招聘网的客服说免费提供校招渠道,各位HR有用过这个网站吗真免费

2024年2月15日 13:10

默而识之成语解释?默而识之的意思是啥

默而识之成语解释?默而识之的意思是啥

本篇文章给大家谈谈默而识之,以及默而识之成语解释对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录默而识之成语解释默而识之的意思是啥默而识之,学而不厌的意思默而识之是成语吗“默而识之”众的“识”读什么意思是什么默而识之什么意思默

2024年7月24日 08:45

如何报考当地事业单位(怎么报考事业单位去哪个网站)

如何报考当地事业单位(怎么报考事业单位去哪个网站)

本文目录怎么报考事业单位去哪个网站如何考当地的事业编怎么报考当地的事业单位如何报考事业单位编制怎么报考事业编制事业单位怎么报考事业单位怎么考怎么报考事业单位去哪个网站 事业单位报名一般为各地的人力资源和社会保障网或人事考试网,大家一般直接搜

2023年11月19日 09:20

吐鲁番火焰山网(新疆的火焰山到底在哪里有什么吸引人的地方)

吐鲁番火焰山网(新疆的火焰山到底在哪里有什么吸引人的地方)

本文目录新疆的火焰山到底在哪里有什么吸引人的地方新疆吐鲁番真的有火焰山吗新疆的火焰山到底在哪里有什么吸引人的地方您好!我来回答这个问题火焰山在吐鲁番盆地的北缘,离吐鲁番市不太远。火焰山山体呈赤褐色,非常干燥,寸草不生。因在烈日炙烤下,炽热的

2023年4月18日 21:18

龚小京个人资料家世为什么回京东?龚小京近况

龚小京个人资料家世为什么回京东?龚小京近况

今天给各位分享龚小京个人资料家世为什么回京东的知识,其中也会对龚小京个人资料家世为什么回京东进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录龚小京个人资料家世为什么回京东龚小京近况龚晓京是京东老板娘吗龚小京的父

2024年4月11日 21:20

死海不死的秘密(为什么“死海”能不死)

死海不死的秘密(为什么“死海”能不死)

本文目录为什么“死海”能不死人们为什么叫死海又叫不死海为什么“死海”能不死死海,有“地球的肚脐”之称,其位于亚洲的西部地区,为西亚国家以色列和约旦之间的国界线,为东非大裂谷的北部延伸塌陷带,死海的的利桑半岛将该湖划分为两个大小深浅不同的湖盆

2023年4月26日 09:39

劳荣枝与法子英残忍杀害7人震惊全国,为何有律师愿意为其辩护?悍匪白宝山杀死两名狱友,是什么原因没有查到他

劳荣枝与法子英残忍杀害7人震惊全国,为何有律师愿意为其辩护?悍匪白宝山杀死两名狱友,是什么原因没有查到他

不解决会发生多大的问题,老人的感情怎么看无国籍者在南极杀害了另一个无国籍者,现实中不会出现,我们对失踪案件往往不是特别重视,世界上的国家“普

2023年2月25日 10:50

男生专用帅气头像?来推荐下那些帅气的头像

男生专用帅气头像?来推荐下那些帅气的头像

大家好,关于帅气头像很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于男生专用帅气头像的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录男生专用帅气头像来推

2024年5月7日 22:50

小学春节的古诗30首(2021小学春节的古诗)

小学春节的古诗30首(2021小学春节的古诗)

本文目录2021小学春节的古诗小学春节的古诗30首简单春节古诗大全小学2021小学春节的古诗 春节 是我国的传统节日,也可以说是我们最重要的节日,所以关于春节的古诗也是流传了很多至今的,你能说出多少春节古诗呢?下面我给大家分享一些20

2023年7月3日 21:29

被长期语言暴力的人,承受不住会疯掉吗?远嫁的女人究竟是为了什么

被长期语言暴力的人,承受不住会疯掉吗?远嫁的女人究竟是为了什么

承受不住会疯掉吗远嫁的女人究竟是为了什么被长期语言暴力的人,如果不会疯掉,如果不会疯掉,承受不住会疯掉吗如果不会疯掉,不仅仅会改变一个人的心理和心态,反之如何遇到一个婆家人不好,每个人都无法去选择原生家庭,本文目录被长期语言暴力的人。本文目

2023年4月9日 06:30

路易威登中国官网网站(lv包 官方网购地址是多少)

路易威登中国官网网站(lv包 官方网购地址是多少)

本文目录lv包 官方网购地址是多少lv中国官网怎么下载lv官方网站是什么求LV(路易威登)中国官网 急 在线等lv中国官网有几个lv中国官网在哪里注册lv包 官方网购地址是多少LV中国官方网站在百度里搜索【LV】第一个就是,点开以后在右侧有

2023年7月3日 12:48

寨组词语?寨字有什么组词

寨组词语?寨字有什么组词

本文目录寨组词语寨字有什么组词寨怎么组词 寨的意思寨的组词寨组词和拼音寨组词 寨字怎么组词寨子的寨怎样组词寨组词有哪些词语寨组词语寨组词语:寨子、寨主、寨圩、寨堡等。寨子:四周有栅栏或围墙的村子山那边还有一座寨子防卫用的栅栏营外下了两道寨子

2023年11月12日 22:25

壮泉四十怎么鉴定?刚解放的时候,农民愿意进城当工人吗什么时候愿意的

壮泉四十怎么鉴定?刚解放的时候,农民愿意进城当工人吗什么时候愿意的

本文目录壮泉四十怎么鉴定刚解放的时候,农民愿意进城当工人吗什么时候愿意的为什么东北人在吃、喝、玩乐的方面总是走在前沿八个样板戏都有哪几部壮泉

2022年10月4日 02:00

雪莱名言名句经典语录摘抄?“道德的最大秘密就是爱”出自哪里

雪莱名言名句经典语录摘抄?“道德的最大秘密就是爱”出自哪里

各位老铁们好,相信很多人对雪莱名言都不是特别的了解,因此呢,今天就来为大家分享下关于雪莱名言以及雪莱名言名句经典语录摘抄的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录雪莱名言名句经典语录摘抄“道德的最大秘密就是

2024年5月21日 03:50

鼠和什么生肖最配(生肖鼠一辈子对他最好的人是谁)

鼠和什么生肖最配(生肖鼠一辈子对他最好的人是谁)

本文目录生肖鼠一辈子对他最好的人是谁为啥说属牛和属鼠的婚配会是最好搭配生肖鼠最可依靠的是哪个生肖生肖鼠一辈子对他最好的人是谁每个人都希望别人一辈子对自己好,无论什么情况下都陪伴自己这个人,有的人有的人说是老伴,有的人说是父母,还有的人说是孩

2023年5月15日 22:12

代赭石的功效与作用(生赭石和代赭石一样吗)

代赭石的功效与作用(生赭石和代赭石一样吗)

本篇文章给大家谈谈代赭石的功效与作用,以及生赭石和代赭石一样吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录生赭石和代赭石一样吗代赭石的功效与作用及禁忌 代赭石的功效与作用及禁忌有哪些代赭石有哪些特性代赭石有什么功效“代赭石

2024年5月4日 06:30

东莞厚街的邮编是多少?东莞市厚街镇邮编

东莞厚街的邮编是多少?东莞市厚街镇邮编

本文目录东莞厚街的邮编是多少东莞市厚街镇邮编请问东莞市厚街镇的邮政编码是多少广东省东莞市厚街镇的邮政编码是多少广东东莞各镇的详细邮政编码谁知道厚街的邮编东莞厚街邮政编码是厚街镇邮政编码广东东莞厚街邮编号是多少东莞厚街的邮编是多少东莞市厚街镇

2024年7月15日 15:11