检索数据
- 基本检索数据
- 检索单个列
- 检索多个列
- 检索所有列
- 检索不同的值
- 限制检索数量
- 注释规则
- 排序检索数据
- 单列排序
- 多列排序
- 按列位置排序
- 指定排序方向
基本检索数据
检索单个列
从 Products
表中检索一个名为 prod_name
的列;
SELECT prod_name
FROM Products;
- 该 s q l sql sql 语句将返回表中列
prod_name
的所有行,结果没有过滤没有排序。 - s q l sql sql 语句以 ; 结束,多条 s q l sql sql 语句以分号间隔。
- s q l sql sql 不区分大小写。
- 系统在处理 s q l sql sql 语句时,其中所有的空格都将被忽略。所以 s q l sql sql 语句可以全部写在一行,也可以写在多行。当然建议写成多行,便于理解。
检索多个列
从 Products
表中检索名为 prod_id
, prod_name
, prod_price
列;
SELECT prod_id, prod_name, prod_price
FROM Products;
- s q l sql sql 检索多个列,在列名之间加逗号。但是一定注意的是,不要在最后一个列名后加逗号,否则程序错误。
检索所有列
获取 Products
表中所有列;
SELECT *
FROM Products;
- * 称为通配符,
SELECT *
将返回表中所有列,列的顺序一般是表中出现的物理顺序,但是有些时候也并非如此。
检索不同的值
获取 Products
表中所有供应商 ID;
SELECT DISTINCT vend_id
FROM Products;
DISTINCT
使得vend_id
列的每个结果只出现一次。- 注意
DISTINCT
关键字作用于所有检索的列,比如SELECT DISTINCT vend_id, prod_price
将按照两个列vend_id
与prod_price
的组合罗列出来。
限制检索数量
获取 Products
表中五行数据;
SELECT TOP 5 prod_name
FROM Products;
TOP
关键字限制最多返回多少行,注意并不代表最大五行,只返回最多五行结果。- 不同数据库管理系统使用不同的语法:
-- DB2 数据库
SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY;
-- ORACLE 数据库
SELECT prod_name
FROM Products
WHERE ROWNUM <= 5;
-- MySQL、MariaDB、PostgreSQL、SQLite 数据库
SELECT prod_name
FROM Products
LIMIT 5;
- 拓展:
LIMIT
与OFFSET
结合,LIMIT
指定返回的行数,OFFSET
执行从哪里开始。LIMIT 5 OFFSET 5
代表从第5行起的5行数据。 - 注意 第5行 其实是 第6个 数据。因为第一个被检索的行是 第0行。
注释规则
不同的数据库管理系统中注释规则有所不同,但是大差不差,读者在不同的 DBMS 自行尝试;
-- 这是一条行内注释
# 这个行内注释方法只有部分 DBMS 支持
/*这是一个多行注释方法大部分 DBMS 都适用
*/
排序检索数据
s q l sql sql 使用 ORDER BY
子句进行排序;
单列排序
检索 Products
表中 prod_name
列,并将检索结果以字母顺序排序;
SELECT prod_name
FROM Products
ORDER BY prod_name;
- 注意
ORDER BY
子句的位置必须保证是语句中最后一列; - 可以使用非检索的列作为排序要求。
多列排序
对 Products
的多列检索结果首先按照价格、然后按照名称排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
按列位置排序
对 Products
的多列检索结果按照相对列位置进行排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2,3;
- 即,先按相对位置2
prod_price
然后按相对位置3prod_name
进行排序。
指定排序方向
数据排序默认方向为:“升序”(从A-Z)方向。升序排序的关键词为 ASC
,Ascending;
有升序就有降序,降序排序的关键词为 DESC
,即 Descending;
-- DESC 案例
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC;
- 拓展:读者思考下列代码是按照什么排序方向组合?
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC, prod_name;
答案是先按照 prod_price
降序,对其中结果按照 prod_name
升序方向排序。
–
以上