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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 多测师拱墅校区__肖sir__数据库之多表 -> 正文阅读

[大数据]多测师拱墅校区__肖sir__数据库之多表

CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charset=utf8;

INSERT into dept VALUES (‘101’,‘财务’);
INSERT into dept VALUES (‘102’,‘销售’);

INSERT into dept VALUES (‘103’,‘IT技术’);

INSERT into dept VALUES (‘104’,‘行政’);

CREATE table emp (sid VARCHAR(6),name VARCHAR(20),age TINYINT(2),woektime_start VARCHAR(10),incoming SMALLINT(10),dept2 VARCHAR(6))default charset=utf8;

insert into emp VALUES (‘1789’,‘张三’,35,‘1980/1/1’,4000,‘101’);

insert into emp VALUES (‘1674’,‘李四’,32,‘1983/4/1’,3500,‘101’);

insert into emp VALUES (‘1776’,‘王五’,24,‘1990/7/1’,2000,‘101’);

insert into emp VALUES (‘1568’,‘赵六’,57,‘1970/10/11’,7500,‘102’);
insert into emp VALUES (‘1564’,‘荣七’,64,‘1963/10/11’,8500,‘102’);

insert into emp VALUES (‘1879’,‘牛八’,55,‘1971/10/20’,7300,‘103’);

insert into emp VALUES (‘1880’,‘老九’,55,‘1971/10/20’,7200,‘105’);

– drop table dept ;
– drop table emp ;
select * from dept;
select * from emp ;
员工表:

sid 员工编号
name 员工姓名
age 年龄
woektime_start 入职时间
incomming 工资
dept2 部门编号

在这里插入图片描述
部门表:
depr1 部门编号
dept_name 部门名称
在这里插入图片描述
emp:部门编号dept2 = dept 部门编号dept1

====================
二、 多表查询

1、什么是多表关联查询?
从2个表或者更多的表中查询我们需要的数据

2、多表链接的关系
(1)内连接:inner join on
(2)左连接: left join on
(3)右链接: right join on
(4)全外链接:
(5)左独有数据
(6)右独有数据
在这里插入图片描述

备注:
多行注释:ctrl+/
多行取消注释:shfit +ctrl+/

详解:多表

1、内连接 (普通内链接,隐藏内连接)
定义:查询两个表共有的关联的数据
(1)普通内连接
格式:select * from 表1 INNER JOIN 表2 on 表1.关联字段1=表2.关联字段2 ;
案例:select * from dept INNER JOIN emp on emp.dept2=dept.dept1 ;
在这里插入图片描述
(2)隐藏内链接

格式:select * from 表1,表2 where 表1.关联字段1=表2.关联字段2
案例:select * from dept,emp where emp.dept2=dept.dept1;

在这里插入图片描述
2、左连接
以左表为主(整个左表全部显示),右表有关联的数据就显示,没有关联的数据就以null显示
格式:SELECT * from 表1 left join 表2 on 表1.关联字段1= 表2.关联字段2;
案例:SELECT * from dept left join emp on emp.dept2=dept.dept1;

在这里插入图片描述
3、右连接
以右表为主(整个右表全部显示),左表右关联的数据就显示,没有的数据就以null 显示
格式:SELECT * from 表1 right join 表2 on 表1.关联字段1= 表2.关联字段2 ;
案例:SELECT * from dept right join emp on emp.dept2=dept.dept1 ;
在这里插入图片描述
(4)左独有数据
定义:左独有的数据在左连接的基础上,以右表显示null来取独有数据;
格式:SELECT * from 表1 left join 表2 on 表1.关联字段1= 表2.关联字段2 where 右表字段 is null ;
案例:SELECT * from dept left join emp on emp.dept2=dept.dept1 where name is null;
在这里插入图片描述

(5)右独有数据
定义:右独有的数据在左连接的基础上,以左表显示null来取独有数据;
格式:SELECT * from 表1 rigt join 表2 on 表1.关联字段1= 表2.关联字段2 where 左表字段 is null ;
案例:select * from dept right join emp on emp.dept2=dept.dept1 where dept_name is null ;
在这里插入图片描述
(6)全外连接:
union
方法1:内连接+左独有+右独有
方法2:左连接+右独有
方法3:右连接+左独有

方法一详解:内连接+左独有+右独有
SELECT * from dept inner join emp on emp.dept2=dept.dept1 #内连接
UNION
SELECT * from dept left join emp on emp.dept2=dept.dept1 where name is null #左独有
union
select * from dept right join emp on emp.dept2=dept.dept1 where dept_name is null ; #右独有

在这里插入图片描述
方法二:详解 左连接+右独有
SELECT * from dept left join emp on emp.dept2=dept.dept1 #左连接
UNION
select * from dept right join emp on emp.dept2=dept.dept1 where dept_name is null ; #右独有

在这里插入图片描述
方法三:右连接+左独有

select * from dept right join emp on emp.dept2=dept.dept1 #右连接
UNION
SELECT * from dept left join emp on emp.dept2=dept.dept1 where name is null ; #左独有数据

在这里插入图片描述

普通内连接:select * from 表1 inner join 表2 on 表 1.关联字段=表2.关联字段
隐藏内连接:select * from 表1,表2 where 表 1.关联字段=表2.关联字段
左连接:select * from 表1 left join 表2 on 表 1.关联字段=表2.关联字段
右连接 :select * from 表1 right join 表2 on 表 1.关联字段=表2.关联字段
左独有数据:select * from 表1 left join 表2 on 表 1.关联字段=表2.关联字段 where 表2中的字段 is null
右独有数据:select * from 表1 right join 表2 on 表 1.关联字段=表2.关联字段 where 表1 中的字段 isnull
全外连接:union
(1)内连接+左独有+右独有
(2)左连接+右独有
(3)右连接+左独有

=================================
作业:

1.求出IT技术部门所有的员工姓名和员工编号?
结果:name ,sid emp
条件:dept_name=IT技术 dept
方法:
select name,sid from dept inner join emp on dept.dept1=emp.dept2 WHERE dept_name=‘IT技术’ ;

2、求出财务部门的收入总和?
结果:sum(incomming) emp
条件: dept_name=“财务” dept
方法1:select sum(incoming) from dept inner join emp on dept.dept1=emp.dept2 where dept_name= “财务” ;
方法2:
select sum(incoming) from dept,emp where dept.dept1=emp.dept2 and dept_name= “财务”;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:46:53  更:2022-04-07 22:48:10 
 
开发: 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/24 6:09:05-

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