mysql 之多表

mysql之多表

已知2张基本表:部门表:dept (部门号,部门名称);员工表 emp(员工号,员工姓名,年龄,入职时间,收入,部门号)

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');

dept.dept1=emp.dept2

一、

1.普通内连接===》只能取到2表交集部分数据

Select * from dept inner join emp on dept.dept1=emp.drpt2

2.基本内连接===》只能取到2表交集部分数据

Select * from dept,emp where dept.dept1=emp.dept2

3.左连接===》以左表为主,左表的数据会全部显示出来,右边的数据不够会补null处理

Select * from dept left join emp on dept.dept1=emp.dept2

4.右连接===》以右表为主,右表的数据会全部显示出来,左边的数据不够会补null处理

Select * from dept right join emp on dept.dept1=emp.dept2

5.左独有数据===》左表中单独存在的数据会显示出来

Select * from dept left join emp on dept.dept1=emp/dept2 where name is null

6.右独有数据===》右表中单独存在的数据单独显示

Select * from dept right join emp on dept.dept1=emp.dept2 where dept1 is null

7.全外连接(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 dept_name 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 dept_name 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;

二、子查询

定义:一个查询中嵌套另一个查询

1.、子查询的分类

(1)标量子查询

(2)列子查询

(3)行子查询

(4)表子查询(运用多)

2、子查询详解

(1)标量子查询(返回一个值)

标量子查询:把一个sql 执行返回的一个值,作为另一个sql的条件,得到的结果是一行一列,一般出现在where之后,

备注:标量子查询允许使用的比较运算符号:=,!=,>,<,>=,<=

例子:select  dept1 from dept  where dept_name="财务";

select  sum(incoming) from  emp  where  dept2=(select  dept1 from dept where dept_name="财务");

(2)列子查询(返回的结果是一个列)

定义:返回的是一列值

注意点:通常在where之后使用,使用是in或not in ,不运行使用比较运算符,因为他有多个值。

select  dept_name  from  dept  where dept1 in (select  dept2 from  emp where name="张三" or name="牛八")

(3)列子查询

定义:返回的结果是一行多列,一般出现在where的后面

select  * from  emp where(age,incoming ) in (select  age,incoming from  emp  where name="老九");查询年纪,收入和老九一样的所有人的信息

select  sid from  emp where(age,incoming ) in (select  age,incoming from emp  where name="老九"); 查询年纪,收入和老九相同人的sid.

  1. 表子查询

定义:返回的结果是多行多列(返回的就是一个表),一般接在from的后面,返回的是一个表。时表: as  零时表名

select  * from (select  *  from  dept  INNER JOIN  emp  on dept.dept1=emp.dept2)as s where s.dept2>101

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

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

相关文章

【Django】-6- 登录用户身份鉴权

一、&#x1f6e1;️ Django 鉴权 & 登录控制 Django 自带的鉴权系统&#xff08;用户身份管理小管家&#xff09;鉴权系统能干啥&#xff1f;Django 自带的鉴权系统&#xff0c;就像一个 “用户身份管家” &#xff0c;帮你管好这些事儿&#xff1a;功能类比加密存储用户密…

winscp 连openwrt 返回127错误码

winscp 连openwrt 24.10返回127错误码。找了许多原因也没搞清为啥&#xff08;客户端加密方式、winscp版本过低等都试过&#xff09;&#xff0c;用SecureFx试了一下&#xff0c;发现是openwrt 24.10固件没有安装Sftp服器&#xff0c;用下列命令安装即可。opkg install openssh…

Python编程基础与实践:Python文件处理入门

Python文件处理实战 学习目标 通过本课程的学习&#xff0c;学员将掌握如何在Python中打开、读取、写入和关闭文件&#xff0c;了解文本文件和二进制文件的区别&#xff0c;以及在文件处理中的一些最佳实践。 相关知识点 Python文件处理 学习内容 1 Python文件处理 1.1 文件的基…

Corrosion2靶机

打开靶机信息收集&#xff1a;kali里使用arp-scan -l或者netdiscover发现主机使用nmap扫描端口nmap -sS -sV -T4 -n -p- 192.168.31.20开启了22、80、8080端口 8080发现开启了tomcat服务扫出了他的ip以及他开放的端口&#xff0c;我们接下来拿浏览器访问一下两个页面都没有什么…

编程与数学 03-002 计算机网络 18_物联网与网络

编程与数学 03-002 计算机网络 18_物联网与网络一、物联网的基本概念&#xff08;一&#xff09;物联网的架构与层次&#xff08;二&#xff09;物联网的关键技术二、物联网网络的构建&#xff08;一&#xff09;物联网网络的通信协议&#xff08;二&#xff09;物联网网络的拓…

【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载

在Kubernetes中&#xff0c;配置管理是应用部署的重要环节。ConfigMap作为存储非敏感配置数据的资源对象&#xff0c;能帮助我们实现"配置与代码分离"&#xff0c;让应用部署更灵活。一、什么是ConfigMap&#xff1f; ConfigMap是Kubernetes中用于存储非加密配置数据…

Promise和回调地狱

顺序执行 vs. 异步操作&#xff1a; 当我们说“顺序执行”&#xff0c;通常是指 操作按顺序发生。而 异步操作 指的是操作在后台执行&#xff0c;不会阻塞其他操作&#xff0c;通常会使用回调、Promise 或 async/await 来处理结果。 在 Promise 链式调用 的情况下&#xff0c;虽…

LeetCode 65:有效数字

LeetCode 65&#xff1a;有效数字问题本质与挑战 需判断字符串是否为有效数字&#xff0c;规则涉及整数、小数、指数&#xff08;e/E&#xff09;的复杂组合&#xff0c;如&#xff1a; 整数&#xff1a;123、-45、678小数&#xff1a;1.2、.3、4.、5.6指数&#xff1a;1e10、2…

数据结构之顺序表应用与双指针法

元素删除通过元素移动的方式来模拟删除操作&#xff1a;将指定下标后的所有元素依次向前移动一位&#xff0c;覆盖要删除的元素&#xff0c;从而达到 "删除" 的效果。 通过自定义函数实现删除功能&#xff0c;需要传入数组、数组长度的指针&#xff08;因为要修改长度…

Python编程基础与实践:Python基础数据类型入门

Python变量与数据类型实践 学习目标 通过本课程的学习&#xff0c;学员可以掌握Python中变量的基本概念&#xff0c;了解并能够使用Python的基本数据类型&#xff0c;包括整型、浮点型、字符串和布尔值。此外&#xff0c;学员还将学习如何在实际编程中声明和使用这些数据类型。…

深入解析C/C++函数变量传递:栈、堆与全局变量的生命周期之旅

资料合集下载链接: ​https://pan.quark.cn/s/472bbdfcd014​ 在编程学习中,函数是构建程序的基石,而理解变量如何在函数之间正确、安全地传递,则是从入门到进阶的关键一步。我们经常会遇到这样的困惑:为什么一个指针在某个函数里工作正常,传递给另一个函数后却变成了“…

Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法

Ubuntu 18启动以后发现连接不上网络,执行 ip a命令或者ifconfig都显示不了正确的地址(192.168.xxx.xxx)。 刚装好系统是没问题的,打算使用FTP开启ftp服务与windows互传文件,安装了net-tools插件就突然连不上网络了,怀疑是网络配置被修改了。 经过了一段时间折腾终于解决了,…

【计算机网络】Socket网络编程

目录 一、主机字节序列和网络字节序列 二、套接字地址结构 1、IPv4 地址结构 (sockaddr_in) 2、IPv6 地址结构 (sockaddr_in6) 3、通用套接字地址结构 (sockaddr) 4、Unix域套接字地址结构 (sockaddr_un) 5、专用 socket 地址结构 6、套接字地址结构的转换 字符串转二进制地址 …

网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率

文章目录前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息5. 本地运行测试6. 安装内网穿透6.1 配置公网地址…

Pycharm的设置过程

20250802 用于记录pycharm的设置过程 编辑器相关 python语言设置文件注释 在设置的编辑器部分&#xff0c;按照需求设置模板&#xff01; 函数生成注释

GaussDB as的用法

通过使用 SQL&#xff0c;可以为表名称或列名称指定别名&#xff08;Alias&#xff09;。1 别名的作用SQL 别名用于为表或表中的列提供临时名称。 SQL 别名通常用于使列名更具可读性。 SQL 一个别名只存在于查询期间。 提高SQL执行效率与编写SQL代码效率。2 使用别名的场景在下…

Prim算法

一&#xff0c;prim算法逻辑1.理解&#xff1a;克鲁斯卡尔算法关注的是边&#xff0c;普里姆算法关注的是点把图中每个顶点比作孤岛&#xff0c;点亮一座孤岛就可以解锁附近的孤岛每次解锁的点都是离自身最近的点2.普里姆算法流程a.采用邻接矩阵表示&#xff0c;考虑要查找最小…

嵌入式学习之硬件——51单片机 1.0

一、基础知识1.什么是嵌入式&#xff1f;嵌入式以应用为中心&#xff0c;计算机技术为基础&#xff0c;软硬件可裁剪的专用计算机系统&#xff1b;2.嵌入式的应用&#xff1f;消费电子、无人驾驶、储能、新能源........3.嵌入式发展&#xff1f;&#xff08;1&#xff09;第一阶…

51c大模型~合集161

自己的原文哦~ https://blog.51cto.com/whaosoft/14079111 #这家国内公司&#xff0c;在给xx智能技术栈做「通解」 打通机器人智能化的关键&#xff1a;眼脑手。 xx智能&#xff08;Embodied Intelligence&#xff09;是 AI 领域里热度极高的赛道&#xff1a;给大模型…

Linux9 root密码修改

开机按e进入在linux行即quiet后面输入rd.break ctrlx进入内核输入mount -o remount,rw /sysrootchroot /sysrootpasswd root即可修改密码输入touch /.autorelabelexitexit等待即可