当前位置: 首页 > news >正文

宁波奉化建设局网站深圳网络提速优化服务包

宁波奉化建设局网站,深圳网络提速优化服务包,wordpress关闭feed,网站的作用有哪些Mysql查询语句执行原理 数据库查询语句如何执行#xff1f; DML语句首先进行语法分析#xff0c;对使用sql表示的查询进行语法分析#xff0c;生成查询语法分析树。语义检查#xff1a;检查sql中所涉及的对象以及是否在数据库中存在#xff0c;用户是否具有操作权限等视…Mysql查询语句执行原理 数据库查询语句如何执行 DML语句首先进行语法分析对使用sql表示的查询进行语法分析生成查询语法分析树。语义检查检查sql中所涉及的对象以及是否在数据库中存在用户是否具有操作权限等视图转换将语法分析树转换成关系代数表达式称为逻辑查询计划查询优化在选择逻辑查询计划时会有多个不同的表达式选择最佳的逻辑查询计划代码生成必须将逻辑查询计划转换成物理查询计划物理查询计划不仅能指明要执行的操作也给出了这些操作的执行顺序每步所用的算法存储数据的方式以及从一个操作传递给另一个操作的方式。将DML转换成一串可执行的存取操作的过程称为束缚过程 Mysql查询语句执行过程 这里简单介绍一下mysql数据库mysql数据库是一款关系型数据库所谓关系型数据库就是以二维表的形式存储数据使用行和列方便我们对数据的增删改查。 这篇博客我们以mysql数据库为例对一条sql语句的执行流程进行分析。本篇博客不涉及到表连接 首先创建一张student表字段有自增主键id学生姓名name学科subject成绩grade 建表语句 DROP TABLE IF EXISTS student; CREATE TABLE student (id int(5) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,subject varchar(10) DEFAULT NULL,grade double(4,1) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT40 DEFAULT CHARSETutf8; 初始化数据 INSERT INTO student(name,subject,grade)VALUES(aom,语文,88); INSERT INTO student(name,subject,grade)VALUES(aom,数学,99); INSERT INTO student(name,subject,grade)VALUES(aom,外语,55);INSERT INTO student(name,subject,grade)VALUES(jack,语文,67); INSERT INTO student(name,subject,grade)VALUES(jack,数学,44); INSERT INTO student(name,subject,grade)VALUES(jack,外语,55);INSERT INTO student(name,subject,grade)VALUES(susan,语文,56); INSERT INTO student(name,subject,grade)VALUES(susan,数学,35); INSERT INTO student(name,subject,grade)VALUES(susan,外语,77);INSERT INTO student(name,subject,grade)VALUES(alice,语文,88); INSERT INTO student(name,subject,grade)VALUES(alice,数学,77); INSERT INTO student(name,subject,grade)VALUES(alice,外语,100);INSERT INTO student(name,subject,grade)VALUES(rajo,语文,33); INSERT INTO student(name,subject,grade)VALUES(rajo,数学,55); INSERT INTO student(name,subject,grade)VALUES(rajo,外语,55); 复制 下面我们来看一下数据在数据库中的存储形式。 ​ 图1.0 现在针对这张student表中的数据提出一个问题要求查询出挂科数目多于两门包含两门的前两名学生的姓名如果挂科数目相同按学生姓名升序排列。 下面是这条查询的sql语句 SELECT name,COUNT(name) AS num FROM student WHERE grade 60 GROUP BY name HAVING num 2 ORDER BY num DESC,name ASC LIMIT 0,2; 复制 执行结果 ​ 图1.1 以上这条sql语句基本上概括了单表查询中所有要注意的点那么我们就以这条sql为例来分析一下一条语句的执行流程。 1一条查询的sql语句先执行的是 FROM student 负责把数据库的表文件加载到内存中去如图1.0中所示。mysql数据库在计算机上也是一个进程cpu会给该进程分配一块内存空间在计算机‘服务’中可以看到该进程的状态 ​ 图1.2 2WHERE grade 60会把图1.0所示表中的数据进行过滤取出符合条件的记录行生成一张临时表如下图所示。 ​ 图1.3 3GROUP BY name会把图1.3的临时表切分成若干临时表分为四个分组我们用下图来表示内存中这个切分的过程。 ​ ​ ​ ​ 图1.4)              图1.5)         图1.6)        图1.7) 4SELECT 的执行读取规则分为sql语句中有无GROUP BY两种情况。 1当没有GROUP BY时SELECT 会根据后面的字段名称对内存中的一张临时表整列读取。 2当查询sql中有GROUP BY时会对内存中的若干临时表分别执行SELECT而且只取各临时表中的第一条记录然后再形成新的临时表。这就决定了查询sql使用GROUP BY的场景下SELECT后面跟的一般是参与分组的字段和聚合函数否则查询出的数据要是情况而定。另外聚合函数中的字段可以是表中的任意字段需要注意的是聚合函数会自动忽略空值。 我们还是以本例中的查询sql来分析现在内存中有四张被GROUP BY name切分成的临时表我们分别取名为 tempTable1,tempTable2,tempTable3,tempTable4分别对应图1.4)、图1.5)、图1.6)图1.7)下面写四条”伪SQL”来说明这个查询过程。 SELECT name,COUNT(name) AS num FROM tempTable1; SELECT name,COUNT(name) AS num FROM tempTable2; SELECT name,COUNT(name) AS num FROM tempTable3; SELECT name,COUNT(name) AS num FROM tempTable4; 复制 最后再次成新的临时表如下图 ​ 图1.8) 5HAVING num 2对上图所示临时表中的数据再次过滤与WHERE语句不同的是HAVING 用在GROUP BY之后WHERE是对FROM student从数据库表文件加载到内存中的原生数据过滤而HAVING 是对SELECT 语句执行之后的临时表中的数据过滤所以说column AS otherName ,otherName这样的字段在WHERE后不能使用但在HAVING 后可以使用。但HAVING的后使用的字段只能是SELECT 后的字段SELECT后没有的字段HAVING之后不能使用。HAVING num 2语句执行之后生成一张临时表如下 ​ 图1.9) 6ORDER BY num DESC,name ASC对以上的临时表按照numname进行排序。 ​ 7LIMIT 0,2取排序后的前两个。 ​ 转存失败重新上传取消 ​ 以上就是一条sql的执行过程同时我们在书写查询sql的时候应当遵守以下顺序。 SELECT XXX FROM XXX WHERE XXX GROUP BY XXX HAVING XXX ORDER BY XXX LIMIT XXX;
http://www.hkea.cn/news/14285893/

相关文章:

  • 深圳服务好的网站建设整合营销传播的定义
  • 东莞网站关键词优化收费乐清市建设路小学网站
  • 公司网站建设费用怎么记账设计之路 网站
  • 阿里巴巴网站运营怎么做上海网站络公司
  • 如何保存网页上的视频seo外链怎么做
  • 乐清网站制作推荐网站建设的岗位要求
  • 广州 网站制自己建网站卖东西怎么样
  • 网站引擎友好性分析j2ee 建设简单网站
  • 2012系统 做网站ug wordpress
  • 优酷视频网站开发企点账户中心
  • 做代还的人都聚集在哪些网站企业开源网站系统
  • 做网站的技术风险网络运维app
  • 网站设计在线培训机构甜品店网页模板html
  • 陕西建设分行网站wordpress改域名后500
  • 做网站如何接单php网站做安卓客户端
  • ip段访问网站代码西安市做网站公司
  • 网站部署设计洛阳做网站公司有哪些
  • 济南济南网站建设网站建设wordpress多媒体大小
  • 企业网站怎么建设公司高级网络规划师报考条件
  • 专业做pc+手机网站免备案自助建站网站
  • 网站建设中的注册和登录页面抖音推广计划
  • 网站建设与管理是什么工作做印刷的网站有哪些
  • 网站开发语言为 php用wordpress做开放的wiki
  • 慈云寺网站建设网页打不开显示404要怎么处理
  • app ui设计欣赏 网站网站后台管理系统 静态页面
  • 深圳电商网站公司wordpress中php代码只能一行一行写
  • 网站设计和平面设计定西市小企业网站建设
  • 淄博网站制作制作专业北京翻译公司
  • 山西笑傲网站建设推广西安做义工网站
  • 基层建设网站海南网站建设制作