IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql中的多表查询 -> 正文阅读

[大数据]mysql中的多表查询

一:笛卡尔积

表示为:XY
例如:A表中有m行,B表中有n行,那么A和B的笛卡尔积为 m
n 行。

二:多表查询

1.内连接:查询A和B公共部分
在这里插入图片描述

(1)
select column,sum(column)
from table1 join(inner/cross) table2
on 过滤条件(将所有的笛卡尔积无用信息过滤掉)
group by column
where 条件查询

(2)
select column,sum(column)
from table1,table2
where 条件语句
group by column;

eg:查询张三的成绩和名字
(1)select username,score
from student join course_score
on student_id=student.id
where name=‘张三’;

(2)select username,score
from student,course_score
where student_id=student.id
and name=‘张三’;

2.外连接:查询A的所有部分或者B的所有部分
在这里插入图片描述

(1)左(外)连接:查询A的所有信息
select * from A left join B
on 连接条件
where 查询条件

eg:(两张表)
select* from student
left join course_score
on student.id=student_id;

eg:(三张表)
select s.username,s.sno,s.mail,c.name,st.score
from student s
left join course_score st on s.id=st.student_id
left join course c on c.id=st.course_id;

(2)右(外)连接:查询B的所有信息
select * from B right join A
on 连接条件
where 查询条件

*注意:
(1)内连接on可以省略,外连接on不能省略
内连接不加on,会显示所有笛卡尔积,外连接不加on会报错
(2)内连接和外连接中on的执行效果不一样
a.内连接中on对全局起关联,如join…on…and 条件语句 ,and的条件在全局执行,对所有表起作用
b.外连接中on只对自己加入的表起限制,如left join…on…and条件语句,on…and的条件不能对主表起作用,只对left join 后加的次表起作用
(3)在外连接中,on和where的作用不同
在外连接查询,如果有多个查询条件,将查询条件在where 中,on中只写笛卡尔积的过滤条件

3.自连接
指同一张表连接自身进行查询
select *
from table_name st1,table_name st2
where st1.id=st2.id;

eg:查询英语成绩大于计算机成绩的同学信息
select* from course_score st1, course_score st2
(同一张成绩表命名为不同名)
where st1.student_id=st2.student_id
(选取同一个人英语成绩和计算机成绩)
and st1.course_id=1 and st2.course_id=2
(让st1中的课程为英语,st2的课程为计算机)
and st1.score>st2.score;
(英语成绩大于计算机成绩)

4.子查询

eg:查找张三班级的同学信息
select *
from student
where class_id=(
select class_id
from student
where username=‘张三’);
内部为张三所在班级id,外部为查询这个班级id的其他同学信息

select avg(score) from score where clsaa=‘java’

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:58:28  更:2022-05-19 11:58:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:24:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码