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

牛客刷题:网站传送门


目录

 一、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)运行截图

5.题目五

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图


一、SQL联结表

SQL最强大的功能之一就是在select中执行联结表(inner)。联结表是利用SQL的select语句能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极其重要的部分。

二、刷题

1.题目一

(1)题目

题目:检索每个顾客的名称和所有的订单号(一)

描述:使用 INNER JOIN 编写 SQL语句,检索每个顾客的名称(Customers表中的 cust_name)和所有的订单号(Orders 表中的 order_num),最后根据顾客姓名cust_name升序返回。

(2)题目难度

本题难易程度:中等

(3)示例

输入:DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(cust_id VARCHAR(255) NOT NULL COMMENT '客户id',cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
INSERT `Customers` VALUES ('cust10','andy'),('cust1','ben'),('cust2','tony'),('cust22','tom'),('cust221','an'),('cust2217','hex');DROP TABLE IF EXISTS `Orders`;
CREATE TABLE IF NOT EXISTS `Orders`(order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'
);
INSERT `Orders` VALUES ('a1','cust10'),('a2','cust1'),('a3','cust2'),('a4','cust22'),('a5','cust221'),('a7','cust2217');输出:an|a5
andy|a1
ben|a2
hex|a7
tom|a4
tony|a3

(4)代码

SELECT C.cust_name, O.order_num
FROMCustomers AS CINNER JOIN Orders AS O USING(cust_id)
ORDER BYC.cust_name

(5)运行截图

2.题目二

(1)题目

题目:检索每个顾客的名称和所有的订单号(二)

描述:检索每个顾客的名称(Customers表中的 cust_name)和所有的订单号(Orders 表中的 order_num),列出所有的顾客,即使他们没有下过订单。最后根据顾客姓名cust_name升序返回。

(2)题目难度

本题难易程度:中等

(3)示例

输入:DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(cust_id VARCHAR(255) NOT NULL COMMENT '客户id',cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
INSERT `Customers` VALUES ('cust10','andy'),('cust1','ben'),('cust2','tony'),('cust22','tom'),('cust221','an'),('cust2217','hex'),('cust40','ace');DROP TABLE IF EXISTS `Orders`;
CREATE TABLE IF NOT EXISTS `Orders`(order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'
);
INSERT `Orders` VALUES ('a1','cust10'),('a2','cust1'),('a3','cust2'),('a4','cust22'),('a5','cust221'),('a7','cust2217');输出:ace|None
an|a5
andy|a1
ben|a2
hex|a7
tom|a4
tony|a3

(4)代码

selectcust_name,order_num
fromCustomersleft join Orders using(cust_id)
order bycust_name asc

(5)运行截图

3.题目三

(1)题目

题目:返回产品名称和与之相关的订单号

描述:使用 OUTER JOIN 联结 Products 表和 OrderItems 表,返回产品名称(prod_name)和与之相关的订单号(order_num)的列表,并按照产品名称升序排序。

(2)题目难度

本题难易程度:简单

(3)示例

输入: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 '产品名称'
);
INSERT INTO `Products` VALUES ('a0001','egg'),
('a0002','sockets'),
('a0013','coffee'),
('a0003','cola'),
('a0023','soda');DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(prod_id VARCHAR(255) NOT NULL COMMENT '产品id',order_num VARCHAR(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a0001','a105'),('a0002','a1100'),('a0002','a200'),('a0013','a1121'),('a0003','a10'),('a0003','a19'),('a0003','a5');输出:coffee|a1121
cola|a5
cola|a19
cola|a10
egg|a105
sockets|a200
sockets|a1100
soda|None

(4)代码

select prod_name, order_num
from Products a left join OrderItems b using(prod_id)
union
select prod_name, order_num
from Products a right join OrderItems b using(prod_id)order by prod_name

(5)运行截图

4.题目四

(1)题目

题目:返回产品名称和每一项产品的总订单数

描述:使用 OUTER JOIN 联结 Products 表和 OrderItems 表,返回产品名称(prod_name)和每一项产品的总订单数(不是订单号),并按产品名称升序排序。

(2)题目难度

本题难易程度:中等

(3)示例

输入: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 '产品名称'
);
INSERT INTO `Products` VALUES ('a0001','egg'),
('a0002','sockets'),
('a0013','coffee'),
('a0003','cola'),
('a0023','soda');DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(prod_id VARCHAR(255) NOT NULL COMMENT '产品id',order_num VARCHAR(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a0001','a105'),('a0002','a1100'),('a0002','a200'),('a0013','a1121'),('a0003','a10'),('a0003','a19'),('a0003','a5');输出:coffee|1
cola|3
egg|1
sockets|2
soda|0

(4)代码

selectprod_name,count(order_num) as orders
from Productsleft join OrderItems using(prod_id)group by prod_nameorder by 1

(5)运行截图

5.题目五

(1)题目

题目:列出供应商及其可供产品的数量

描述:列出供应商(Vendors 表中的 vend_id)及其可供产品的数量,包括没有产品的供应商。你需要使用 OUTER JOIN 和 COUNT()聚合函数来计算 Products 表中每种产品的数量,最后根据vend_id 升序排序。

注意:vend_id 列会显示在多个表中,因此在每次引用它时都需要完全限定它。

(2)题目难度

本题难易程度:简单

(3)示例

输入:DROP TABLE IF EXISTS `Vendors`;
CREATE TABLE IF NOT EXISTS `Vendors` (`vend_id` VARCHAR(255) NOT NULL COMMENT 'vend名称'
);
INSERT INTO `Vendors` VALUES ('a0002'),
('a0013'),
('a0003'),
('a0010');DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (
`vend_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',
`prod_id` VARCHAR(255) NOT NULL COMMENT '产品名称'
);
INSERT INTO `Products` VALUES ('a0001','egg'),
('a0002','prod_id_iphone'),
('a00113','prod_id_tea'),
('a0003','prod_id_vivo phone'),
('a0010','prod_id_huawei phone');输出:a0002|1
a0003|1
a0010|1
a0013|0

(4)代码

select a.vend_id, count(prod_id) as prod_id
from Vendors a
left join Products b
using(vend_id)
group by a.vend_id
order by a.vend_id

(5)运行截图

三、小结

本篇文章为SQL刷题第16天

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

【SQL刷题】DAY16----SQL高级联结专项练习相关推荐

  1. 【SQL刷题】Day9----SQL过滤数据专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各 ...

  2. 【SQL刷题】Day5----SQL分组查询专项练习

     博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望 ...

  3. 【SQL刷题】Day6----SQL综合专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各 ...

  4. 「数据库」sql刷题(No.11)

    喜欢就 关注 我们吧! 简介:  Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆). 感谢微信给予的个人认证,专注于PHP.Go.数据库技术领域知识经验分享. 技 ...

  5. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  6. 力扣刷题学习SQL篇——1-8 查询(按日期分组销售产品——利用聚合函数GROUP_CONCAT)

    力扣刷题学习SQL篇--1-8 查询(按日期分组销售产品--利用聚合函数GROUP_CONCAT) 1.题目 2.解法 3.group_concat() 1.题目 题目链接:https://leetc ...

  7. SQL刷题记录(一)

    SQL刷题记录(一) 答主刚开始自学SQL,本专栏记录的是答主在牛客上刷题的过程.疑惑和部分思路都会写在习题下方. 题目来源:牛客网刷题网址 本文内容:T195-T225 T195. select * ...

  8. 牛客网SQL刷题笔记(MySQL)

    牛客网SQL刷题笔记(MySQL) 此博客集合LeetCode.牛客网常见的题型及其解法,侵删 目录 牛客网SQL刷题笔记(MySQL) 类型1:查找排名第几的数据 SQL2 查找入职员工时间排名倒数 ...

  9. 【SQL刷题】Day13----SQL分组数据专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各 ...

最新文章

  1. day_06、面向对象
  2. python中字典统计成绩合_Python统计字典中的项
  3. mongo-log参数与config参数
  4. 常规单元测试和存根–测​​试技术4
  5. 软件工程---2.软件过程
  6. 提高机器学习质量的想法_如何提高机器学习的数据质量?
  7. Ubuntu18.04上安装RTX 2080Ti显卡驱动
  8. 鸿蒙关键技术研究,鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析HarmonyOS源码 | v54.02...
  9. ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版
  10. 通过@Import注解把类注入容器的四种方式
  11. 智能灯控制页面用HTML编写,一种基于STM32的智能灯控制系统的制作方法
  12. 基于vue2.0的一个豆瓣电影App
  13. CSDN网站系统升级公告
  14. python book118_Python3 book118.com文档下载(图片形式)
  15. UITableViewCell设置行距
  16. 阿里巴巴云连接池durid数据库密码加密
  17. AI人工智能入门(浅析AlphaGo的实现)
  18. java交易撮合怎么实现_撮合交易系统服务边界与设计
  19. 怎么把计算机试题移到优盘,怎么把电脑里的系统迁移到U盘
  20. 解决thingsboard 二开 跨域问题

热门文章

  1. 华硕K40in升级Mountain Lion 10.8.3指南(12D65)
  2. Java从零开始 (入门搭建环境、下载安装JDK、第一个程序HelloWorld!)
  3. Excel如何利用函数将日期拆分为年月日三列显示
  4. python之类的封装,继承,多态
  5. 冲压模具行业解决方案
  6. 团队管理27--任务执行之流程机制
  7. POJ 2983(差分约束系统)
  8. 计算机网络二学位实验报告,计算机网络实验报告华科二学位.doc
  9. [Android Pro] Android下toolbox简介
  10. 目前流行的装修风格_今年最流行的装修风格 2018年这六种风格强烈推荐