sql 如何查询上次的记录_学会SQL并不难,小白学习记录之五(多表查询)
1.表的加法
加法(union) 将两个表的数据按行合并在一起
两个表中重合部分会删除
union all
会保留重复行
2.表的联结
- 联结(join) 通过表和表之间的关系,将两个表合并在一起:
- 交叉联结(cross join) 将表中的每一行都与另一个表中的每一行合并在一起
- 内联结(inner join) 查找出同时存在于两张表中的数据
- 左联结(left join) 将左侧表中的数据全部取出来,添加where子句,选出左侧表同时去除到两个表公共部分的数据
- 右联结(right join) 将右侧表中的数据全部取出来,添加where子句,选出右侧表同时去除到两个表公共部分的数据
- 全联结(full join) 返回左表和右表中的所有行
注意:mysql不支持全联结
当实际工作业务中,想要生成固定行数的表单,或者特别说明要哪一张表里的全部数据的时候,使用左联结或者右联结。其他情况用内联结来获取两个表的公共部分。
3.联结应用案例
3.1 分析思路
- 翻译成大白话
- 写出分析思路
- 写出对应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并不难,小白学习记录之五(多表查询)相关推荐
- sql出现列名无效的原因_学会SQL并不难,小白学习记录之二(简单查询)
1.基本的查询语句练习 select 语句 select <列名1><列名2>,... ... <表名>; 查询结果中列顺序与select子句中列顺序一样,查询多个 ...
- JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)
数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...
- sql 统计记录条数后 打印出所有记录_用SQL完成购买行为分析(下篇II)
(接<用SQL完成购买行为分析(下篇I)>内容) 12)查询首条记录为fav,总记录条数为14的记录.将前面getNum(3)红框处替换为12,运行getNum(14)得到第2条记录的数量 ...
- db2 sql 判断select是否为空_学会复杂一点的SQL语句:Oracle DDL和DML
create:创建表创建用户创建视图 创建表 create table student(id int,score int) ; student后面与括号之间可以有空格可以没有 创建用户 create ...
- sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询
知识点 一.表的加法 Union:删除表中的重复值 union al:包含表中所有内容,包括重复值 二.表的联结 联结:join 联结分为以下五种: 交叉联结(cross join)又称为笛卡尔积:将 ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·007【简单查询】
文章目录 一.select语句 1.作用 2.语法 3.空值处理 4.反引号.单引号.双引号 5.列和表的别名 6.distinct去重 7.查询表结构 8.条件查询 (1).限定条件 (2).常用比 ...
- 查询前10条_阿里开发强制要求的10条ORM映射查询规范,开发人员值得看
1. [强制]在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明. 说明: 1)增加查询分析器解析成本. 2)增减字段容易与resultMap配置不一致. 3)无用字段增加网络 ...
- 【线性查询之间存在相关性误差】差分隐私系统学习记录(七)
The Algorithmic Foundations of Differential Privacy (七) 写在前面的话 Releasing Linear Queries with Correla ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·010【高级查询】
文章目录 一.分组函数(聚合函数) 1.介绍 2.格式 3.常用函数 (1).MIN函数.MAX函数 (2).SUM函数.AVG函数 (3).COUNT函数 4.group by子句 5.having ...
最新文章
- SAP WM高阶Storage Location Control
- HttpClient基础教程
- 81. Leetcode 21. 合并两个有序链表 (排序)
- QT窗体控件自适应大小
- jenkins运行日志时间与linux,持续集成之Jenkins结合脚本实现代码自动化部署及一键回滚至上一版本...
- 合并k个有序链表 python_[LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
- 一种Java Spring框架里将配置文件里定义的值注入到Java变量的简单办法
- 【渝粤题库】陕西师范大学163112 旅游管理英语听说 作业 (高起专)
- connectionstring mysql_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL
- K8S精华问答 | 应用和运行时平台是怎样解耦的?
- 计算机网路网络层之IP协议(3)——IP编址
- c语言 中缀表达式转后缀表达式,C++实现中缀表达式转后缀表达式
- amr转换成mp3 java_微信开发-将amr格式转换为mp3格式
- acrobat PDF删除部分_【低碳环保打印四大金刚】四款优秀的专业PDF虚拟打印机分享...
- Java实现网页截图技术
- C语言中%d %.2d %2d %02d的区别
- 如何快速将一张彩色图片变成黑白图片
- linux卸载teamviewer,ubuntu 16.04 desktop + server LTS - TeamViewer 软件彻底卸载
- DHTMLX基本用法
- 软件使用说明书_使用软件
热门文章
- Linux系统如何安装VMware(虚拟机)
- 那个linux系统自带应用商店,如何在荣耀笔记本(Linux版)中拥有deepin应用商店?...
- win10--vs2015--libjpeg--64位库的编译过程记录
- React 快速上手 - 目录索引
- 解决ssh登录后闲置时间过长而断开连接
- 错误提示:ssh: Could not resolve hostname devsrv: Name or service not known
- 什么是 XDoclet?
- 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...
- git web框架搭建_Git,Python Web框架,AI,机器学习,Android,Linux和更多必读内容
- 微信付费付费链接制作_为什么我编码但不为此付费