sql join中能否使用case when_SQL(五)——多表查询
1. 表的加法(union)
union操作符用于合并两个或多个select语句的结果集。
union内部的select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。
合并两个表(不保留重复行):
![](/assets/blank.gif)
合并两个表(保留重复行):
![](/assets/blank.gif)
2.表的联结(join)
![](/assets/blank.gif)
交叉联结(cross join笛卡尔积):将表中的每一行都与另一个表中的每一行合并在一起,结果的行数是两张表行数的乘积。
在实际业务中用的比较少原因:结果行数太多了,需要花费大量的运算成本和设备支持;行数太多没有实际价值。
内联结(inner join):查找出同时存在两张表中的数据
![](/assets/blank.gif)
左联结(left join):将左侧表中的数据全部取出来,两张表进行左联结的时候会将左侧的表作为主表,主表中的数据会全部读取出来。
![](/assets/blank.gif)
去掉两个表中公共部分的数据:
![](/assets/blank.gif)
右联结(right join):会将右侧表中的数据全部取出来,两张表进行右联结的时候会将右侧的表作为主表,主表中的数据会全部读取出来。
![](/assets/blank.gif)
去掉两个表中公共部分的数据:
![](/assets/blank.gif)
全联结(full join):返回左表和右表中的所有行,当某行和另一个表中有匹配的时候,两行进行合并,如果某个表和另一个表中没有匹配的行时,另一个表中对应的值用空值来填充。
3.联结应用案例
查询所有学生的学号、姓名、选课时数、总成绩:
![](/assets/blank.gif)
查询平均成绩大于85的所有学生的学号、姓名和平均成绩:
![](/assets/blank.gif)
查询学生的选课情况:学号、姓名、课程号、课程名称:
![](/assets/blank.gif)
4.case表达式
case表达式可以帮助我们解决复杂的查询问题,相当于一个条件判断函数,判断数据是否满足某个条件;
case when <判断表达式> then <表达式>
when <判断表达式> then <表达式>
…
else <表达式>
end
查询学生成绩是属于及格还是不及格:
![](/assets/blank.gif)
查询每门课程的及格人数和不及格人数:
![](/assets/blank.gif)
注意事项:
①else子句可以省略不写,默认为else为空值,建议不要省略;
②end不能省略不写;
③case表达式可以写到sql语句的任意子句中。
使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分段人数、课程号和课程名称:
![](/assets/blank.gif)
5.sql练习(sqlzoo)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
sql join中能否使用case when_SQL(五)——多表查询相关推荐
- 在SQL Server中为什么不建议使用Not In子查询
原文:在SQL Server中为什么不建议使用Not In子查询 在SQL Server中,子查询可以分为相关子查询和无关子查询,对于无关子查询来说,Not In子句比较常见,但Not In潜在会带来 ...
- SQL中的外键约束及多表查询
SQL中的外键约束及多表查询 外键约束 foreign key 实体:数据库中的表,就可以看作一个实体,实体和实体之间有一些关系 比如说做一个网上商城的项目,里面有用户表,商品表,订单表 一对多的关系 ...
- 实验五 单表查询(V2.0版)
实验五 单表查询 [实验目的] 1. 掌握单表的列的查询 2. 掌握单表的行的查询 [实验内容] 1. 实验前准备,SC数据库的创建. (见参考资料1) 2. 查询的理论基础 命令: 1) Sel ...
- SQL JOIN 中 on 与 where 有何区别
on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录.where 条件是在临时表生成好后,再对临时表进行过滤的条件. left join : 左连接,返回左表中 ...
- SQL join中on与where区别
本文导读: 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户.例如在使用left jion时,on条件是在生成临时表时使用的条件,它不管on中的条件是否 ...
- 为什么selection.find在word vba中不返回所有结果?_工作表查询中,内连接Inner join的讲解...
大家好,我们继续讲解VBA数据库解决方案,今日讲解第56讲内容: 数据表查询中,内连接Inner join的讲解.从这讲开始给大家实例讲解在查询中各种连接方式的应用.为什么到现在才讲解这块内容呢?是的 ...
- 【SQL Join】两个字段关联到同一个表,如何使用left join
Join 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返 ...
- sql 如何查询上次的记录_学会SQL并不难,小白学习记录之五(多表查询)
1.表的加法 加法(union) 将两个表的数据按行合并在一起 两个表中重合部分会删除 union all 会保留重复行 2.表的联结 联结(join) 通过表和表之间的关系,将两个表合并在一起: 交 ...
- 图解SQL面试题 (学习笔记) 003多表查询----2
这里写目录标题 一级目录 二级目录 三级目录 如何比较日期数据 如何交换数据 滴滴面试题:如何找出最小N个数 一级目录 二级目录 三级目录 如何比较日期数据 [题目] 下面是某公司每天的营业额,表名为 ...
最新文章
- 重点 (七) : 开发技巧/方法
- java file.canexecute_Java File canExecute()用法及代碼示例
- 1月6日 作业 穷举
- hdu 4350 2012 多校 - 6
- VTK:小部件之DistanceWidget
- 物联网安全威胁及应对措施
- 创建 vxlan 并部署 instance - 每天5分钟玩转 OpenStack(147)
- 利用系统错误日志监控磁盘健康状况
- 【LOJ6072】苹果树【折半搜索】【矩阵树定理】【二项式反演】
- matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc
- STM32工作笔记0019---新建工程模板-基于固件库-M3
- 微信支付,判断是否安装了微信
- Output Arcade Utility Tool for Mac(Arcade音色库破解导入工具)
- k8s学习: Ingress Nginx
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-07 断路器dashboard监控仪表
- IP地址及子网划分计算题
- 史上最全 ArcGIS 软件安装包分享
- 苹果mac下载了dms文件怎么办?
- 小程序基础知识整理(组件篇)
- JAVA计算机毕业设计房屋租赁管理系统Mybatis+系统+数据库+调试部署
热门文章
- 监控硬盘脚本linux,shell脚本实现磁盘监控系统
- 计算机可以待机无法关机,win7怎么设置不待机?如何设置自动关机的方法【详解】...
- HTML基础知识点(1)
- MySQL的chap服务器_chap01 初涉MySQL
- python AES使用
- c语言实现图片卷积_卷积神经网络(CNN)Python的底层实现——以LeNet为例
- python切片输出_Python语言之详解切片
- 高精度计算PI值 C语言 思路,高精度计算pi
- sql server datetime取年月_快速定位数据库性能问题,RDS推出慢SQL统计分析
- 屏幕的宽度_交互规范:响应式让屏幕利用更高,用户体验更佳