当前位置:网站首页>MySQL联合查询(多表查询)
MySQL联合查询(多表查询)
2022-07-30 22:10:00 【web18334137065】
一、内连接
select *from 表1 [ inner | cross ] join 表2 [ on过滤条件 ] [ where查询条件 ] ;
[ inner | cross ]:
join 内连接关键字(必须要有);
on从语法上可省略,但如果省略它,将查询的是多表的笛卡尔积;
1.select *from 表1 join 表2 [ on过滤条件 ] [ where查询条件 ] ;
2.select *from 表1,表2 [ where查询条件 ] ;
3.select *from 表1 inner join 表2 [ on过滤条件 ] [ where查询条件 ] ;
4.select *from 表1 cross join 表2 [ on过滤条件 ] [ where查询条件 ] ;
(1.2使用较多;多表查询使用1较好)
例1:查询张三的成绩:
1.进行内连接查询(笛卡尔积)
select s.*,st.* from student s join score_table st;
2.去掉无效的数据(on过滤条件)
select s.*,st.* from student s join score_table st on s.id=st.student_id;
3.查询张三的成绩(where 条件)
select s.*,st.* from student s join score_table st on s.id=st.student_id where s.username=‘张三’;
例2:查询每个人成绩、科目名、个人信息:
1.连表查询(三张表)select *from 表1 join 表2 join 表3;
2.过滤笛卡尔积中无意义数据:select *from 表1 join 表2 [ on 条件过滤 ] join 表3[ on 条件过滤 ];
select s.username,s.sn,s.mail,st.score,c.namefrom score_table st join course c on st.course_id=c.id join student s on s.id=st.student_id;
二、外连接:
1.左(外)连接:
select * from 表1 left join 表2 on连接条件 [where条件查询];
表1 查询结果是所有数据,表2查询结果是与表1重合部分的数据
2.右(外)连接
select * from 表1 right join 表2 on连接条件 [where条件查询];
左 / 右连接可以互相实现,只需要将表的顺序调换即可。
联表查询中on和where的区别:
1.on在内连接中可省略,外连接不可省略;
2.on在内连接中执行效果和外连接执行效果不同;
left join…on查询不能过滤掉左表中的数据,而内连接on查询可以过滤掉全局数据。
3.外连接中on和where不同
on筛选笛卡尔积过滤条件,where筛选具体业务
三、自连接(自查询)
select *from 表名 as t1,表名 as t2 where t1.id=t2.id [, …]
例1:查询英语成绩<计算机成绩的数据
(1)根据科目名称查出来科目ID(成绩表中只有科目ID,没有科目名)
(2)自查询
(3)去除笛卡尔积中无意义数据(有意义数据:主键相同;)
(4)设置where条件,让表1只查询英语成绩,表2查询计算机成绩
(5)设置where多条件查询,让英语成绩<计算机成绩
四、子查询(嵌套查询)
select 字段名 from
例:查张三的同班同学
五、合并查询(至少两张表)
union(进行结果集合并,并去重,只保留重复数据中的一条)
union all(不会去掉结果集中的重复行)
例:查询id小于3和名字为“英语”的课程
select * from course where id<3 union select * from course where name=‘英语’;
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
MySQL user authorization
QT开发简介、命名规范、signal&slot信号槽
2sk2225 Substitute 3A/1500V Chinese Documentation【PDF Data Book】
使用LVS和Keepalived搭建高可用负载均衡服务器集群
IDEA 连接 数据库
网安学习-内网渗透3
navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
PhpMetrics usage
【零代码工具】15 款企业级零代码开发平台推荐,总有一款是你心仪的
The reason for not using bs4 is that the name is too long?Crawl lottery lottery information
随机推荐
ClickHouse 数据插入、更新与删除操作 SQL
不用bs4的原因居然是名字太长?爬取彩票开奖信息
基于ABP实现DDD--领域服务、应用服务和DTO实践
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
ML之shap:基于FIFA 2018 Statistics(2018年俄罗斯世界杯足球赛)球队比赛之星分类预测数据集利用RF随机森林+计算SHAP值单样本力图/依赖关系贡献图可视化实现可解释性之攻略
y82.第四章 Prometheus大厂监控体系及实战 -- 监控扩展和prometheus 联邦(十三)
QT开发简介、命名规范、signal&slot信号槽
MySql 5.7.38下载安装教程 ,并实现在Navicat操作MySql
【翻译】作为混沌网的LFX门徒的经验
系统结构考点之PM2I单级网络
cnpm installation steps
【高等数学】矩阵与向量组的秩和等价
mysql创建表
@RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解
网安学习-内网渗透3
LeetCode·Daily Question·952. Calculate Maximum Component Size by Common Factor·Union Check
Regular expression syntax and usage
Jetson AGX Orin 平台关于c240000 I2C总线和GMSL ses地址冲突问题
MySQL 5.7 detailed download, installation and configuration tutorial
Solve the problem of centos8 MySQL password ERROR 1820 (HY000) You must reset your password using the ALTER USER