如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
如果想在 MySQL 数据表中读取指定的数据,WHERE 子句是非常有用的。使用主键来作为 WHERE 子句的条件查询是非常快速的。
如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。
当需要多条件才能确定数据时,可使用AND或者OR运算符来确定数据
在WHERE子句中字符串比较查询是不区分大小写的。若想进行大小写区分可使用BINARY关键字
SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)。如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。
LIKE子句需要编写在WHERE子句中。
表达式 LIKE pattern
在 SQL 中,通配符与 LIKE 操作符一起使用。SQL 通配符用于搜索表中的数据。在 SQL 中,可使用以下通配符:
ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序(ASC)对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字
可支持多字段同时排序,但 DESC或者 ASC 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
IN 操作符
IN 操作符允许在 WHERE 子句中规定多个值。IN运算符是一个逻辑运算符,用于将值与一组值进行比较。 如果值在值集内,则IN运算符返回true。否则,它返回false或unknown。
expression IN (value1,value2,...)
子查询
子查询(subquery)是嵌套在另一个查询中的查询,例如:SELECT,INSERT,UPDATE或DELETE语句。放在括号内的查询称为子查询,它也称为内部查询或内部选择。 包含子查询的查询称为外部查询或外部选择。
可以在许多地方使用子查询,例如:
① 使用IN或NOT IN运算符
表达式 IN/NOT IN (subquery)
② 比较运算中
表达式 =/>/=/<=/<>/!= (subquery)
③ 使用EXISTS或NOT EXISTS运算符
表达式 EXISTS/ NOT EXISTS (subquery)
④ 使用ANY或ALL运算符
表达式 ANY/ALL(subquery)
⑤ 在FROM子句中
BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。BETWEEN运算符是逻辑运算符。 它返回true,false或unknown值。 BETWEEN运算符用于SELECT,UPDATE或DELETE语句中以查找范围内的值。
以下说明了BETWEEN运算符的语法:
expression BETWEEN low AND high;
在上面语法中,
表达式是在低和高定义的范围内测试的表达式。
low和high可以是表达式或文字值,要求low的值小于high的值。
如果表达式大于或等于(>=)low值且小于或等于(<=)high值,则BETWEEN运算符返回true。
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段
别名
SQL别名用于在执行查询期间为表或列分配临时名称。 有两种类型的别名:表别名和列别名
连接类型
INNER JOIN(内连):如果表中有至少一个匹配,则返回行
LEFT JOIN(左连):即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT 语句中的列的顺序必须相同。数据库系统首先执行两个SELECT语句来处理查询。然后,它将两个单独的结果集合并为一个,并消除重复的行。 为了消除重复的行,数据库系统对每列的组合结果进行排序,并扫描它以查找彼此相邻的匹配行。
要保留结果集中的重复行,请使用UNION ALL运算符
假设我们有两个结果集A(1,2)和B(2,3)。 下图说明了A UNION B结果:
以下图片说明了A UNION ALL B的结果:
GROUP BY 语句
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。分组是使用数据库时必须处理的最重要任务之一。 要将行分组,请使用GROUP BY子句。GROUP BY子句是SELECT语句的可选子句,它根据指定列中的匹配值将行组合成组,每组返回一行。
经常将GROUP BY与MIN,MAX,AVG,SUM或COUNT等聚合函数结合使用,以计算为每个分组提供信息的度量。
SELECT column1, column2,聚合函数(column3) FROM table GROUP BY column1,column2;