MySQL实现多表查询语句介绍
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,下面一起来了解下MySQL实现多表查询语句介绍,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL实现多表查询语句介绍这篇短内容是你想要的。创建表# 创建表create table depar
千家信息网最后更新 2025年01月31日MySQL实现多表查询语句介绍
下面一起来了解下MySQL实现多表查询语句介绍,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL实现多表查询语句介绍这篇短内容是你想要的。
创建表
# 创建表create table department(id int,name varchar(20));create table employee1(id int primary key auto_increment,name varchar(20),sex enum('male','female') not null default 'male',age int,dep_id int);# 插入数据insert into department values(200,'技术'),(201,'人力资源'),(202,'销售'),(203,'运营');insert into employee1(name,sex,age,dep_id) values('egon','male',18,200),('alex','female',48,201),('tom','male',38,201),('yuanhao','female',28,202),('lidawei','male',18,200),('jinkezhou','female',18,204);# 查看表mysql> select * from employee1;+----+-----------+--------+------+--------+| id | name | sex | age | dep_id |+----+-----------+--------+------+--------+| 1 | egon | male | 18 | 200 || 2 | alex | female | 48 | 201 || 3 | tom | male | 38 | 201 || 4 | yuanhao | female | 28 | 202 || 5 | lidawei | male | 18 | 200 || 6 | jinkezhou | female | 18 | 204 |+----+-----------+--------+------+--------+6 rows in set (0.00 sec)mysql> select * from department;+------+--------------+| id | name |+------+--------------+| 200 | 技术 || 201 | 人力资源 || 202 | 销售 || 203 | 运营 |+------+--------------+4 rows in set (0.00 sec)
多表连接查询
交叉连接
交叉连接:不适用任何匹配条件。生成笛卡尔积
mysql> select * from employee1 ,department;
内连接
内连接:找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。(只连接匹配的行)
# 找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果#department没有204这个部门,因而employee表中关于204这条员工信息没有匹配出来mysql> select * from employee1,department where employee1.dep_id=department.id;#上面用where表示的可以用下面的内连接表示,建议使用下面的那种方法mysql> select * from employee1 inner join department on employee1.dep_id=department.id;# 也可以这样表示哈mysql> select employee1.id,employee1.name,employee1.age,employee1.sex,department.name from employee1,department where employee1.dep_id=department.id;
左连接left
优先显示左表全部记录。
#左链接:在按照on的条件取到两张表共同部分的基础上,保留左表的记录mysql> select * from employee1 left join department on department.id=employee1.dep_id;mysql> select * from department left join employee1 on department.id=employee1.dep_id;
右连接right
优先显示右表全部记录。
#右链接:在按照on的条件取到两张表共同部分的基础上,保留右表的记录mysql> select * from employee1 right join department on department.id=employee1.dep_id;mysql> select * from department right join employee1 on department.id=employee1.dep_id;
全部连接join
mysql> select * from department full join employee1;
符合条件多表查询
示例1:以内连接的方式查询employee和department表,并且employee表中的age字段值必须大于25,
即找出公司所有部门中年龄大于25岁的员工
mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25;
示例2:以内连接的方式查询employee和department表,并且以age字段的升序方式显示
mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25 and age>25 order by age asc;
子查询
#1:子查询是将一个查询语句嵌套在另一个查询语句中。#2:内层查询语句的查询结果,可以为外层查询语句提供查询条件。#3:子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字#4:还可以包含比较运算符:= 、 !=、> 、<等
示例:
# 查询平均年龄在25岁以上的部门名mysql> select name from department where id in ( select dep_id from employee1 group by dep_id having avg(age) > 25 );# 查看技术部员工姓名mysql> select name from employee1 where dep_id = (select id from department where name='技术');# 查看小于2人的部门名mysql> select name from department where id in (select dep_id from employee1 group by dep_id having count(id) < 2) union select name from department where id not in (select distinct dep_id from employee1);# 提取空部门 #有人的部门mysql> select * from department where id not in (select distinct dep_id from employee1);
看完MySQL实现多表查询语句介绍这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。
查询
语句
条件
结果
技术
部分
部门
员工
方式
示例
笛卡尔
人力
人力资源
信息
内容
基础
字段
年龄
更多
行业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京新中工软件开发中心电话
联想服务器价格
检查加强网络安全
微标杆互联网科技
乐山住宿软件开发
戴尔服务器更换电池后不开机
宜兴软件开发商
dns采用的是什么数据库系统
肖海容数据库原理与应用技术
无线网络安全.pdf
大连瑞莱克斯软件开发公司
网络安全攻击事件演练文档
网站服务器 冷备
cnc上位机软件开发教程
胡润中国网络安全企业新锐人物
什么是服务器地址
数据库设置的自动作业
怀化软件开发培训多少钱
手抄报网络安全主题手抄报
腾讯云服务器网页登陆
数据库的基础知识
自己搭建一个智能家居服务器
数据库一体机的厂家
什么是网络安全技术的基础
有关网络安全方面的毕业设计
护苗网络安全系列课堂2020
开展网络安全培训的效果
exac基因数据库
西城区信息化网络技术服务怎么样
如何使用数据库做分页