上个笔记中介绍了一些关于数据库、SQL的基础知识,并且创建我们后续练习所需的数据库、表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习。
正如上个笔记中所说,SQL语句是由简单的英语单词构成。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。
注意:SQL是一种语言,而不是一个应用程序。具体如何写SQL语句并显示语句输出,是随不同应用程序而变化的。
SELECT语句:
SELECT语句大概是SQL语句中最经常使用的语句,它的用途是:从一个或多个表中检索一个或多个数据列。
为了使用SELECT检索数据,必须至少给出两条信息:
想选择什么;
从什么地方选择;
1.1.1 检索单个列,语句:
SELECT 列名
FROM 表;
分析:
注意:
1.1.2 检索多个列,语句:
SELECT 列名1,列名2,列名3
FROM 表;
注意:
SELECT *
FROM 表;
分析:
注意:
语句:
SELECT DISTINCT 列名
FROM 表;
分析:
注意:
SELECT 列名
FROM 表
LIMIT 5;
SELECT 列名
FROM 表
LIMIT 5 OFFSET 2;
SELECT 列名
FROM 表
LIMIT 5,2;
分析:
语句1返回:从第1行开始,最多5行的数据;
语句2返回:从第3行(跳过前2行)开始,最多5行的数据;
OFFSET后面的数字表示:从哪开始;
LIMIT后面的数字表示:检索的行数;
语句3:语句2的简化版,逗号之前的值对应OFFSET,之后的值对应LIMIT;
注意:
形式1:
SELECT 列名 -- 这是一条注释
FROM 表;
形式2:
# 这是一条注释
SELECT 列名
FROM 表;
/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM
Products;
分析:
在行内注释中,形式2很少得到支持。但是MySQL中是支持的。
多行注释中,
注释从 /* 开始,到 */ 结束,/* 和 */之间的任何内容都是注释。
这种方式常用于给代码加注释。
本小节将介绍如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。
通过SELECT检索出的数据,如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,就不一定了。因此,关系数据库设计理论认为,如果不明确规定排序顺序,则不应假定检索出的数据的顺序有任何意义。
子句(clause):
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。
SELECT 列名
FROM 表
ORDER BY 列名;
SELECT 列名1,列名2,列名3
FROM 表
ORDER BY 列名1,列名2;
提示:
注意:
除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。
语句:
SELECT 列名1,列名2,列名3
FROM 表
ORDER BY 2,3;
提示:
利用DESC(降序)、ASC(升序、默认)
SELECT 列名1,列名2,列名3
FROM 表
ORDER BY 列名1 DESC;
SELECT 列名1,列名2,列名3
FROM 表
ORDER BY 列名1 DESC, 列名2;
分析:
提示:
参考资料:
1.《SQL必知必会》Ben Forta。