一文讲懂SQL语法顺序与执行顺序
发布网友
发布时间:2024-09-26 05:37
我来回答
共1个回答
热心网友
时间:2024-10-06 06:37
大家好,我是宁一。
今天为大家讲解SQL教程第17课:SQL语句书写顺序与执行顺序。
SQL语句的书写顺序与执行顺序并不相同,本节课将帮助大家理清这一点。
1、书写顺序
书写顺序至关重要,顺序错误会导致错误。
我们之前课程已经学过SELECT、WHERE、ORDER BY、LIMIT、JOIN、UNION、GROUP BY、HAVING语句的用法。
如果这些语句在SQL中同时存在,它们的书写顺序如下:
虽然看起来有些复杂,但通过实战练习,自然就能记住。
2、执行顺序
1. FORM:选择FROM后面的表,生成虚拟表1。
2. ON:ON是JOIN的连接条件,满足连接条件的行会被记录在虚拟表2中。
3. JOIN:如果指定了LEFT JOIN,则保留表中未匹配的行将作为外部行添加到虚拟表2中,生成虚拟表3。如果有多个JOIN链接,将重复执行步骤1~3,直到处理完所有表。
4. WHERE:对虚拟表3进行WHERE条件过滤,符合条件的记录会被插入到虚拟表4中。
5. GROUP BY:根据GROUP BY子句中的列,对虚拟表2中的记录进行分组操作,生成虚拟表5。
6. HAVING:对虚拟表5进行HAVING过滤,符合条件的记录会被插入到虚拟表6中。
7. SELECT:SELECT操作在最后一步执行,选择指定的列,插入到虚拟表7中。
8. UNION:UNION连接的两个SELECT查询语句,会重复执行步骤1~7,生成两个虚拟表7,并将这些记录合并到虚拟表8中。
9. ORDER BY: 对虚拟表8中的记录进行排序,生成虚拟表9。
10. LIMIT:取出指定行的记录,返回结果集。
3、总结:
书写顺序:SELECT -> FROM -> JOIN -> ON -> WHERE -> GROUP BY -> HAVING -> UNION -> ORDER BY -> LIMIT
执行顺序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> UNION -> ORDER BY -> LIMIT
4、需要注意的地方:
1. SELECT语句总是写在最前面,但在大部分语句之后才执行。所以在SQL语句中,我们不能在WHERE、GROUP BY、HAVING语句中使用在SELECT中设定的别名。
2. 无论是书写顺序还是执行顺序,UNION都排在ORDER BY前面。SQL语句会将所有UNION段合并后,再进行排序。
我们本节课程总结了SQL语句的书写顺序和执行顺序,理解这些有助于我们对SQL语句进行优化,提高我们的数据库理解能力,为编写复杂SQL奠定基础。
如果能掌握SQL语句书写顺序和执行顺序,那么恭喜你,已经可以解决大部分的SQL问题了。
下节课我们将开始讲解子查询,理解这节课内容后,编写更复杂的SQL就会得心应手了~
热心网友
时间:2024-10-06 06:38
大家好,我是宁一。
今天为大家讲解SQL教程第17课:SQL语句书写顺序与执行顺序。
SQL语句的书写顺序与执行顺序并不相同,本节课将帮助大家理清这一点。
1、书写顺序
书写顺序至关重要,顺序错误会导致错误。
我们之前课程已经学过SELECT、WHERE、ORDER BY、LIMIT、JOIN、UNION、GROUP BY、HAVING语句的用法。
如果这些语句在SQL中同时存在,它们的书写顺序如下:
虽然看起来有些复杂,但通过实战练习,自然就能记住。
2、执行顺序
1. FORM:选择FROM后面的表,生成虚拟表1。
2. ON:ON是JOIN的连接条件,满足连接条件的行会被记录在虚拟表2中。
3. JOIN:如果指定了LEFT JOIN,则保留表中未匹配的行将作为外部行添加到虚拟表2中,生成虚拟表3。如果有多个JOIN链接,将重复执行步骤1~3,直到处理完所有表。
4. WHERE:对虚拟表3进行WHERE条件过滤,符合条件的记录会被插入到虚拟表4中。
5. GROUP BY:根据GROUP BY子句中的列,对虚拟表2中的记录进行分组操作,生成虚拟表5。
6. HAVING:对虚拟表5进行HAVING过滤,符合条件的记录会被插入到虚拟表6中。
7. SELECT:SELECT操作在最后一步执行,选择指定的列,插入到虚拟表7中。
8. UNION:UNION连接的两个SELECT查询语句,会重复执行步骤1~7,生成两个虚拟表7,并将这些记录合并到虚拟表8中。
9. ORDER BY: 对虚拟表8中的记录进行排序,生成虚拟表9。
10. LIMIT:取出指定行的记录,返回结果集。
3、总结:
书写顺序:SELECT -> FROM -> JOIN -> ON -> WHERE -> GROUP BY -> HAVING -> UNION -> ORDER BY -> LIMIT
执行顺序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> UNION -> ORDER BY -> LIMIT
4、需要注意的地方:
1. SELECT语句总是写在最前面,但在大部分语句之后才执行。所以在SQL语句中,我们不能在WHERE、GROUP BY、HAVING语句中使用在SELECT中设定的别名。
2. 无论是书写顺序还是执行顺序,UNION都排在ORDER BY前面。SQL语句会将所有UNION段合并后,再进行排序。
我们本节课程总结了SQL语句的书写顺序和执行顺序,理解这些有助于我们对SQL语句进行优化,提高我们的数据库理解能力,为编写复杂SQL奠定基础。
如果能掌握SQL语句书写顺序和执行顺序,那么恭喜你,已经可以解决大部分的SQL问题了。
下节课我们将开始讲解子查询,理解这节课内容后,编写更复杂的SQL就会得心应手了~