SQL必知必会(2)检索数据

关键字(keyword):作为SQL组成部分的保留字。关键字不能用作表或列的名字。

SELECT语句:从一个或多个表中检索信息,必须给出想选择什么,以及从什么地方选择。

检索单个列:

1
2
SELECT prod_name
FROM Products;
prod_name
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
8 inch teddy bear
12 inch teddy bear
18 inch teddy bear
Raggedy Ann
King doll
Queen doll

SQL不区分大小写,一般对关键字使用大写,并将SQL语句分成多行,这样会使代码易于阅读和调试。

检索多个列:

1
2
SELECT prod_id, prod_name, prod_price
FROM Products;
prod_id prod_name prod_price
BNBG01 Fish bean bag toy 3.49
BNBG02 Bird bean bag toy 3.49
BNBG03 Rabbit bean bag toy 3.49
BR01 8 inch teddy bear 5.99
BR02 12 inch teddy bear 8.99
BR03 18 inch teddy bear 11.99
RGAN01 Raggedy Ann 4.99
RYL01 King doll 9.49
RYL02 Queen doll 9.49

检索所有列:

1
2
SELECT *
FROM Products;

使用通配符 * 的优点:可以检索出名字未知的列。

检索不同的值:

1
2
SELECT vend_id 
FROM Products;
vend_id
BRS01
BRS01
BRS01
DLL01
DLL01
DLL01
DLL01
FNG01
FNG01
1
2
SELECT DISTINCT vend_id
FROM Products;
vend_id
BRS01
DLL01
FNG01

关键字DISTINCT可以去重,但会作用于所有的列,不仅是跟在它后边的那一列。

限制结果:
如果想检索一定数量的行,比如只检索5行,以MySQL为例。

1
2
3
SELECT prod_name
FROM Products
LIMIT 5;
prod_name
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
8 inch teddy bear
12 inch teddy bear

要想得到后5行数据,需要指定从哪开始以及检索的行数:

1
2
3
SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;
prod_name
18 inch teddy bear
Raggedy Ann
King doll
Queen doll

表中共9行,所以检索只返回4行。

第一个检索的行是第0行。

LIMIT 4 OFFSET 3可以简化:LIMIT 3,4。需要注意数字顺序相反。

注释:

1
2
3
4
5
SELECT prod_name     --这是一条注释
FROM Products;
# 这是一条注释
/*这是
一条注释*/