SQL必知必会 第二章 检索数据

229 阅读3分钟

SELECT 语句

SELECT的用途是从一个或多个表中检索信息。

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

检索单个列

列名写在 SELECT 关键字之后, FROM 关键字指出从哪个表中检索数据

SELECT 列名, 列名 FROM 表名;

SELECT 语句从 Products 表中检索一个名为 prod_name的列:

image.png

MySql命令行最后一条信息说明检索了多少行,以及花了多长时间。

结束 SQL 语句

多条 SQL 语句必须以分号( ; )分隔。

SQL 语句和大小写

SQL 语句不区分大小写。

许多 SQL 开发人员喜欢对 SQL 关键字使用大写,而对列名和表名使用小写,这样做代码更易于阅读和调 试。

使用空格

在处理 SQL 语句时,其中所有空格都被忽略。 SQL 语句可以写成长长的一行,也可以分写在多行。

下面这 3 种写法的作用是一样的:

SELECT prod_name
FROM Products;

SELECT prod_name FROM Products;

SELECT
prod_name
FROM
Products;

检索多个列

想从一个表中检索多个列,必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。

Products 表中选择 3 列:

image.png

检索所有列

SELECT 语句还可以检索所有的列,实际列名的位置使用星号(*)通配符可以做到这点: image.png

检索不需 要的列通常会降低检索速度和应用程序的性能。

检索不同的值

使用 DISTINCT 关键字,指示数据库只返回不同的值

image.png

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

限制结果行数

MySQL中,使用 SELECT 时,可以用 LIMIT 关键字来限制最多返回多少行:

image.png

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

指定从第几行开始

LIMIT 带的 OFFSET 指定从哪里开始:

image.png

LIMIT 5 OFFSET 5 指示 MySQL 等 DBMS 返回从第 5 行起的 5 行数据。Products 表中只有 9 种产品,所以 LIMIT 5 OFFSET 5 只返回了 4 行数据。

第 0 行

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

image.png

MySQL捷径

MySQL可以把 LIMIT 4 OFFSET 3 语句简化为 LIMIT 3,4。使用这个语法,逗号之前的值对应 OFFSET,逗号之后的值对应LIMIT(反着的,要小心)。

image.png

使用注释

行内注释

注释使用-- (两个连字符)嵌在行内。 -- 之后的文本就是注释:

image.png

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

image.png

多行注释

多行注释可以在脚本的任何位置停止和开始,注释从/*开始,到*/结束, /**/之间的任何内容都是注释。这种方式常用于把代码注释掉:

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

挑战题

从 Customers 表中检索所有的 ID(cust_id)

image.png

OrderItems 表包含了所有已订购的产品(有些已被订购多次)。编写SQL 语句,检索并列出已订购产品( prod_id)的清单(不用列每个订单,只列出不同产品的清单)。提示:最终应该显示 7 行

image.png

编写 SQL 语句, 检索 Customers 表中所有的列, 再编写另外的 SELECT 语句,仅检索顾客的 ID。使用注释,注释掉一条 SELECT 语句,以便运行另一条 SELECT 语句。(当然,要测试这两个语句。)

image.png