【核心查询】万能的SELECT:如何从表中获取数据?

【核心查询】万能的SELECT:如何从表中获取数据?

好的,我们继续这个系列。这是第二篇文章的完整内容。

【核心查询】万能的SELECT:如何从表中获取数据?

专辑: SQL快速上手:15篇入门到精通 标签: SQL SELECT 数据库查询 入门教程 数据检索

前言

在上一篇文章 【SQL启航】一切从这里开始:数据库与SQL核心概念 中,我们成功搭建了学习环境,并创建了包含顾客、产品和订单信息的三张表。我们的“数据世界”已经准备就绪。

今天,我们将学习SQL中最常用、也是最核心的命令:SELECT。

SELECT 语句的唯一目的就是从数据库表中**检索(Retrieve)**数据。你在SQL世界中90%以上的时间,都会花在和它打交道上。它就像是你在数据海洋中探索的潜水艇,能带你精准地到达任何你想去的地方,看到任何你想看的数据。

准备好了吗?让我们开始第一次真正的数据探索之旅!

小提示: 本文所有SQL代码,你都可以直接复制到上一篇安装好的数据库工具(如DB Browser for SQLite)的“执行SQL”窗口中运行,并立即看到结果。

1. 最基本的查询:SELECT ... FROM ...

SELECT 语句最简单的形式由两个关键字组成:SELECT 和 FROM。

SELECT 后面跟着你想要查看的列的名称。FROM 后面跟着你想要从哪个表中检索数据。

它的基本语法结构如下:

SELECT column_name

FROM table_name;

示例1:查询所有产品的名称

假设我们想知道我们的产品库里都有哪些产品。我们可以从 Products 表中选择 prod_name 这一列。

输入SQL:

SELECT prod_name

FROM Products;

执行结果:

prod_name倚天剑屠龙刀赤兔马方便面羽毛扇

看,就这么简单!我们成功地从Products表中取出了所有产品的名称。

2. 查询多个列

当然,我们通常不满足于只看一个信息。如果想同时查看产品的名称和价格呢?

很简单,只需要在 SELECT 后面用**逗号(,)**隔开你想要的多个列名即可。

示例2:查询产品名称和价格

输入SQL:

SELECT prod_name, prod_price

FROM Products;

执行结果:

prod_nameprod_price倚天剑6888.00屠龙刀7999.00赤兔马9999.00方便面5.50羽毛扇120.00

请注意:

SELECT后面列出的列名顺序,就是它们在结果中显示的顺序。你可以试着调换 prod_name 和 prod_price 的位置看看结果有何不同。最后一个列名后面不要加逗号。

3. 查询所有列:万能的 * 通配符

有时候,我们想查看一张表里的所有信息,一个列都不落下。如果表里有几十个列,一个一个地写出来显然太麻烦了。这时,我们可以使用**星号(*)**通配符。

* 代表“所有列”。

示例3:查询顾客表的所有信息

输入SQL:

SELECT *

FROM Customers;

执行结果:

cust_idcust_namecust_city1001刘备北京1002关羽上海1003张飞深圳1004赵云杭州1005曹操北京

使用建议: 虽然 * 非常方便,但在实际的开发工作中应谨慎使用。因为它会检索所有列,可能会获取到你并不需要的数据,从而降低查询效率,增加网络开销。最好的习惯是:只取你需要的列。 不过,在学习和探索新表的结构时,SELECT * 是一个非常棒的工具。

4. 去除重复行:DISTINCT 关键字

在上面的顾客表示例中,我们注意到“北京”这个城市出现了两次。如果我们只想知道我们的顾客都来自哪些不同的城市,该怎么办?

DISTINCT 关键字可以帮我们解决这个问题。它必须放在 SELECT 后面,列名之前。

示例4:查询顾客所在的城市(不重复)

输入SQL:

SELECT DISTINCT cust_city

FROM Customers;

执行结果:

cust_city北京上海深圳杭州

可以看到,结果中的“北京”只出现了一次。DISTINCT 自动帮我们过滤掉了重复的值。

注意: DISTINCT 作用于其后跟的所有列,而不仅仅是第一个列。例如,SELECT DISTINCT cust_name, cust_city 会返回唯一的“姓名和城市”组合。

5. 限制返回结果的数量:LIMIT 子句

当表中的数据非常多时(成千上万行),一次性把它们全都检索出来可能不是个好主意。我们可能只想“看一眼”数据长什么样,或者只需要前几条记录。

LIMIT 子句可以限制查询返回的行数。

示例5:只看前3个产品

输入SQL:

SELECT prod_name

FROM Products

LIMIT 3;

执行结果:

prod_name倚天剑屠龙刀赤兔马

LIMIT 也可以接受两个参数,用于实现分页功能。LIMIT offset, count 表示跳过 offset 行,然后取 count 行。

示例6:从第2行开始,取3条产品数据

输入SQL:

-- 跳过第1行,从第2行开始取

SELECT prod_name

FROM Products

LIMIT 1, 3;

执行结果:

prod_name屠龙刀赤兔马方便面

数据库兼容性提示: LIMIT 的语法在 MySQL, PostgreSQL, 和 SQLite 中是通用的。但在其他一些数据库系统(如 SQL Server)中,可能会使用 TOP 关键字来实现类似功能。

6. 好习惯:给你的SQL加点注释

当SQL语句变得越来越复杂时,为它添加注释是一个非常好的习惯。注释可以帮助他人(以及未来的你)快速理解代码的意图。

SQL中的注释主要有两种:

单行注释: 使用 -- (两个减号)。从 -- 开始,到这一行结束的所有内容都会被当作注释。多行注释: 使用 /* ... */。可以跨越多行。

示例7:带注释的查询

/*

这是一个多行注释。

下面的查询是为了获取所有产品的名称和价格,

但只显示前3条记录。

*/

SELECT

prod_name, -- 我想要产品的名字

prod_price -- 以及产品的价格

FROM

Products -- 从产品表中获取

LIMIT 3; -- 只看前3个

注释部分不会被数据库执行,它们只为阅读代码的人服务。

总结与展望

太棒了!你已经掌握了SQL数据检索的根基。

在今天的文章中,我们学习了:

使用 SELECT ... FROM ... 进行最基本的查询。如何选择单个、多个或所有列。使用 DISTINCT 关键字去除重复的结果。使用 LIMIT 子句限制输出的行数。如何为SQL代码添加注释。

现在,你已经可以从数据库中取出你想要的数据了。但这还不够,我们取出的数据是无序的,而且是全量的。如果我想找到价格最贵的产品,或者只看“北京”的顾客怎么办?

别担心,这正是我们下一篇文章要解决的问题。

下一篇预告:【排序与筛选】让数据井井有条:ORDER BY与WHERE子句

敬请期待!

相关任务

365bet网上娱乐平台 滴滴司机怎么换驾驶证

滴滴司机怎么换驾驶证

📅 07-01 👁️ 1501
Bet中文365 内篇·齐物论

内篇·齐物论

📅 07-08 👁️ 8307
365bet网上娱乐平台 荣耀play各系列大介绍

荣耀play各系列大介绍

📅 06-28 👁️ 2145