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

网站建设岗位风险防控河北企业网站建设公司

网站建设岗位风险防控,河北企业网站建设公司,买一个网页需要多少钱,齐河网站建设一、SELECT查询的完整结构 1.1 方式一(SQL 92语法) SELECT ..., ..., ... FROM ..., ..., ... WHERE 多表的连接条件 AND 不包含组函数的过滤条件 GROUP BY ..., ... HAVING 包含组函数的过滤条件 ORDER BY ... ASC/DESC LIMIT ..., ... 1.2 方式二&a…

一、SELECT查询的完整结构

1.1 方式一(SQL 92语法)

SELECT ..., ..., ...
FROM ..., ..., ...
WHERE 多表的连接条件
AND 不包含组函数的过滤条件
GROUP BY ..., ...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ..., ...

1.2 方式二(SQL 99语法)

SELECT ..., ..., ...
FROM ... JOIN ...
ON 多表的连接条件
JOIN ...
ON ...
WHERE 不包含组函数的过滤条件
AND/OR 不包含组函数的过滤条件
GROUP BY ..., ...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ..., ...

1.3 关键字解释

  • from:从哪些表中筛选
  • on:关联多表查询时,去除笛卡尔积
  • where:从表中筛选的条件
  • group by:分组依据
  • having:在统计结果中再次筛选
  • order by:排序
  • limit:分页

二、SELECT 执行顺序

你需要记住SELECT查询时的两个顺序:

2.1 关键字的顺序是不能颠倒的

SELECT ... 
FROM ... 
WHERE ... 
GROUP BY ... 
HAVING ... 
ORDER BY ... 
LIMIT...

2.2 SELECT 语句的执行顺序

在MySQL和Oracle中,SELECT执行顺序基本相同

FROM ..., [(LEFT/RIGHT) JOIN ..., ON ...]

WHERE

GROUP BY

HAVING

SELECT

DISTINCT #去重操作

ORDER BY ..., ..., (ASC/DESC)

LIMIT ..., ...

2.3 SQL 的执行原理

        SELECT 结构中是先执行 FROM 这一步的,称为“FROM阶段”。在这个阶段,如果是多张表联查,还会经历下面的几个步骤:

1. 首先先通过 CROSS JOIN 求笛卡尔积,相当于得到虚拟表 vt(virtual table)1-1;

2. 通过 ON 进行筛选,在虚拟表 vt1-1 的基础上进行筛选,得到虚拟表 vt1-2;

3. 添加外部行。如果我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3。

        当然如果我们操作的是两张以上的表,还会重复上面的步骤,直到所有表都被处理完为止。这个过程得到是我们的原始数据

        当我们拿到了查询数据表的原始数据,也就是最终的虚拟表 vt1 ,就可以在此基础上再进行 WHERE 阶段 。在这个阶段中,会根据 vt1 表的结果进行筛选过滤,得到虚拟表 vt2

        然后进入第三步和第四步,也就是 GROUP HAVING 阶段 。在这个阶段中,实际上是在虚拟表 vt2 的基础上进行分组和分组过滤,得到中间的虚拟表 vt3vt4

        当我们完成了条件筛选部分之后,就可以筛选表中提取的字段,也就是进入到 SELECTDISTINCT 阶段 。首先在 SELECT 阶段会提取想要的字段,然后在 DISTINCT 阶段过滤掉重复的行,分别得到中间的虚拟表 vt5-1 vt5-2

        当我们提取了想要的字段数据之后,就可以按照指定的字段进行排序,也就是 ORDER BY 阶段 ,得到虚拟表 vt6

        最后在 vt6 的基础上,取出指定行的记录,也就是 LIMIT 阶段 ,得到最终的结果,对应的是虚拟表 vt7

        当然我们在写 SELECT 语句的时候,不一定存在所有的关键字,相应的阶段就会省略。

        同时因为 SQL 是一门类似英语的结构化查询语言,所以我们在写 SELECT 语句的时候,还要注意相应的关键字顺序,所谓底层运行的原理,就是我们刚才讲到的执行顺序

附言:

        在WHERE阶段将会过滤掉大量的数据,再进行GROUP和HAVING阶段,比起将过滤条件都写在HAVING中效率高。因为先进行分组再过滤,有可能大量的分组工作就白做了。又因为只有对分组的数据才又使用聚合函数的意义,而WHERE阶段在GROUP阶段之前,所以尚未分组就不能使用聚合函数,这也是为什么将聚合函数放在WHERE中会出错的原因。

http://www.yayakq.cn/news/685957/

相关文章:

  • 婚庆网站大全企业网站里面的qq咨询怎么做
  • 做买家秀的网站建设大型购物网站
  • 动态电子商务网站 制作网页加速器哪个最好用
  • dw做网站注册页代码网站推广新手入门教程
  • 二维码生成器网站公交建设公司的官网
  • 广西圣泰建设工程有限公司网站简约型网站开发
  • 网页制作的开发平台北京网站优化培训
  • 化工设计网站wordpress挣钱
  • 建设大型门户网站深圳网站建设南山
  • seo网站建站沈阳网站模板
  • 南宁网站建公司电话号码网页设计作品展
  • 辽宁网站建设专业学校cdr可以做网站页面吗
  • 呼和浩特网站建设哪家好适合女生的计算机专业有哪些
  • 免费静态网站模板下载免费简历模板可导出
  • 海外 推广网站滨州内做网站系统的公司
  • 网站建设中 显示 虚拟机手机微信登入网站
  • 沈阳网站排名seoc2c模式的特点有哪些
  • 沈阳网站建设策划哪家做外贸网站好
  • 自己做文学网站赚钱吗合肥网站建设维护
  • 做网站能拿多少钱制作网站赚钱不
  • 电子商务网站规划书范文网站建设中网站需求分析报告
  • 做国外网站翻译中国小说赚钱vi品牌形象设计案例
  • 做家簇图像网站wordpress插件后端页面
  • 建设一个asp网站重新做系统后怎么没有wordpress
  • 怎么制作做网站网站响应方案
  • 东莞购物网站建设有没有兼职做设计的网站吗
  • 椒江网站建设578做网站织梦网站首页怎么修改
  • 长沙网页制作模板的网站网站即将上线 模板
  • 什么云的网站开发平台wordpress主题房
  • 中工互联网站建设php网站开发开题报告