欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一条语句涵盖SQL查询

程序员文章站 2022-04-19 14:05:00
完整的SELECT查询语句:、SELECT DISTINCT column, AGG_FUNC(column_or_expression), …FROM mytableJOIN another_tableON mytable.column = another_table.columnWHERE constraint_expressionGROUP BY columnHAVING constraint_expressionORDER BY column ASC/DESCLIMIT count...

完整的SELECT查询语句:、

SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
JOIN another_table
ON mytable.column = another_table.column
WHERE constraint_expression
GROUP BY column
HAVING constraint_expression
ORDER BY column ASC/DESC
LIMIT count OFFSET COUNT;

查询语句的顺序为FROM和 JOIN> WHERE>GROUP BY>HAVING>SELECT>DISTINCT>ORDER BY>LIMIT/OFFSET。

1.FROM和JOIN确定查询数据的表格(数据源),没有数据谈何查找,如果没有JOIN,要查的表就是mytable,如果有JOIN,要查的表就是
mytable JOIN another_table ON mytable.column = another_table.column
把mytable 和another_table 通过mytable.column = another_table.column匹配合成一个表作为数据源表(临时表)
2.WHERE查询的限制条件,确定了数据来源 WHERE 语句就将在这个数据源中按要求进行数据筛选,并丢弃不符合要求的数据行,所有的筛选col属性 只能来自FROM圈定的表. AS别名还不能在这个阶段使用,因为可能别名是一个还没执行的表达式。
3.GROUP BY 将对之前的数据进行分组,统计等,并将是结果集缩小为分组数.这意味着 其他的数据在分组后丢弃.
4.HAVING的语法和WHERE的语法一致,如果你用了 GROUP BY 分组, HAVING 会在分组完成后对结果集再次筛选。AS别名也不能在这个阶段使用.
5.SELECT用来对结果col简单筛选或计算,决定输出什么数据.
6. DISTINCT对结果进行去重,将重复的数据去除。
7. ORDER BY 对结果做排序。因为SELECT中的表达式已经执行完了。此时可以用AS别名.
8. LIMIT 和 OFFSET 从排序的结果中截取部分数据,LIMIT确定输出数据的长度(多少行),OFFSET确定数据输出的起点(从哪一行开始输出)
总结:
不是每一个SQL语句都要用到所有的句法,但灵活运用以上的句法组合和深刻理解SQL执行原理将能在SQL层面更好的解决数据问题,而不用把问题 都抛给程序逻辑.

本文地址:https://blog.csdn.net/qq_44955169/article/details/107167113