这一节将介绍如何使用 SELECT 语句从表中检索一个或多个数据列

连接MySQL后,首先进入我们的样例数据库

1
USE test;

检索单个列

使用 SELECT ... FROM ...; 结构来检索单个列

1
2
SELECT prod_name
FROM Products;

可以看见,数据内容已经检索成功(prod_name那一列)

说明:未排序数据

如果没有规定排序,那么返回的数据可能没有特定的顺序。可能是按照插入的顺序返回,也可也能不会。只要返回相同数目的行,就是正常的。

提示:别漏了分号

多条SQL语句必须以英文分号(;)分隔。多数DBMS不需要在单条SQL语句后加分号,但加上分号也没有坏处,为了养成习惯,应当始终记得加上分号。

提示:使用空格

在处理SQL语句时,其中的所有空格都会被会忽略,因此下面的 3 种写法是相同的

1
2
3
4
5
6
7
8
9
SELECT prod_name
FROM Products;

SELECT prod_name FROM Products;

SELECT
prod_name
FROM
Products;

多数SQL开发人认为,加SQL语句分成多行更容易阅读和调试

检索多个列

使用逗号分隔各个列即可

1
2
SELECT prod_id, prod_name, prod_price
FROM Products;

检索所有列

可以通过使用星号(*)做到这点

检索不同的值

直接使用SELECT语句将返回所有的行

但如果你需要去重,则可以使用DISTINCT关键字

注意:不能部分使用 DISTINCT

DISTINCT关键字作用于所有的列,而不仅仅是跟在后面的那一列

限制结果

SELECT 默认返回所有的行,但如果你只想返回第一行或一定数量的行,该怎么办呢?

在各种数据库软件中的做法是不同的,这里以MySQL系列举例

1
2
3
SELECT prod_name
FROM Products
LIMIT 5;

当然,你还可以使用OFFSET指定从哪儿开始

1
2
3
SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;

注意:第 0 行

第一个被检索的行是第0行,而不是第1行

因此,LIMIT 1 OFFSET 1 会检索第2行,而不是第1行

技巧:缩写

LIMIT y OFFSET x可以缩写成LIMIT x,y(注意是反着的,可以记忆为从第x行返回y列)

注释

大多数数据库都支持下面三种注释:

  • 两个连字符单行注释(--
  • Linux风格的单行注释(#),但是某些DBMS不支持
  • C/C++风格注释的多行注释(/* */