排序检索数据
关键字 | 语句 | 说明 | 注意事项 |
---|---|---|---|
order by | select uuid from ce_activity order by uuid | 对uuid列的数据进行排序(升序) | 在字典排序顺序中,A与a相同,这是MySQL默认行为 |
select prod_id,prod_price,prod_name from products order by pro_price,prod_name | 先按照prod_price排序,再按照prod_name排序 | 如果产品价格都是唯一的,那么将不会按照产品名进行排序 | |
DESC | select prod_id,prod_price,prod_name from products order by prod_price DESC,pro_name; | 先对prod_price以降序进行排序,再对产品名按照默认的升序进行排序 | 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字 |
order by子句的位置:
order by在from子句之后。如果使用limit,它必须位于order by之后。
子句位置关系:
from > order by >limit
过滤数据
关键字 | 语句 | 说明 | 注意事项 |
---|---|---|---|
where | select prod_name,prod_price from products where prod_price =2.5; | 这条语句从products表中检索两个列,但不返回所有行,只返回prod_price值为2.5的行 | 如果值为字符串的时候,需要用’‘来和数据库中的值进行比较,例如’cold’ |
AND | select prod_id,prod_price,prod_namefrom products where vend_id=1003 AND pro_price<=10; | 这条语句检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格 | AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行 |
OR | select prod_id,prod_price,prod_name from products where vend_id=1003 OR pro_price<=10; | 这条语句检索由供应商1003制造或者价格小于等于10美元的所有产品的名称和价格 | OR用在WHERE子句中的关键字,用来表示检索匹配任一给定条件的行 |
IN | select prod_price,prod_name from products WHERE vend_id IN (100,1003) ORDER BY prod_name | 此SELECT语句检索供应商1002和1003制造的所有产品。IN操作符后跟由逗号分隔的合法值清单,整个清单必须括在圆括号中 | IN操作符完成与OR相同的功能;IN操作符一般比OR操作符清单执行更快;在使用长的合法选项清单时,IN操作符的语句更清楚且更直观;在使用IN时,计算的次序更容易管理 |
NOT | select prod_name,prod_price from products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name; | 这里的NOT否定跟在它之后的条件,因此,MySQL不是匹配1002和1003的vend_id,而是匹配1002和1003之外供应商的vend_id | MySQL支持使用NOT对IN、BETWEEN和EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反由很大的差别 |
notes: AND的优先级比OR高,所以最好利用()来选定他们之间的语句表达。
WHERE子句操作符
操作符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN AND | 在指定的两个值之间 |