当前位置:首页 > TAG信息列表 > java教程sql语句sql语言两种使用方式?

java教程sql语句sql语言两种使用方式?

java教程sql语句 sql语言两种使用方式?

有两种方法可以使用sql。

一种是在线交互使用,在这种情况下,sql实际上是作为一种独立的语言来使用的。另一种是将其嵌入高级编程语言(如c语言)中使用。前一种模式适合非计算机专业人士,后一种模式适合计算机专业人士。虽然用的方法不对,但所用语言的语法结构基本相同。

java教程sql语句 sql语言两种使用方式?

更新表名设置列名值

为什么唐你不试试吗,

字符串列str

字符串值str

for(inti0iltcolumns.lengthi){

columnstr

记录集读回。打开("select*from联接表",#sql语句,)数据库连接。1.执行sql("插入到新表(商店标志,愿望信息)值("处理单引号(编辑框商店标志。内容)","处理单引号(客户)"))数据库连接。

本文将分析下一条sql语句在mysql中的执行过程,包括sql的查询将如何在mysql内部流动,以及sql语句的更新是如何完成的。

在分析之前,我先给大家展示一下mysql的基础架构,了解一下mysql由哪些组件组成,可以帮助我们理解和解决这些问题。

mysql基础架构分析1.1mysql基础架构概述

下图是mysql的简要架构图,从中可以清楚地看到用户的sql语句在mysql内部执行。

让下面我们简单介绍一下下图中涉及到的一些组件的基本功能,帮助你理解这个图,这些组件的功能将在1.2节详细介绍。

连接器:认证与权限相关(登录mysql时)。查询缓存在执行一条查询语句的时候,会先查询缓存(mysql版以后去掉了,因为这个功能不是很实用)。如果解析器不;如果没有命中缓存,sql语句将通过解析器。说白了,解析器首先要看你的sql语句是干什么用的,然后检查你的sql语句的语法是否正确。优化器:按照mysql认为最好的方案实现。执行器执行该语句,然后从存储引擎返回数据。

简单来说,mysql主要分为服务器层和存储引擎层:

服务器层:主要包括连接器、查询缓存、分析器、优化器、执行器等。跨存储引擎的所有功能都在这一层实现,比如存储过程、触发器、视图、函数等。还有一个通用的日志模块,binglog日志模块。存储引擎:主要负责数据存储和读取,采用可替换插件架构,支持innodb、myisam、memory等多种存储引擎,其中innodb引擎自带日志模块redolog模块。现在最常用的存储引擎是innodb,从mysql5.5.5版开始就被视为默认的存储引擎。1.2服务器层基本组件介绍

1)连接器

连接器主要涉及与身份验证和权限相关的功能,就像高级门卫一样。

它主要负责用户登录数据库和用户认证。;的身份,包括检查账户密码、权限等操作。如果用户的帐户密码已过,连接器将在权限表中查找该用户的所有权限,然后该连接中权限的逻辑判断将取决于此时读取的权限数据,也就是说,只要连接持续打开,即使管理员修改了用户的权限。

2)查询缓存(mysql版后移除)

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

连接建立后,执行查询语句时,会先查询缓存。mysql会先检查这条sql是否已经执行,并以key-value的形式缓存在内存中,其中key是查询预期,value是结果集。如果命中缓存键,将直接返回给客户端。如果未命中,则执行后续操作,完成后缓存结果,方便下次调用。当然,当实际执行缓存查询时,用户的权限,以及该表是否有查询条件。

不建议对mysql查询使用缓存,因为在实际的业务场景中,查询缓存失效可能会非常频繁。如果更新一个表,该表上的所有查询缓存都将被清空。对于不经常更新的数据,仍然可以使用缓存。

因此,在大多数情况下,我们一般不不建议使用查询缓存。

mysql版之后,删除了缓存功能,官方认为实际应用场景中该功能较少,所以干脆删除了。

3)分析仪

如果mysql不t命中缓存,就会进入解析器,解析器主要用来分析sql语句是干什么用的,解析器。它还将分为几个步骤:

第一步,词法分析,一条sql语句由多个字符串组成。首先,需要提取关键字,如select、要查询的表、字段名、查询条件等。完成这些操作后,你将进入第二步。

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

完成这两步,mysql就准备开始执行了,但是怎么执行,怎么执行才是最好的结果?这时候优化器就需要发挥作用了。

4)优化器

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

可以说优化器之后,可以说如何执行这个语句已经决定了。

5)致动器

当执行方案选定后,mysql就准备开始执行了。首先,在执行之前,它会检查用户是否有权限。否则,它将返回一条错误消息。如果有权限,它会调用引擎的接口,返回接口执行的结果。

两句话分析2.1查询语句

说到这里,一条sql语句到底是怎么执行的呢?其实我们的sql可以分为两种,一种是查询,一种是更新(添加、更新、删除)。让让我们首先分析查询语句。声明如下:

select*fromtb_studentawhere和张三

结合上面的描述,我们分析一下这条语句的执行过程:

首先,检查语句是否有权限。如果没有,直接返回错误信息。如果有,在mysql8.0版本之前,先查询缓存,以此sql语句为关键字查询内存中是否有结果。如果有直接缓存,如果没有,执行下一步。由分析器进行词法分析,提取sql语句的关键元素,比如提取上面的语句是queryselect,提取要查询的表名为tb_student,需要查询所有列,查询条件为该表的id1。然后判断这条sql语句是否存在语法错误,比如关键词是否正确等。如果没有问题,执行下一步。接下来,优化器确定执行方案。上面的sql语句可以有两种执行方案:

a.首先检查名为"张三"在学生表中,然后判断年龄是否为18岁。首先找出18岁的学生,然后查询名字是"张三"。

然后优化器根据自己的优化算法选择最高效的方案(优化器认为有时候不一定是最好的)。然后确认执行计划后,就准备开始执行了。是的。

检查权限。如果没有权限,将返回一条错误消息。如果有权限,会调用数据库引擎接口,返回引擎的执行结果。

2.2更新声明

以上是查询sql的一个执行过程,所以让让我们看看update语句是如何执行的。sql语句如下所示:

更新tb_学生一集张三在哪里

让s修改张三年代。实际数据库中肯定不会设置年龄字段,否则由技术负责人键入。其实这个语句基本会遵循上一次查询的流程,但是在进行更新的时候必须记录日志,这就要引入日志模块。mysql和的日志模块binlog(归档日志)可以被所有的存储引擎使用,我们常用的innodb引擎也自带了日志模块redolog(重做日志),所以我们将在innodb模式下讨论这条语句的执行过程。流程如下:

先查询张三的数据。如果有缓存,也会使用它。然后获取查询语句,把年龄改成19,然后调用引擎的api接口写这一行数据。innodb引擎将数据保存在内存中,并记录重做日志。此时重做日志进入准备状态,然后告诉执行人执行完成,可以随时提交。收到通知后,执行器记录binlog,然后调用引擎接口,提交重做日志作为提交状态。更新完成。这里肯定有同学会问,为什么要用两个日志模块,而不是一个日志模块?

这是因为mysql没有t一开始用innodbengine(innodbengine是其他公司作为插件插入mysql的),mysql的引擎是myisam,但是我们知道重做日志是innodb引擎独有的,其他存储引擎都没有。这样一来,就不会有崩溃安全的能力(即使数据库非正常重启,之前提交的记录也不会丢失),binlog日志只能用于存档。

it不是那样的。;不可能只使用一个日志模块,但是innodb引擎支持通过重做日志处理事务。然后,有些同学会问,我用两个日志模块,但是可以不会这么复杂吧?为什么重做日志引入了准备提交前状态?这里我们用归谬法来解释为什么要这样做。

先写重做日志直接提交,再写binlog。假设写完重做日志后,机器挂起,没有写binlog日志,那么机器重启后,这台机器会通过重做日志来恢复数据,但是bingog此时并没有记录数据。以后备份机器的时候,这块数据会丢失,主从同步也会丢失这块数据。首先写binlog,然后重做log。假设写完binlog后,机器异常重启。因为没有重做日志,所以这台机器无法恢复这个记录,但是binlog有一个记录。然后和上面一样,会出现数据不一致的情况。如果重做日志分两个阶段提交,会有所不同。编写binglog后,提交redlog会防止上述问题,从而保证数据的一致性。那么问题来了。是否存在极端情况?假设重做日志处于提交前状态,binglog已经完成。如果此时出现异常重启会怎么样?这取决于mysql的处理机制,mysql的处理过程如下:

判断重做日志是否完整,如果完整,立即提交。如果重做日志只是预提交,而不是提交状态,此时会判断binlog是否完整,如果完整就提交重做日志,如果不完整就回滚事务。这就解决了数据一致性的问题。

第三,mysql主要分为服务器层和引擎层。服务器层主要包括连接器、查询缓存、分析器、优化器和执行器,还有一个日志模块(binlog),所有执行引擎都可以共享,redolog只有innodb才有。引擎层是插件,主要包括myisam、innodb、memory等等。查询语句的执行流程如下:权限检查(如果命中缓存)-查询缓存-分析器-优化器-权限检查-执行器。引擎更新语句的执行流程如下:分析器-权限检查-执行器。

语句执行mysql日志sql


山东旅游之家 派康会议网

  • 关注微信关注微信

猜你喜欢

热门标签

excel表格怎么打印预览 微信小程序卖东西合法吗 苹果12promax价格256g多少钱 微信如何拒绝接收对方发消息 打印机打印不了怎么恢复正常打印 荣耀手机自带app怎么恢复 抖音作品为什么只能看部分浏览者介绍 华为手机显示流量速度 电视盒子排行榜2023最新 华为手机拦截功能在哪里找到 qq空间怎么进入qq农场 淘宝下单可以寄到香港吗 word横版文字变竖版在WORD里怎么让一篇文章又有横排版又有竖排版?介绍 excel表格有合并为什么不能复制wps表格粘贴区域形状不同无法粘贴? 天正cad绘图软件 收益快报怎么找回盈利股份股票代码?介绍 怎么才能得到账号个人帐号可以转为企业帐号吗?介绍 花生壳动态域名为什么连不上如何把本地域名设置成自己所需要的?介绍 xp开机密码忘了如何取消开机密码联想电脑怎么关闭开机密码? wps的ppt怎么设置底图颜色怎样为WPS版PPT设置不同的背景?介绍 cdr如何更换背景色cdr怎么换底色和字体?介绍 华为手机掉了照片怎么找回华为手机截图不小心删除了怎样找回?介绍 怎么在手机画圣诞树红米手机怎么画圣诞树?介绍 excel怎么打印第一页和二页excel两页内容怎么打印在一页正反面上?介绍 为什么360电话手表不显示通话记录360儿童电话手表怎么开通SIM通话记录?介绍 360浏览器下载的文件卸载怎么恢复360卸载的系统能恢复吗?介绍 哪里有剪映完整操作教程剪映可以换动态人脸吗? 中望3d倒角怎么编程数控倒圆弧倒角怎么编程呀怎么计算最好有事例? ps做拼图怎么抠出来几块怎么消除两张图片拼接痕迹?介绍 微信怎么修改个人收款语音微信收款语音不是汉语播报怎么回事?

微信公众号