子句:SQL语句由字句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY 子句。ORDER BY 子句取一个或多个列的名字,据此对输出进行排序
SELECT prod_name
FROM products
ORDER BY prod_name;
这条语句除了指示MySQL对prod_name 列以字母顺序排序数据的ORDER BY子句外,与前面的语句相同
(还可以通过非选择列进行排序)
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,prod_name;
理解在按多个列排序时,排序完全按所规定的顺序进行。
从以上的列子而言,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果
prod_price列中所有的值都是唯一的,则不会按prod_name排序
还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定DESC关键字
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,DESC;
如果还需要用到多个排序
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,DESC,prod_name;
DESC关键字只应用到直接位于其前面的列名。
(如果在多个列进行降序排序必须对每个列指定DESC关键字)
与DESC相反的关键字为ASC即升序
(如果需区分大小写例如a位于B前还是后需要对数据库进行设置)
使用ORDER BY 和LIMIT的组合,能够找出一个列中最高或最低的值
SELECT prod_price
FROM products
ORDER BY prod_price,DESC
LIMIT 1;
prod_price DESC保证是按照最贵的到最便宜进行检索的,而LIMIT 1告诉MySQL仅返回一行。
(关键字需保证顺序在使用了的情况下ORDER BY位于FROM后,而LIMIN位于ORDER BY后,这样使用的子句不会产生次序错误)
数据库表一般包含大量的数据,很少需要检索表中所有行。通常会根据特定的操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出
SELECT prod_name,prod_price
FROM products
WHERE prod_price=2.50;
这条语句从products中检索出两个列,但返回不同的所有行,只需返回prod_price 值为2.50的行
(WHERE子句的位置,同时使用ORDER BY和WHERE子句时,应该让ORDER BY子句位于WHERE子句之后,否则将会产生错误)
操作符 | 说明 |
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
BETWEEN | 在指定两个值之间 |
SELECT prod_name,prod_price
FROM products
WHERE prod_name='fuses';
检查WHERE prod_name='fuses'语句,它返回prod_name的值为Fuses的一行。MySQL在执行匹配时不区分大小写,所以fuses和Fuses都匹配。
SELECT vend_id, prod_name
FROM products
WHERE vend_id<>1003;
检查vend_id 列不为1003 的行
同时<>符号也可以换成 !=
SELECT prod_name,prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
使用BETWEEN时,必须指定两个值——所需范围的低端和高端。这两个值必须用AND关键字分隔。BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。
在创建表时,表式设计人员可以指定其中的列是否可以不包含值,一个列不包含值时,称其为包含空值NULL
(空值与字段包含0空字符串或仅仅包含空格不同)
SELECT prod_name
FROM products
WHERE prod_price IS NUll;
这条语句返回价值没有值的产品