myql join连接 全部

         学习了mysql 连接查询和子查询,把连接查询的所有情况,做一个介绍。

1,数据:

部门数据:

DROP TABLE IF EXISTS department;
CREATE TABLE department (id int(11) NOT NULL AUTO_INCREMENT,deptName varchar(30) DEFAULT NULL,address varchar(40) DEFAULT NULL,PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO department VALUES('1', '研发部(RD)', '2层'),('2', '人事部(HR)', '3层'),('3', '市场部(MK)', '4层'),('4', '后勤部(MIS)', '5层'),('5', '财务部(FD)', '6层');

员工数据:


DROP TABLE IF EXISTS employee;
CREATE TABLE employee (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,dep_id int(11) DEFAULT NULL,age int(11) DEFAULT NULL,salary decimal(10,2) DEFAULT NULL,cus_id int(11) DEFAULT NULL,PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO employee VALUES 
('1', '张三', '1', '10', '1000.00', '1'),
('2', '李四', '1', '20', '2000.00', '1'),
('3', '王五', '1', '20', '2500.00', '1'),
('4', '赵六', '4', '20', '3000.00', '1'),
('5', '孙七', '4', '40', '3500.00', '2'),
('6', '周八', '6', '20', '5000.00', '1'),
('7', '吴九', '6', '50', '5000.00', '1'),
('8', '郑十', '30', '35', '4000.00', '1');

2,内连接

        作用: 查询两张表的共有部分,取交集 

        语法:

SELECT <select_list> FROM tableA A 
INNER JOIN  tableB B  ON A.Key = B.Key;

        例子:

SELECT * FROM employee e  
INNER JOIN department d ON e.dep_id = d.id;





3,左连接

        作用: 把左边表的内容全部查出,右边表只查出满足条件的记录

        语法:

SELECT <select_list> FROM tableA A 
LEFT JOIN  tableB B  ON A.Key = B.Key;

        例子:

SELECT * FROM employee e  
LEFT JOIN department d ON e.dep_id = d.id;



        左连接的,右边的没匹配到值,显示为null

4,右连接

        作用: 把右边表的内容全部查出,左边表只查出满足条件的记录

        语法:

SELECT <select_list> FROM tableA A 
RIGHT JOIN  tableB B  ON A.Key = B.Key;

        例子:

SELECT * FROM employee e  
RIGHT JOIN department d ON e.dep_id = d.id;



        右连接的,左边的没匹配到值,显示为null

5,查询左表独有数据

        作用: 查询A的独有数据,取差集, A - B

        语法:

SELECT <select_list> FROM tableA A 
LEFT JOIN  tableB B  ON A.Key = B.Key WHERE B.key IS NULL;

        例子:

SELECT * FROM employee e  
LEFT JOIN department d ON e.dep_id = d.id WHERE d.id IS NULL;



6,查询右表独有数据

作用: 查询B的独有数据,取差集,B - A



        语法:

SELECT <select_list> FROM tableA A 
RIGHT JOIN  tableB B  ON A.Key = B.Key WHERE A.key IS NULL;

        例子:

SELECT * FROM employee e  
RIGHT JOIN department d ON e.dep_id = d.id WHERE e.id IS NULL;



7,全连接

        作用: 查询两个表的全部信息,取并集 



        语法:

SELECT <select_list> FROM tableA A 
LEFT JOIN  tableB B  ON A.Key = B.Key
UNION
SELECT <select_list> FROM tableA A 
RIGHT JOIN  tableB B  ON A.Key = B.Key;

Oracle写法:

SELECT <select_list> FROM tableA A  
FULL Outter JOIN tableB B  ON A.Key = B.Key;

        例子:

SELECT * from employee e  
LEFT JOIN department d on e.dep_id = d.id
UNION
SELECT * from employee e  
RIGHT JOIN department d on e.dep_id = d.id;





8,查询左右表各自的独有的数据

        作用: 查询A和B各自的独有的数据



        语法:

SELECT <select_list> FROM tableA A 
LEFT JOIN  tableB B  ON A.Key = B.Key WHERE B.key IS NULL 
UNION
SELECT * FROM employee e  
RIGHT JOIN department d ON e.dep_id = d.id WHERE e.id IS NULL;

        oracle的话:

SELECT <select_list> FROM tableA A  
FULL Outter JOIN tableB B  ON A.Key = B.Key 
WHERE A.key = NULL OR B.key=NULL;

        例子:

SELECT * FROM employee e  
LEFT JOIN department d ON e.dep_id = d.id WHERE d.id IS NULL
UNION
SELECT * FROM employee e  
RIGHT JOIN department d ON e.dep_id = d.id WHERE e.dep_id IS NULL;



总结:

        在连接的各情况中平时等级连接比较多,其次是左右连接,其它的相对比较少,就看实际的要求了。

        

        上一篇: 《mysql 连接查询和子查询》

        下一篇: 《mysql 正则表达查询​​​​​​​》        

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

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

相关文章

【资源分享】-免费-的论文查重软件-论文照妖镜下载-使用教程

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

Python输出不了中文怎么解决

在文件头加上#encoding&#xff1a;utf-8即可。 # encoding: utf-8 print helloworld print u"学习" print (unicode("学习", encoding"utf-8")) shell输出&#xff1a; helloworld 学习 学习 还可以用#-*- coding: UTF-8 -*- 来指定。

C++--对象作为返回值-----拷贝构造函数不执行的问题解决方案

1.问题现象 本来func函数返回p1&#xff0c;实际上p1会先拷贝一份传递给test函数里面的p,这个时候会执行拷贝构造函数&#xff0c;但是实际上的输出并没有&#xff1b; 而且执行拷贝构造函数的时候&#xff0c;因为生成p1的副本&#xff0c;所以我们打印的地址应该不相同&…

数码管与译码器

目录 数码管 显示的基本原理 LED数码管的显示方式 静态显示方式 动态显示方式 具体案例 数码管静态显示 电路图 keil文件 数码管动态显示 电路图 keil文件 74LS138译码器 简介 译码表 译码器案例 电路图 keil文件 74HC595译码器 前言 举例解释 简单案例 …

可变参数模板

可变参数模板的概念 可变参数模板是C11新增的最强大的特性之一&#xff0c;它对参数高度泛化&#xff0c;能够让我们创建可以接受可变参数的函数模板和类模板。 在C98/03中&#xff0c;类模板和函数模板中只能包含固定数量的模板参数&#xff0c;可变模板参数无疑是一个巨大的…

我与C++的爱恋:类与对象(一)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&…

EfficientVMamba实战:使用 EfficientVMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…

虚良SEO-蜘蛛池的作用与工作原理

蜘蛛池是一种SEO优化工具&#xff0c;其主要作用是吸引搜索引擎蜘蛛到特定网站进行爬行和索引&#xff0c;从而提高网站的可见性和排名。下面分别介绍蜘蛛池的作用和工作原理。 蜘蛛池的作用&#xff1a; 提高网站收录&#xff1a; 当一个网站新发布时&#xff0c;或者长时间…

Thread的基本用法

目录 正文&#xff1a; 1.线程创建 2.线程休眠 3.获取线程实例 4.线程中断 5.线程等待join() 总结&#xff1a; 正文&#xff1a; 1.线程创建 线程创建是多线程编程的第一步&#xff0c;它涉及到创建一个可以并行执行的新线程。在Java中&#xff0c;有几种不同的方法可…

c++的学习之路:11、string(3)

昨天写string的时候没有说全&#xff0c;这里就开始接着讲。 目录 一、resize 二、insert 三、erase 一、resize 昨天说这个的时候没有考虑到缩小范围时咋处理&#xff0c;然后发现报错了&#xff0c;接着我调试发现缩小就不能正常执行了&#xff0c;因为用的是strcap所以…

【Oracle】oracle、mysql、sql server三者区别

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Oracle》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识…