不知道 MySQL 咋学?刷完牛客这 50 道题就够了!(第二篇)

导读:本篇文章讲解 不知道 MySQL 咋学?刷完牛客这 50 道题就够了!(第二篇),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

本次内容共分为十篇,每次五题

前言

你是否还在烦恼 SQL 该从何学起,或者学了 SQL 想找个地方练练手?好巧不巧,最近在工作之余登上牛客,发现了牛客不知道啥时候上线了SQL 必知必会的练习题。

《SQL 必知必会》作为麻省理工学院、伊利诺伊大学等众多大学的参考教材,由浅入深地讲解了SQL的基本概念和语法。涉及数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容。实例丰富,方便查阅,可以说作为一个 CRUD BOY/GIRL 必读书目。

想着正好给它刷一遍,然后将自己刷题的一些想法总结下,于是有了今天这篇文章,希望能给需要的小伙伴一点点帮助

不知道 MySQL 咋学?刷完牛客这 50 道题就够了!(第二篇)

SQL6 按照数量和价格排序

描述

假设有一个 OrderItems 表

quantity item_price
1 100
10 1003
2 500

问题

编写 SQL 语句,显示 OrderItems 表中的数量(quantity)和价格(item_price),并按数量由多到少、价格由高到低排序

示例答案

返回 quantity 和 item_price

示例

1

2

3

4

5

6

7

8

DROP TABLE IF EXISTS `OrderItems`;

CREATE TABLE IF NOT EXISTS `OrderItems` (

  `quantity` INT(64) NOT NULL COMMENT '数量',

  `item_price` INT(64) NOT NULL COMMENT '订单价格'

);

INSERT INTO `OrderItems` VALUES (1,100),

(10,1003),

(2,500);

解答

同样是查询语句,要对查询结果进行排序,则需要使用 ORDER BY 关键字,最后则是需要注意是正序还是倒序,题目中由多到少和由高到低都是属于倒序,所以需要使用关键字 DESC

1

SELECT quantity, item_price FROM OrderItems ORDER BY quantity DESC, item_price DESC;

 

SQL7 检查SQL语句

描述

有 Vendors 表

vend_name
海底捞
小龙坎
大龙燚

问题

下面的 SQL 语句有问题吗?尝试将它改正确,使之能够正确运行,并且返回结果根据 vend_name 逆序排列

1

2

3

SELECT vend_name,

FROM Vendors

ORDER vend_name DESC;

示例展示

返回 vend_name

vend_name
海底捞
小龙坎
大龙燚

示例

1

2

3

4

5

6

7

DROP TABLE IF EXISTS `Vendors`;

CREATE TABLE IF NOT EXISTS `Vendors` (

  `vend_name` VARCHAR(255) NOT NULL COMMENT 'vend名称'

);

INSERT INTO `Vendors` VALUES ('海底捞'),

('小龙坎'),

('大龙燚');

解答

1

SELECT vend_name, FROM Vendors ORDER vend_name DESC;

主要存在两处错误,首先是选取需要展示的列 vend_name 后,后面并没有跟上需要展示的其他列,所以此处多了一个 ,。另外,对选取列进行排序使用的关键字是 ORDER BY,而题目中只是给出了 ORDER,忘记了 BY,所以会导致查询结果错误。针对这两处错误改正后,得到的正确的语句如下所示。

1

SELECT vend_name FROM Vendors ORDER BY vend_name DESC;

 

SQL8 返回固定价格的产品

描述

有表 Products

prod_id prod_name prod_price
a0018 sockets 9.49
a0019 iphone13 600
b0018 gucci t-shirts 1000

问题

从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9.49 美元的产品。

示例结果

返回 prod_id 和 prod_name

prod_id prod_name
a0018 sockets

示例

1

2

3

4

5

6

7

8

9

DROP TABLE IF EXISTS `Products`;

CREATE TABLE IF NOT EXISTS `Products` (

  `prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',

  `prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',

  `prod_price` DOUBLE NOT NULL COMMENT '产品价格'

);

INSERT INTO `Products` VALUES ('a0018','sockets',9.49),

('a0019','iphone13',600),

('b0019','gucci t-shirts',1000);

解答

查询符合指定条件的数据,可以使用关键字 WHERE 对条件进行限制,然后就是对条件的实现,这里可以使用两种方式。

第一种,直接利用 =,既然条件是需要价格为 9.49 美元的产品,则我们将价格列设置为 prod_price = 9.49 即可。

1

SELECT prod_id, prod_name FROM Products WHERE prod_price = 9.49;

第二种,除开 = 之外,我们也可以使用 in,表示价格只要在指定的数据之中,我们将价格列设置为 in (9.49) 即可,但是此时要注意不要忽略 (),否则语句会报错。

1

SELECT prod_id, prod_name FROM Products WHERE prod_price in (9.49);

 

SQL9 返回更高价格的产品

描述

Products 表

prod_id prod_name prod_price
a0018 sockets 9.49
a0019 iphone13 600
b0019 gucci t-shirts 1000

问题

编写 SQL 语句,从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9 美元或更高的产品。

示例答案

返回 prod_id 商品 id 和 prod_name 商品名称

prod_id prod_name
a0018 sockets
a0019 iphone13
b0019 gucci t-shirts

示例

1

2

3

4

5

6

7

8

9

DROP TABLE IF EXISTS `Products`;

CREATE TABLE IF NOT EXISTS `Products` (

`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',

`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',

`prod_price` DOUBLE NOT NULL COMMENT '产品价格'

);

INSERT INTO `Products` VALUES ('a0011','usb',9.49),

('a0019','iphone13',600),

('b0019','gucci t-shirts',1000);

解答

条件查询语句,查询格式:

SELECT [列名] FROM [表名] WHERE 判断条件 …

既然判断条件是要产品价格不低于 9 美元,则产品需要大于等于 9 美元,可以将产品价格设置为 prod_price >= 9 即可。

1

SELECT prod_id, prod_name FROM Products WHERE prod_price >= 9;

此外,我们还可以将 >= 拆分为两个条件,一个是 prod_price > 9,而另一个则是 prod_price = 9,然后满足任一条件即可,则利用关键字 OR 将两个条件进行连接。

1

SELECT prod_id, prod_name FROM Products WHERE prod_price > 9 OR prod_price = 9;

 

SQL10 返回产品并且按照价格排序

描述

有 Products 表

prod_id prod_name prod_price
a0011 egg 3
a0019 sockets 4
b0019 coffee 15

问题

编写 SQL 语句,返回 Products 表中所有价格在 3 美元到 6 美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序

示例结果

返回商品名称 prod_name 和商品价格 prod_price

prod_name prod_price
egg 3
sockets 4

注:不需要考虑商品价格相同的情况

示例

复制代码

1

2

3

4

5

6

7

8

9

DROP TABLE IF EXISTS `Products`;

CREATE TABLE IF NOT EXISTS `Products` (

`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',

`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',

`prod_price` DOUBLE NOT NULL COMMENT '产品价格'

);

INSERT INTO `Products` VALUES ('a0011','egg',3),

('a0019','sockets',4),

('b0019','coffee',15);

解答

条件查询,通过将条件拆分为 prod_price >= 3prod_price <= 6 两个条件,然后利用关键字 AND 将两个条件串联起来,同时满足两个条件的数据则进行输出。然后要对价格进行排序,则可以使用关键字 ORDER BY

1

SELECT prod_name, prod_price FROM Products WHERE prod_price >= 3 AND prod_price <=6 ORDER BY prod_price;

除开上述将两个条件拆分开然后利用关键字 AND 串联起来之外,其实 SQL 还提供了关键字 BETWEEN … AND …,可以将满足介于两者之间的数进行筛选输出。

1

SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 3 AND 6 ORDER

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116120.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!