--要注意DISTINCT关键字,而且不能部分使用DISTINCT,即它会作用于所有的列SELECTDISTINCT keyword FROMtable;--限制结果数量,使用LIMIT关键字。OFFSET关键字则用来表示从哪一行开始,第一行数字是0SELECT prod_name
FROM Products
LIMIT5OFFSET5;--从第六行开始(包括第六行)后面五个
2. 排序检索数据
--order by子句取一个或多个列的名字,据此对输出进行排序。它应该是SELECT 语句中最后一条子句SELECT prod_name
FROM Products
ORDERBY prod_name;--按多个列进行排序的写法,只需要将列用逗号隔开就行SELECT prod_id, prod_price, prod_name
FROM Products
ORDERBY prod_price, prod_name;--也可使用列位置来排序SELECT prod_id, prod_price, prod_name
FROM Products
ORDERBY2,3;--这里的2,3是指SELECT后面的相对位置--执行排序方向,一般默认为升序,降序需使用关键字DESCSELECT prod_id, prod_price, prod_name
FROM Products
ORDERBY prod_price DESC;--这里将结果按照prod_price降序排列--可以对多个列进行排序,并分别指定每列的排序方式,DESC要直接应用到某一列后面SELECT prod_id, prod_price, prod_name
FROM Products
ORDERBY prod_price DESC, prod_name;--prod_price降序,相同价格内prod_name升序排列
3. 过滤数据
--使用WHERE子句来进行过滤SELECT prod_name, prod_price
FROM Products
WHERE prod_price =3.49;--返回prod_price为3.49的行--要注意同时使用ORDER BY和WHERE子句时,应将ORDER BY位于WHERE之后--WHERE子句操作符看下面的表--范围查询使用BETWEEN 和 AND关键字SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN5AND10;--选择价格在5和10之间的行--空值NULL和字段包含0、空字符串或仅仅包含空格是不一样的SELECT cust_name
FROM Customers
WHERE cust_email ISNULL;--判断空值时不能用 "= NULL",而应该用"IS NULL"
操作符
说明
操作符
说明
=
等于
>
大于
<>
不等于
>=
大于等于
! =
不等于
! >
不大于
<
小于
BETWEEN
在指定的两个值之间
<=
小于等于
IS NULL
为NULL值
! <
不小于
4. 高级数据过滤
--使用关键字AND组合WHERE子句SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id ='DLL01'AND prod_price <=4;--可以在后面放ORDER BY子句--使用关键字OR组合WHERE子句SELECT prod_name, prod_price
FROM Products
WHERE vend_id ='DLL01'OR vend_id ='BRS01';--两个条件有一个成立就行--AND关键字优先级高于OR,所以有时会用括号来改变优先级--IN操作符用来指定条件范围,通常用括号包含多个值SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN('DLL01','BRS01')--vend_id值只要匹配括号中的一个就要这一行,会提前ORDERBY prod_name;--有时候需要连表查询,此时我们可以先在一个小表中查询出来,然后再使用IN关键字找符合的行--NOT操作符用来否定其后所跟的任何条件,而且不会单独使用,如NOT IN等SELECT prod_name
FROM Products
WHERENOT vend_id ='DLL01'--NOT用来否定后面的等于条件ORDERBY prod_name;
5. 用通配符进行过滤
--LIKE操作符用来进行通配运算,它是谓词而不是一个操作符--百分号(%)通配符表示任何字符出现任意次数,其实就是任意串SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE'Fish%';--%可以放在任何位置,但是它不会匹配为NULL的行SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE'%bean bag%';--选择产品名称包含bean bag的商品--下划线(_)通配符,它只匹配单个字符,而不是多个SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE'__ inch teddy bear';--两个下划线,要匹配两个字符--方括号([])通配符用来指定一个字符集,必须匹配指定位置(通配符位置)的一个字符--注意这个地方MySQL使用的是REGEXP操作符和正则表达式来实现的--要知道通配符是会影响查询效率的,比如不会走索引