SQL简单查询-2

目录

第一关任务描述

相关知识

检索数据表中一个字段的内容

检索数据表中多个字段的内容

检索数据表中所有字段的内容

编程要求

测试说明

第一关实验代码:

 第二关任务描述

相关知识

带限制条件的查询

表达式查询

编程要求

第二关实验代码

第三关任务描述

相关知识

使用WHERE语句检索单范围数据

使用WHERE语句检索双范围数据

使用WHERE语句检索不匹配某条件的语句

编程要求

测试说明

第三关实验代码


第一关任务描述

本关任务:

  • 用 SELECT 语句检索数据表中指定字段的数据;

  • 用 SELECT 语句检索数据表中所有字段的数据。

相关知识

为了完成本关任务,你需要掌握:1.如何获取数据表中指定字段的数据,2.如何获取数据表中的所有数据。

若想使用 SELECT 语句来检索数据表中的数据,你至少得弄清楚两个重要的信息:(1) 你想检索的是什么?(2) 你想检索的内容它在什么地方?

检索数据表中一个字段的内容

我们将从最简单的 SELECT 语句开始学习。

语法规则为: SELECT 字段名 FROM 表名

举个例子 我们想从表 Customers 中得到 cust_name 字段所有的内容,即所有人的姓名。表 Customers 的内容如下图所示:

输入:

SELECT cust_name
FROM Customers

输出:

我们成功从表 Customers 中检索到了字段 cust_name 的内容。

检索数据表中多个字段的内容

如果我想检索更多的字段呢?当然可以做到,而且语法结构与检索单个字段的内容类似,只需要你把想要检索的字段,统统放到 SELECT 后面就可以了,记得要加逗号隔开。

语法规则为: SELECT 字段名1, 字段名2, 字段名3 FROM 表名

举个例子 我们想从表 Customers 中得到 cust_id 和 cust_name 字段所有的内容。

输入:

SELECT cust_id, cust_name
FROM Customers

输出:

可以看到,我们成功从表 Customers 中检索到了字段 cust_id 和 cust_name 的内容。

检索数据表中所有字段的内容

如果我想检索一张表内的所有字段呢?是不是需要我把字段一个一个列出来呀?如果我不记得字段都有哪些了怎么办呢?当然有解决办法! 我们可以通过在 SELECT 语句后使用 * 来返回表内所有字段的内容。

语法规则为: SELECT * FROM 表名

举个例子 我们想从表 Customers 中得到所有字段的内容。

输入:

SELECT *
FROM Customers

输出:

我们成功输出了表 Customers 中所有字段的所有内容。很简单对不对?

下面轮到你们来试一试了。

编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需根据右侧提示,完成以下任务:

  • 补全右侧代码片段中 retrieving multiple column 下 Begin-End 区间的代码,检索表 Products 中字段 prod_name 和 prod_price 的所有内容;

  • 补全右侧代码片段中 retrieving all column 下 Begin-End 区间的代码,检索表 Products 中所有字段的内容。

其中表 Products 的结构如下图所示;

测试说明

测试过程:

  • 本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第一关实验代码:

USE Mall
GO

SET NOCOUNT ON

---------- retrieving multiple column ----------
-- ********** Begin ********** --
select prod_name,prod_price from Products;


-- ********** End ********** --

GO

---------- retrieving all column ----------
-- ********** Begin ********** --
select * from Products;

-- ********** End ********** --

GO

 第二关任务描述

本关任务:

  • 查询数据表中的指定字段的数据;

  • 查询数据表中指定字段运算后的数据。

相关知识

为了完成本关任务,你需要掌握:1.使用限制关键字查询数据表中的指定字段的内容,2.使用运算符查询数据表中指定字段运算后的内容。

带限制条件的查询

SELECT 语句可以帮你返回所有匹配的内容,甚至整张表的内容。但是如果你仅仅是想要第一行的数据或者前几行的数据怎么办呢?好消息是我们可以通过限制条件来查询,不过限制条件的语法在各个数据库中的语法是不同的。在 SQL Server 中:

语法规则为: SELECT TOP 行数 字段名 FROM 表名

举个例子 我们想从表 Customers 中得到 cust_name 字段的前 3 行内容。表 Customers 的内容如下图所示:

输入:

SELECT TOP 3 cust_name
FROM Customers

输出:

当然,如果你使用的是 MYSQL 或者其他数据库,语法可不一样啊,你得去问 google 咯^-^。

表达式查询

有时候,你并不想知道某个字段的内容,而是想知道经过处理后的内容。这种情况有很多。比如,你想知道这一批的书打6折后都是多少钱?你想知道字段 A 和字段 B 加起来是多少?这是可以做到的,我们可以使用表达式查询来达到此目的。

语法规则为: SELECT 包含字段名的表达式 AS 新字段名 FROM 表名

其中,表达式计算的结果会放在新字段名下面,但是新字段名并没有存储在表中,而是暂时把结果返回给你,供你参考。

举个例子 我们想从把表 Customers 中每位消费者的 cust_id 都 +1 。表 Customers 的内容与上例的相同。

输入:

SELECT cust_id, cust_id+1 as new_cust_id
FROM Customers

输出:

编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需:

  • 补全右侧代码片段中 retrieving with limited 下 Begin-End 区间的代码,检索表 Products 中字段 prod_name 的前两项内容;
  • 补全右侧代码片段中 retrieving with expression 下 Begin-End 区间的代码,检索表 Products 中字段 prod_price 的内容,并检索到字段 prod_price 打8折后的价钱,命名该打折后的价格为 discount_price 。

其中表 Products 的结构如下图所示:

测试说明

测试过程:

  • 本关涉及到的测试文件是 step2_test.sh ,平台将运行用户补全的 step2.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第二关实验代码

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with limited ----------
-- ********** Begin ********** --
select top 2 prod_name 
from Products;

-- ********** End ********** --
GO

---------- retrieving with expression ----------
-- ********** Begin ********** --
select prod_price,(prod_price*0.8) as discount_price
from Products


-- ********** End ********** --
GO


第三关任务描述

本关任务:使用 WHERE 语句和逻辑表达式,检索数据表中指定字段的符合条件的数据。

相关知识

为了完成本关任务,你需要掌握:如何使用 WHERE 语句和操作符来选择符合条件的数据。

在实际情况中,我们不仅需要对某字段的全部数据进行检索,更多的是需要对符合我们需求的数据进行检索。SQL 语言的发明者当然想到了这些,为我们提供了更多的方法来检索你想要的数据。

WHERE 语句就是这样一种存在,只要把你的需求正确地放在 WHERE 后边,它就能帮你检索到你想要的内容。

下表为与 WHERE 语句搭配的操作符列表:

使用WHERE语句检索单范围数据

如果你想在房屋中介数据库中,寻找小于100万的房子,你应该怎么做?你是不是很自然的就想到了要用操作符 < 的。

让我们举个例子来看看,检索单范围数据是怎么实现的:

我们想从表 Customers 中找到消费大于 1000 的人。表 Customers 的内容如下图所示:

输入:

SELECT cust_name, cost
FROM Customers
WHERE cost > 1000

输出:

不仅是 > ,其他操作符 < , <= , >= , !< , !> 的使用方法也是一样的。

使用WHERE语句检索双范围数据

还有一种情况,就是你心目中有一个理想的区间范围。比如你想买房,不能太便宜,因为便宜的有可能又小又偏僻,也不能太贵,因为。。。呵呵大家懂的。这时候,你就需要划定一个范围,SQL 很贴心的为大家提供了自然语言关键字,用来划定数字的范围。

语法规则为: WHERE 字段名 BETWEEN 数字1 AND 数字2

举个例子 我们想从表 Customers 中找到消费在 1000~3000 之间的人。表 Customers 的内容和上例相同。

输入:

SELECT cust_name, cost
FROM Customers
WHERE cost BETWEEN 1000 AND 3000

输出:

Tips: 注意,使用 BETWEEN...AND... 时一定要记住较小的数在前边,较大的数在后边!

使用WHERE语句检索不匹配某条件的语句

有很多人可能有过这样的感觉,问你想要什么样的男/女朋友,你可能说想要这样的,那样的,好像都不错,看感觉吧。虽然你可能不知道你最想要什么,但是你一定知道你不想要什么。

SQL 语句也一样,它为你提供了选择不想要什么的机会。

举个例子 我们想从表 Customers 中找到消费者不在 New York 的人。表 Customers 的内容和上例相同。

输入:

SELECT cust_name, cust_city
FROM Customers
WHERE cust_city <> 'New York'

Tips: 注意,在 SQL Server 中,不等于只能用 <> 符号,不能使用 != 符号。

编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需:

  • 补全右侧代码片段中 retrieving with range 下 Begin-End 区间的代码,检索表 Products 中字段 prod_price 价钱介于 3 和 5 的内容,要求显示出商品名称和价钱;

  • 补全右侧代码片段中 retrieving with nomatches 下 Begin-End 区间的代码,检索表 Products 中除了 Lion toy 的商品名称和价钱。

其中表 Products 的内容如下图所示:

测试说明

测试过程:

  • 本关涉及到的测试文件是 step3_test.sh ,平台将运行用户补全的 step3.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第三关实验代码

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with range ----------
-- ********** Begin ********** --
select prod_name,prod_price
from Products
where prod_price between 3 and 5


-- ********** End ********** --

GO

---------- retrieving with nomatches ----------
-- ********** Begin ********** --
select prod_name,prod_price
from Products
where prod_name <> 'Lion toy'


-- ********** End ********** --

GO

相关推荐

  1. <span style='color:red;'>SQL</span><span style='color:red;'>查询</span>

    SQL查询

    2024-03-26 06:10:06      40 阅读
  2. 数据库查询--简单查询

    2024-03-26 06:10:06       34 阅读
  3. 数据库中关于结构化查询语言sql简单介绍

    2024-03-26 06:10:06       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 06:10:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 06:10:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 06:10:06       87 阅读
  4. Python语言-面向对象

    2024-03-26 06:10:06       96 阅读

热门阅读

  1. oracle切换ADG后JVM组件查询报错ORA-29516处理

    2024-03-26 06:10:06       58 阅读
  2. mybatisplus如何拼接动态sql

    2024-03-26 06:10:06       45 阅读
  3. macOS - 安装 b2 (Jamfile)

    2024-03-26 06:10:06       42 阅读
  4. ffmpeg把一个平面视频,做成左右平面视频

    2024-03-26 06:10:06       41 阅读
  5. ffmpeg重点之时间戳,PTS、DTS、time_base

    2024-03-26 06:10:06       37 阅读