检索操作语句
检索
SELECT
通配符 ,返回表中所有列。
尽可能不要使用 检索,明确列出所需列,检索不需要的列通常会降低检索和应用程序的性能。
检索不同的列值,使用 DISTINCT
应用于单列
SELECT DISTINCT vend_id FROM products;
应用于多列,DISTINCT 关键字应用与所有列而不是前置它的列。
如果给出 SELECT DISTINCT vend_id, prod_price,除非指定的两个列(ven_id, prod_price)的行都不同,否则返回所有行。
LIMIT
LIMIT 5 , 返回不多于 5 行。
LIMIT 5,5 返回从行 5 开始的 5 行。第一个数为开始位置,第二个数为要检索的行数。
带一个值的 LIMIT 总是从第一行开始,给出的数为返回的行数。
带两个值的 LIMIT 可以指定从行号为第一个值的位置开始。
mysql> select from product limit 2;
+——+——————-+————-+————-+—————+
| id | prod_pprice | vend_id | created | modified |
+——+——————-+————-+————-+—————+
| 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 1 | 2 | 2 |
+——+——————-+————-+————-+—————+
mysql> select from product limit 1,2;
+——+——————-+————-+————-+—————+
| id | prod_pprice | vend_id | created | modified |
+——+——————-+————-+————-+—————+
| 2 | 2 | 1 | 2 | 2 |
| 3 | 2 | 3 | 3 | 3 |
+——+——————-+————-+————-+—————+
注意:limit 中 查询第一行,要使用的是 limit 0, 1,等价于 limit 1。
MySQL 5 支持 LIMIT 的另一种语法: select from product limit 4 offset 3, 等价于 select from product limit 3, 4。
排序检索数据
子句(clause)
SQL 语句由子句构成,有些子句是必须的,而有的是可选的。
一个子句通常由一个关键字和所提供的数据组成。
子句的例子有 SELECT 语句的 FROM 子句。
ORDER BY 子句
ORDER BY 子句取一个或多个列的名字,据此对输出进行排序
SELECT prod_name FROM products ORDER BY prod_name; 对 prod_name 列以字母顺序排序数据
按多个列排序
如果要显示雇员清单,可能希望按姓和明排序(首先按姓排序,然后在每个姓中再按名排序)。
为了按多个列排序,只要指定列名,列名之间用逗号分开即可。
检索 3 个列,并按其中两个列对结果进行排序——首先按价格,然后再按名称排序
select id, prod_price, prod_name from product order by prod_price, prod_name;
在按多个列排序时,排序完全按所规定的顺序进行。换句话说,上述例子中,仅在多个行具有相同的 prod_price 值时,才对产品按 prod_name 进行排序。
如果 prod_price 列中所有的值都是唯一的,则不会按 prod_name 排序。
升序/降序,默认 ORDER BY 是升序,ORDER BY DESC 是降序。
select * from product order by prod_pprice desc, name;
如果想在多个列上进行降序排序,必须对每个列指定 DESC 关键字。
与 DESC 相反的关键字是 ASC(ASCENDING),升序排序是默认的。
ORDER BY 子句的位置,在给出 ORDER BY 子句时,应该保证它位于 FROM 子句之后。使用 LIMIT,它必须位于 ORDER BY 之后。