sql多表运用 12.3

news2024/11/25 2:36:11

肖SIR__数据库之多表运用__12.3

数据库之多表运用

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',8000,'105');

drop table dept ;
drop table emp ;
select * from dept;
select * from emp ;

===================================

 部门表:部门编号  ,部门名称

员工表:

员工编号,姓名,年龄、工作时间、工资、部门编号

 ===================================

一、多表查询

1、什么是多表关联查询

从2个表或者更多的表中查询我们需要的数据

2、多表连接的关系?

(1)内连接

(2)左连接

(3)右连接

(4)左独有数据

(5)右独有数据

(6)全外连接

比如: a  表:1,2,3   b  表:1,2,4

内连接:显示左边12和右边12关联                12

左连接:显示左边1,2,3,右  边12  关联     123   4不显示

右连接: 显示右边1,2,4全部显示,左  边12关联      124, 3不显示

左独有数据:显示3

右独有数据:显示4

全外连接:显示1,2,3,4

 ====================================================

三、内连接

1、内连接(普通内连接,隐藏内连接)

定义:查询两个表共有的关联的数据

(1)普通内连接:

格式:select  * from   表1  inner  join  表2  on    表1.关联字段1=表2.关联字段2 ;

案例:select  * from   dept  inner  join  emp  on  dept.dept1=emp.dept2 ;

 (2)隐藏内连接

(都是内连接,没啥区别)

格式:select  * from   表1  , 表2   where  表1.关联字段1=表2.关联字段2 ;

案例:select   *  from  dept  ,emp  where  dept.dept1=emp.dept2

 2、左连接

格式:select  * from   表1  left   join  表2  on    表1.关联字段1=表2.关联字段2 ;

案例:select  *  from   dept  left join emp   on   dept.dept1=emp.dept2;

3.右连接

格式:select  * from   表1   right   join  表2  on    表1.关联字段1=表2.关联字段2 ;

案例:select  *  from   dept    right    join emp   on   dept.dept1=emp.dept2;

4、左独有数据

格式:select  * from   表1  left   join  表2  on    表1.关联字段1=表2.关联字段2   where   右表字段   is   null  ;

案例:select  *  from   dept  left join emp   on   dept.dept1=emp.dept2  where   name is  null;

五、右独有数据

格式:select  * from   表1  right   join  表2  on    表1.关联字段1=表2.关联字段2  where   左表字段   is  null  ;

案例:select  *  from   dept    right   join  emp   on   dept.dept1=emp.dept2  where   dept1  is  null;

六、全外连接 (union)

#1内连接+左独有+右独有

select * from dept inner join emp on dept.dept1=emp.dept2 
UNION
select * from dept left join emp on dept.dept1=emp.dept2 where name is null 
UNION
select * from dept right join emp on dept.dept1=emp.dept2 where dept1 is null;

???

#2 左连接+右独有

select * from dept left join emp on dept.dept1=emp.dept2
UNION
select * from dept right join emp on dept.dept1=emp.dept2 where dept1 is null ;

#3 右连接+左独有

select * from dept right JOIN emp on dept.dept1=emp.dept2
UNION
select * from dept left join emp on dept.dept1=emp.dept2 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.列出每个部门的平均收入及部门名称; 

结果:部门名称(dept_name),avg(incong)

条件:

group by     dept_name

 方法

select      avg(incoming) ,dept_name    from   dept    left   join     emp  on  dept.dept1=emp.dept2  group  by  dept_name ;



2.财务部门的收入总和; 

emp:  sum(incoming)

dept:   dept_name="财务"

方法1:select  sum(incoming) from   dept  INNER JOIN  emp    on dept.dept1=emp.dept2  where  dept_name="财务" ;



3.It技术部入职员工的员工号

方法1:select sid from  dept inner join emp on dept.dept1=emp.dept2  where dept_name="IT技术"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【已解决】conda环境下ROS2 colcon build编译选择特定python解释器

目录 1 问题背景2 问题探索3 问题解决4 告别Bug 1 问题背景 环境: ROS2 HumbleUbuntu22.04 现象:运行colcon build后由cpp编译生成的python导出库(如自定义消息、服务等),其版本与由python setup.py安装的python库版本不一致,导致…

App自动化测试笔记(四):UIAutomatorViewer与元素定位API

UIAutomatorViewer 1、应用场景 定位元素的时候必须根据元素的相关特征来进行定位,而 UIAutomatorViewer 就是用来获取元素特征的。 如何使用UIAutomatorViewer 1、保证想要查看的元素在当前的频幕上 2、打开UIAutomatorViewer工具 3、点击左上角左数第二个按钮…

IDEA切换JDK版本超详细步骤

😀 IDEA切换JDK版本详细教程,全网步骤最详细,实测可用。 文章目录 第一步、选择SDKs切换SDK版本:第二步、选择Modules切换Sources和Dependencies版本:第三步、选择Project切换SDK和Language Level版本:第四…

VR科学知识互动展示介绍|游戏体验馆加盟|VR展示厅

VR科学知识互动展示是一种利用虚拟现实技术来呈现科学知识并与观众进行互动的展示方式。通过VR设备,参观者可以沉浸在各种科学主题的虚拟环境中,以全新的视角和体验来探索科学领域的知识。 这样的展示通常结合了视觉、听觉和触觉等感官体验,使…

网络信息安全:11个常见漏洞类型汇总

一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。 在设计程序,忽略了对输入字符串中夹带的SQL指令的检查&…

恒峰便携式森林消防灭火泵:轻巧易携,灭火无忧

在自然环境中,森林火灾是一种常见的自然灾害。为了保护森林资源和人民生命财产安全,我们需要一款轻便、高效的消防灭火设备。本田发动机单缸四冲手拉式启动的便携式森林消防灭火泵应运而生,它以其出色的性能和便捷的使用方式,成为…

工作中常用的6种设计模式

背景 谈起设计模式,你一定会问?这玩意到底有啥用?我好像没用过也不影响做一个码农。也可能项目中实际用了,但是你不自知。虽然Java设计模式有23种,但是工作中常用的可能并没有那麽多。就像新华字典有多少字&#xff0c…

SpringBoot使用MongoTemplate详解

1.pom.xml引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.MongoDbHelper封装 /*** MongoDB Operation class* author HyoJung* date …

群晖 NAS 安装 Ghost Blog

通过群晖的 docker 容器下载 ghost 映像&#xff0c;并配置后启动。 一、下载映像文件 由于网络环境&#xff0c;无法直接连接 docker 的映像服务器&#xff0c;因此使用境内代理&#xff0c;通过 url 方式下载。 打开 docker 控制台&#xff0c;点击左边导航栏的 “映像”&…

2024大厂Android面试真题集锦,算法真题解析:美团+Tencent+字节跳动+阿里+360+拼多多

前言 IT行业薪水高&#xff0c;这是众所周知的&#xff0c;所以很多人大学都选择IT相关专业&#xff0c;即使非该专业的人&#xff0c;毕业了也想去一个培训机构镀镀金&#xff0c;进入这一行业。 但是有关这个行业35岁就退休的说法&#xff0c;也一直盛传。 加上这几年不断…

苹果曝出两个 iOS 系统 0-Day 漏洞

最近&#xff0c;苹果公司发布了紧急安全更新&#xff0c;解决了两个 iOS 零日漏洞。这些漏洞存在于 iOS 内核&#xff08;CVE-2024-23225&#xff09;和 RTKit&#xff08;CVE-2024-23296&#xff09;中&#xff0c;威胁攻击者可利用其绕过内核内存保护&#xff0c;这就给了具…

MySQL 表锁问题

MySQL 表锁解决 查看哪些表被锁&#xff0c;字段 In_use 表示有多少线程在使用这张表&#xff0c;字段 name_locked 表示表格是否被锁&#xff0c;0 代表锁定状态 mysql> show OPEN TABLES where In_use > 0; -------------------------------------------------------…

音视频学习笔记——ffmpeg解码流程

✊✊&#x1f308;大家好&#xff01;本篇文章主要记录自己在进行音视频学习中&#xff0c;整理的部分ffmpeg解码相关的内容重点&#x1f607;。 首先重新梳理了ffmpeg解码流程&#xff0c;重点学习avcodec_send_packet()、avcodec_receive_frame()在解码中的应用&#xff0c;以…

【QT】重载的信号槽/槽函数做lambda表达式

重载的信号槽 函数指针&#xff1a; int fun(int a,long b) int (*funp)(int, long) fun; 实现回调函数就需要函数指针 信号重载 派生类槽函数发送两个信号 派生类给父类发两个信号 void (SubWidget::*mysigsub)() &SubWidget::sigSub;connect(&subw,mysigsub,t…

网络编程:select、poll

.1、select完成TCP并发服务器 程序代码&#xff1a; #include <myhead.h> #define SER_IP "192.168.125.234" //服务端IP #define SER_PORT 8888 //服务端端口号int main(int argc, const char *argv[]) {//1.创建用于连接的套接字int sfds…

1-安装rabbitmq

rabbitmq官网&#xff1a; https://www.rabbitmq.com/docs/download 本机环境&#xff1a;mac&#xff0c;使用orbstack提供的docker 使用docker部署rabbitmq docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management 然后报错&#xf…

bun 单元测试

bun test Bun 附带了一个快速、内置、兼容 Jest 的测试运行程序。测试使用 Bun 运行时执行&#xff0c;并支持以下功能。 TypeScript 和 JSX生命周期 hooks快照测试UI 和 DOM 测试使用 --watch 的监视模式使用 --preload 预加载脚本 Bun 旨在与 Jest 兼容&#xff0c;但并非所…

SD-WAN: 灵活部署,助力云服务

随着Office 365、Salesforce、Webex和SAP等云托管应用程序的迅速发展&#xff0c;企业正加速将业务关键应用程序迁移到云端。这种转变需要为遍布各地的员工提供安全可靠的云服务网络连接。本文将介绍SD-WAN如何助力企业的云服务访问。 传统的网络架构&#xff0c;特别是基于MPL…

【AI视野·今日Robot 机器人论文速览 第八十二期】Tue, 5 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 5 Mar 2024 Totally 63 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;双臂机器人拧瓶盖, (from 伯克利) website: https://toruowo.github.io/bimanual-twist &#x1f4da;水下抓取器, (from …

总结:大模型技术栈---算法与原理

原文地址&#xff1a;大模型技术栈-算法与原理 1. tokenizer方法 word-level char-level subword-level BPE WordPiece UniLM SentencePiece ByteBPE2. position encoding 绝对位置编码 ROPE AliBi 相对位置编码 Transformer-XL T5/TUPE DeBERTa3. 注意力机制 Mamba,H3,Hyena…