【SQL刷题】DAY21----SQL组合查询专项练习

简介: 【SQL刷题】DAY21----SQL组合查询专项练习

 

博主昵称:跳楼梯企鹅
创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。
博主座右铭:发现光,追随光,成为光,散发光;
博主研究方向:渗透测试、机器学习 ;
博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;

牛客刷题:牛客刷题跳转链接

目录

前言

一、组合查询

二、刷题

1.题目一

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

2.题目二

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

3.题目三

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

4.题目四

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

三、小结


前言

给大家推荐一款比较好的刷题王站,马上秋招的小伙伴 快来冲起来,学起来,卷起来

image.gif图片.png

一、组合查询

UNION非常容易使用,但是使用时有规则。

1.UNION必须由两条或者以上的SELECT组成,语句之间用UNION分隔,三个SELECT语句就用两个UNION

2.UNION的每个查询必须包含相同的列、表达式或者聚集函数

3.列数据类型必须兼容

二、刷题

1.题目一

(1)题目

题目:将两个 SELECT 语句结合起来(一)

描述:将两个 SELECT 语句结合起来,以便从 OrderItems表中检索产品 id(prod_id)和 quantity。其中,一个 SELECT 语句过滤数量为 100 的行,另一个 SELECT 语句过滤 id 以 BNBG 开头的产品,最后按产品 id 对结果进行升序排序。

image.gif图片.png

(2)题目难度

本题难易程度:中等

(3)示例

输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
  prod_id VARCHAR(255) NOT NULL COMMENT '产品id',
  quantity VARCHAR(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a0001',105),('a0002',100),('a0002',200),('a0013',1121),('a0003',10),('a0003',19),('a0003',5),('BNBG',10002);
输出:
a0002|100.000
BNBG|10002.000

image.gif

(4)代码

select prod_id,quantity 
from OrderItems
where quantity = 100
union
select prod_id,quantity 
from OrderItems
where prod_id like 'BNBG%'
order BY prod_id

image.gif

(5)运行截图

图片.png

2.题目二

(1)题目

题目:将两个 SELECT 语句结合起来(二)

描述:  将两个 SELECT 语句结合起来,以便从 OrderItems表中检索产品 id(prod_id)和 quantity。其中,一个 SELECT 语句过滤数量为 100 的行,另一个 SELECT 语句过滤 id 以 BNBG 开头的产品,最后按产品 id 对结果进行升序排序。

image.gif图片.png

(2)题目难度

本题难易程度:简单

(3)示例

输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
  prod_id VARCHAR(255) NOT NULL COMMENT '产品id',
  quantity VARCHAR(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a0001',105),('a0002',100),('a0002',200),('a0013',1121),('a0003',10),('a0003',19),('a0003',5),('BNBG',10002);
输出:
a0002|100.000
BNBG|10002.000

image.gif

(4)代码

select prod_id, quantity
from OrderItems
where quantity = 100
or prod_id regexp '^BNBG'

image.gif

(5)运行截图

image.gif图片.png

3.题目三

(1)题目

题目:组合 Products 表中的产品名称和 Customers 表中的顾客名称

描述:编写 SQL 语句,组合 Products 表中的产品名称(prod_name)和 Customers 表中的顾客名称(cust_name)并返回,然后按产品名称对结果进行升序排序。

image.gif图片.png

(2)题目难度

本题难易程度:简单

(3)示例

输入:
DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (
`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称'
);
INSERT INTO `Products` VALUES ('flower'),
('rice'),
('ring'),
('umbrella');
DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
  cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
INSERT `Customers` VALUES ('andy'),('ben'),('tony'),('tom'),('an'),('lee'),('hex');
输出:
an
andy
ben
flower
hex
lee
rice
ring
tom
tony
umbrella

image.gif

(4)代码

select prod_name
from Products
union all
select cust_name
from Customers
order by prod_name

image.gif

(5)运行截图

image.gif图片.png

4.题目四

(1)题目

题目:纠错4

描述:修正下面错误的SQL

图片.png

(2)题目难度

本题难易程度:入门

(3)示例

输入:
DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
    cust_name VARCHAR(255) NOT NULL COMMENT '顾客id',
    cust_contact VARCHAR(255) NOT NULL COMMENT '顾客联系方式',
    cust_state VARCHAR(255) NOT NULL COMMENT '顾客州',
    cust_email VARCHAR(255) NOT NULL COMMENT '顾客email'
  );
INSERT `Customers` VALUES ('cust10','8695192','MI','cust10@cust.com'),('cust1','8695193','MI','cust1@cust.com'),('cust2','8695194','IL','cust2@cust.com');
输出:
cust1|8695193.000|cust1@cust.com
cust10|8695192.000|cust10@cust.com
cust2|8695194.000|cust2@cust.com

image.gif

(4)代码

SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'MI' 
UNION 
SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'IL'
ORDER BY cust_name;

image.gif

(5)运行截图

图片.png

三、小结

本篇文章为SQL刷题第21天

欢迎大家一起和博主来刷题0SQL刷题点击开始学习2

相关文章
|
18天前
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
114 77
|
11天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
36 17
|
5天前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
12天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
62 6
|
2月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
252 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
2月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
93 9
|
3月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
48 8
|
3月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
87 4
|
3月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
109 1
|
3月前
|
SQL 关系型数据库 MySQL