第2课 检索数据

第2课 检索数据

2.1 SELECT语句

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

为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。

2.2 检索单个列

SELECT prod_name
FROM Products;

上述语句利用SELECT语句从Products表中检索一个名为prod_name的列。所需的列名写在SELECT关键字之后,FROM关键字指出从哪个表中检索数据。

提示:结束SQL语句
多条SQL语句必须以分号(;)分隔。

提示:SQL语句和大小写
请注意,SQL语句不区分大小写,因此SELECT与select是相同的。同样,写成Select也没有关系。不过,一定要认识到虽然SQL是不区分大小写的,但是表名、列名和值可能有所不同(这有赖于具体的DBMS及其如何配置)。

2.3 检索多个列

提示:当心逗号
在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误。

SELECT prod_id, prod_name, prod_price
FROM Products;

在这个例子中,指定了3个列名,列名之间用逗号分隔。

2.4 检索所有列

SELECT *
FROM Products;

如果给定一个通配符(*),则返回表中所有列。

提示:检索未知列
使用通配符有一个大优点。由于不明确指定列名(因为星号检索每一列),所以能检索出名字未知的列。

2.5 检索不同的值

SELECT DISTINCT vend_id
FROM Products;

如果使用DISTINCT关键字,它必须直接放在列名的前面。

警告:不能部分使用DISTINCT
DISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。

2.6 限制结果

在SQL Server和Access中使用SELECT时,可以使用TOP关键字来限制最多返回多少行,如下所示:

SELECT TOP 5 prod_name
FROM Products;

如果你使用的是DB2,很可能习惯使用下面这一DBMS特定的SQL语句,像这样:

SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY;

如果你使用Oracle,需要基于ROWNUM(行计数器)来计算行,像这样:

SELECT prod_name
FROM Products
WHERE ROWNUM <=5;

如果你使用MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT 子句,像这样:

SELECT prod_name
FROM Products
LIMIT 5;

LIMIT 5指示MySQL等DBMS返回不超过5行的数据。

为了得到后面的5行数据,需要指定从哪儿开始以及检索的行数,像这样:

SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;

LIMIT 5 OFFSET 5指示MySQL等DBMS返回从第5行起的5行数据。第一个数字是指从哪儿开始,第二个数字是检索的行数。

警告:第0行
第一个被检索的行是第0行,而不是第1行。因此,LIMIT 1 OFFSET 1会检索第2行,而不是第1行。

提示:MySQL和MariaDB快捷键
MySQL和MariaDB支持简化版的LIMIT 4 OFFSET 3语句,即LIMIT 3,4。使用这个语法,,之前的值对应LIMIT, ,之后的值对应OFFSET。

2.7 使用注释

我们先来看行内注释:

SELECT prod_name    -- 这是一条注释 
FROM Products;

-- 之后的文本就是注释,例如,这用来描述CREATE TABLE语句中的列就很不错。

下面是另一种形式的行内注释(虽然这种形式很少得到支持)。

# 这是一条注释
SELECT prod_name 
FROM Products;

在一行的开始处使用#,这一整行都将作为注释。

你也可以进行多行注释,注释可以在脚本的任何位置停止和开始。

/* SELECT prod_name, vend_id 
FROM Products; */ 
SELECT prod_name 
FROM Products;

注释从/*开始,到*/结束,/*和*/之间的任何内容都是注释。

2.8 小结

这一课学习了如何使用SQL的SELECT语句来检索单个表列、多个表列以及所有表列。你也学习了如何返回不同的值,如何注释代码。

原文地址:https://www.cnblogs.com/zhangsonghui/p/12934047.html