1.基本语法
SELECT [ALL | DISTINCT] <目标表达式>
FROM <表名或视图名>
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]]
2.
查询条件 | 谓词 |
比较 | =,>,<,>=,<=,!=,<>,!>,!< |
范围 | between A and B, not between A and B |
集合 | in,not in |
字符匹配 | like,not like |
空值 | is null,is not null,<=> |
多重条件 | and,or,not |
3.注意事项 :
空值判断
“=”:确定值判断
“is”:不确定值判断
空值查询:<列名> is null (is不能用=代替)
关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。
MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。
<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
模糊查询
“%”:匹配所有
“_”:匹配单个字符
如果要查询的字符中含有特殊字符可用"\"进行转义,例如:
SELECT * FROM table WHERE <列名> LIKE 'a\_%';(查询以a_开头的字符)
排序
ORDER BY :默认按升序(ASC)排列,例如:
ORDER BY <列A>,<列B> DESC;(按列A升序,当列A值相同时按列B降序排列)
分组之前过滤用 where,分组之后过滤用having
摘自网友:
where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。
group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。
having:用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。
执行顺序
select –>where –> group by–> having–>order by