1.表的加法

加法(union) 将两个表的数据按行合并在一起

两个表中重合部分会删除

union all

会保留重复行

2.表的联结

  • 联结(join) 通过表和表之间的关系,将两个表合并在一起:
  • 交叉联结(cross join) 将表中的每一行都与另一个表中的每一行合并在一起
  • 内联结(inner join) 查找出同时存在于两张表中的数据
  • 左联结(left join) 将左侧表中的数据全部取出来,添加where子句,选出左侧表同时去除到两个表公共部分的数据
  • 右联结(right join) 将右侧表中的数据全部取出来,添加where子句,选出右侧表同时去除到两个表公共部分的数据
  • 全联结(full join) 返回左表和右表中的所有行

注意:mysql不支持全联结

当实际工作业务中,想要生成固定行数的表单,或者特别说明要哪一张表里的全部数据的时候,使用左联结或者右联结。其他情况用内联结来获取两个表的公共部分。

3.联结应用案例

3.1 分析思路

  1. 翻译成大白话
  2. 写出分析思路
  3. 写出对应sql子句

3.2 练习

3.1.1 查询所有学生的学号、姓名、选课数和总成绩

(1). 翻译成大白话

学号、姓名(from 学生表student)

选课数(每个学生的选课数目:from 成绩表score,按学号分组,对课程号计数count)

总成绩(每个学生的总成绩:from 成绩表score,按学号分组,对成绩求和sum)

(2). 写出分析思路

select 查询结果(学号,姓名,选课数,总成绩)

from 从哪张表中查找数据(学生表student,成绩表score)

用哪种联结?(左联结)

两个表如何联结?(通过学号)

where 查询条件(没有)

group by 分组(每个学生的选课数目:按学号分组,对课程号计数count

每个学生的总成绩:按学号分组,对成绩求和sum)

having 对分组结果指定条件(没有)

order by 对查询结果排序(没有)

limit 从查询结果中取出指定行(没有);

(3). 写出对应sql子句

3.1.2 查询平均成绩大于85的所有学生的学号、姓名和平均成绩

(1). 翻译成大白话

学号、姓名(from 学生表student)

平均成绩(每个学生的平均成绩:from 成绩表score,按学号分组 平均成绩:avg(成绩))

平均成绩>85

(2).写出分析思路

select 查询结果(学号,姓名,平均成绩)

from 从哪张表中查找数据(学生表student,成绩表score)

用哪种联结?(左联结)

两个表如何联结?(通过学号)

where 查询条件(没有)

group by 分组(每个学生的成绩:按学号分组)

having 对分组结果指定条件(平均成绩:avg(成绩)> 85)

order by 对查询结果排序(没有)

limit 从查询结果中取出指定行(没有);

(3). 写出对应sql子句

3.1.3 查询学生的选课情况:学号、姓名、课程号、课程名称

1. 翻译成大白话

学号、姓名(from 学生表student)

课程号、课程名称(from 课程表course)

通过中间表score来进行联结

4.case表达式

4.1 case表达式的作用相当于做一个条件判断函数,用来判断某一行,是不是满足某个条件

case when<判断表达式> then<表达式>

when<判断表达式> then<表达式>

when<判断表达式> then<表达式>

...

else<表达式>

end

注意事项:else可以省略不写,end必须写

case表达式可以写在sql语句的任意子句里面

当有多种情况,需要条件判断时,就可以使用case表达式

4.2 练习

查询出每门课程的及格人数和不及格人数

使用分段[100-85],[85-70],[70-60],[<60],来统计各科成绩,分别统计:各分段人数,课程号和课程名称

4. SQLZOO练习

sql 如何查询上次的记录_学会SQL并不难,小白学习记录之五(多表查询)相关推荐

  1. sql出现列名无效的原因_学会SQL并不难,小白学习记录之二(简单查询)

    1.基本的查询语句练习 select 语句 select <列名1><列名2>,... ... <表名>; 查询结果中列顺序与select子句中列顺序一样,查询多个 ...

  2. JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)

    数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...

  3. sql 统计记录条数后 打印出所有记录_用SQL完成购买行为分析(下篇II)

    (接<用SQL完成购买行为分析(下篇I)>内容) 12)查询首条记录为fav,总记录条数为14的记录.将前面getNum(3)红框处替换为12,运行getNum(14)得到第2条记录的数量 ...

  4. db2 sql 判断select是否为空_学会复杂一点的SQL语句:Oracle DDL和DML

    create:创建表创建用户创建视图 创建表 create table student(id int,score int) ; student后面与括号之间可以有空格可以没有 创建用户 create ...

  5. sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询

    知识点 一.表的加法 Union:删除表中的重复值 union al:包含表中所有内容,包括重复值 二.表的联结 联结:join 联结分为以下五种: 交叉联结(cross join)又称为笛卡尔积:将 ...

  6. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·007【简单查询】

    文章目录 一.select语句 1.作用 2.语法 3.空值处理 4.反引号.单引号.双引号 5.列和表的别名 6.distinct去重 7.查询表结构 8.条件查询 (1).限定条件 (2).常用比 ...

  7. 查询前10条_阿里开发强制要求的10条ORM映射查询规范,开发人员值得看

    1. [强制]在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明. 说明: 1)增加查询分析器解析成本. 2)增减字段容易与resultMap配置不一致. 3)无用字段增加网络 ...

  8. 【线性查询之间存在相关性误差】差分隐私系统学习记录(七)

    The Algorithmic Foundations of Differential Privacy (七) 写在前面的话 Releasing Linear Queries with Correla ...

  9. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·010【高级查询】

    文章目录 一.分组函数(聚合函数) 1.介绍 2.格式 3.常用函数 (1).MIN函数.MAX函数 (2).SUM函数.AVG函数 (3).COUNT函数 4.group by子句 5.having ...

最新文章

  1. SAP WM高阶Storage Location Control
  2. HttpClient基础教程
  3. 81. Leetcode 21. 合并两个有序链表 (排序)
  4. QT窗体控件自适应大小
  5. jenkins运行日志时间与linux,持续集成之Jenkins结合脚本实现代码自动化部署及一键回滚至上一版本...
  6. 合并k个有序链表 python_[LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
  7. 一种Java Spring框架里将配置文件里定义的值注入到Java变量的简单办法
  8. 【渝粤题库】陕西师范大学163112 旅游管理英语听说 作业 (高起专)
  9. connectionstring mysql_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL
  10. K8S精华问答 | 应用和运行时平台是怎样解耦的?
  11. 计算机网路网络层之IP协议(3)——IP编址
  12. c语言 中缀表达式转后缀表达式,C++实现中缀表达式转后缀表达式
  13. amr转换成mp3 java_微信开发-将amr格式转换为mp3格式
  14. acrobat PDF删除部分_【低碳环保打印四大金刚】四款优秀的专业PDF虚拟打印机分享...
  15. Java实现网页截图技术
  16. C语言中%d %.2d %2d %02d的区别
  17. 如何快速将一张彩色图片变成黑白图片
  18. linux卸载teamviewer,ubuntu 16.04 desktop + server LTS - TeamViewer 软件彻底卸载
  19. DHTMLX基本用法
  20. 软件使用说明书_使用软件

热门文章

  1. Linux系统如何安装VMware(虚拟机)
  2. 那个linux系统自带应用商店,如何在荣耀笔记本(Linux版)中拥有deepin应用商店?...
  3. win10--vs2015--libjpeg--64位库的编译过程记录
  4. React 快速上手 - 目录索引
  5. 解决ssh登录后闲置时间过长而断开连接
  6. 错误提示:ssh: Could not resolve hostname devsrv: Name or service not known
  7. 什么是 XDoclet?
  8. 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...
  9. git web框架搭建_Git,Python Web框架,AI,机器学习,Android,Linux和更多必读内容
  10. 微信付费付费链接制作_为什么我编码但不为此付费