WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 技术教程(干货) MySQL多表查询的语句

MySQL多表查询的语句

夏柔 9月 28, 2019

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

 

0
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
22 3月, 2024
03月22日,星期五, 每天60秒读懂世界!
夏柔
站长
夏山如碧 - 怀柔天下
1692
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2