带 IN关键字的查询
IN操作符用来查询满足指定范围内的条件的记录,使用 IN操作符,将所有检索条件用括号括起来,检索条件之间用逗号隔开,只要满足条件范围内的一个值即为匹配项。
在 IN关键字前面加上 NOT即可使得查询的结果正好相反。
带 BETWEEN AND的范围查询
BETWEEN AND用来查询某个范围内的值,该操作符需要有两个参数,即范围的开始值和结束。如果字段值满足指定的范围查询条件,则这些记录被返回。
同样,在BETWEEN AND关键字前面加上 NOT即可使得查询的结果正好相反。
带 LIKE的字符匹配查询
LIKE关键字即是使用通配符来进行匹配查找。通配符是一种在SQL的 WHERE条件子句中拥有特殊意思的字符,可以和 LIKE一起使用的通配符有 %和 _。
百分号通配符 %,匹配任意长度的字符,甚至包括零字符。
下划线通配符 _ ,一次只能匹配任意一个字符。
查询空值
空值不同于0,也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加数据。
在 SELECT语句中使用 IS NULL子句,可以查询某字段内容为空记录。
带 AND的多条件查询
AND主要用于 WHERE子句中,用来链接两个甚至多个查询条件,表示所有的条件都需要满足才会返回值。
带 OR的多条件查询
OR也主要用于 WHERE子句中,用来链接两个甚至多个查询条件,表示所有的条件仅需满足其中之一项便会返回值。
查询结果不重复
在 SELECT语句中,使用 DISTINCT关键字来指示MySQL消除重复的记录。
SELECT DISTINCT 字段名 FROM 表名;
对查询结果排序
用 ORDER BY语句来对查询的结果进行排序。
在后面添加 DESC表示降序排序
在后面添加 ASC或默认,表示升序排序
分组查询
在MySQL中使用 GROUP BY来对数据进行分组
[GROUP BY 字段] [HAVING <条件表达式>] [WITH ROLLUP]
HAVING 关键字用来过滤数据,因为 WHERE不能和 GROUP BY混用
WITH ROLLUP关键字是在所有查询出的记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。但是ROLLUP和能够与 GROUP BY同时使用的ORDER BY不能同时使用。
使用 LIMIT限制查询结果的数量
LIMIT [位置偏移量,] 行数
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值的和
连接查询
内连接查询
在内连接查询中,只有满足条件的记录才能出现在结果关系中。两个表之间的关系通过 (INNER) JOIN指定。 使用这种语法的时候,连接的条件使用 ON子句给出,而不是用 WHERE。
外连接查询
LEFT JOIN左连接
返回包括左表中的所有记录和右表中连接字段相等的记录。
RIGHT JOIN右连接
返回包括右表中的所有记录和左表中连接字段相等的记录。
复合条件连接查询
复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确。
子查询指一个查询语句嵌套在另一个查询语句内部的查询。
带 ANY、SOME关键字的子查询
ANY和 SOME关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
带 ALL关键字的���查询
使用 ALL时,需要同时满足所有内层查询的条件。
带 EXISTS关键字的子查询
EXISTS关键字后面的参数是一个任一的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么 EXISTS的结果为 true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么 EXISTS的结果为 false,此时外层语句不进行查询。
带 IN关键字的子查询
使用 IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。当外层查询语句内只要有一个内层查询语句返回的数据列中的数据时,则判断为满足条件,外层查询语句将进行查询。
带比较运算符的子查询
子查询可以使用如 '<','<=','=','>','>=','!='等比较运算符。