MySQL实现多表查询语句介绍

  

下面一起来了解下MySQL实现多表查询语句介绍,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL实现多表查询语句介绍这篇短内容是你想要的。

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

创建表

 #创建表
  创建表的部门(int id,名称varchar (20));
  创建表employee1 (
  id auto_increment int主键,
  名字varchar (20),
  性enum(& # 39;男性# 39;,& # 39;女# 39;)not null默认& # 39;男性# 39;
  年龄int,
  dep_id int
  );
  #插入数据
  插入部值(200 & # 39;技术& # 39;),(201年,& # 39;人力资源& # 39;),(202年,& # 39;销售& # 39;),(203年,& # 39;运营& # 39;);
  
  插入employee1(姓名、性别、年龄、dep_id)值(& # 39;大多# 39;& # 39;男性# 39;,18200),(& # 39;亚历克斯# 39;& # 39;女# 39;,48201),(& # 39;汤姆# 39;& # 39;男性# 39;,38201),(& # 39;yuanhao& # 39; & # 39;女# 39;,28202),(& # 39;lidawei& # 39; & # 39;男性# 39;,18200),(& # 39;jinkezhou& # 39; & # 39;女# 39;,18204);
  
  #查看表
  mysql>从employee1 select *;
  + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  | | id名称|性| |年龄dep_id |
  + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  男性大多| 1 | | | 200 | |
  alex | | 2 |女| 48 | 201 |
  | 3 |汤姆男性| | 201 | |
  | 4 | yuanhao |女| 28 | 202 |
  男| 5 | lidawei | | 200 | |
  | 6 | jinkezhou |女| 204 | |
  + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  6行集(0.00秒)
  mysql>select * from部门;
  + - - - - - - - - - - - - - - - - - - - - - - +
  | | | id名称
  + - - - - - - - - - - - - - - - - - - - - - - +
  | 200 |技术|
  | 201 |人力资源|
  | 202 |销售|
  | 203 |运营|
  + - - - - - - - - - - - - - - - - - - - - - - +
  4行集(0.00秒)

多表连接查询

交叉连接

交叉连接:不适用任何匹配条件。生成笛卡尔积

 mysql>select * from employee1部门;

内连接

内连接:找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。(只连接匹配的行)

 #找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果
  #部门没有这204个部门,因而员工表中关于204年这条员工信息没有匹配出来
  mysql>select * from employee1,部门employee1.dep_id=department.id;
  
  #上面用,表示的可以用下面的内连接表示,建议使用下面的那种方法
  mysql>select * from employee1 employee1.dep_id=department.id内连接部;
  
  #也可以这样表示哈
  mysql>选择employee1.id、employee1.name employee1.age、employee1.sex department.name employee1,部门在employee1.dep_id=department.id; 

左连接左

优先显示左表全部记录。

 #左链接:在按照上的条件取到两张表共同部分的基础上,保留左表的记录
  mysql>select * from employee1离开加入部门department.id=employee1.dep_id;
  
  mysql>从部门选择*离开加入employee1 department.id=employee1.dep_id; 

右连接正确的

优先显示右表全部记录。

 #右链接:在按照上的条件取到两张表共同部分的基础上,保留右表的记录
  mysql>select *从employee1右加入部门department.id=employee1.dep_id;
  mysql>select *从部门加入employee1 department.id=employee1.dep_id; 

全部连接加入

 mysql>select * from部门完全加入employee1; 

符合条件多表查询

示例1:以内连接的方式查询员工和部门表,并且员工表中字的年龄段值必须大于25日
即找出公司所有部门中年龄大于25岁的员工

 mysql>select * from employee1内连接部上employee1.dep_id=department.id age> 25; 

示例2:以内连接的方式查询员工和部门表,并且以年龄字段的升序方式显示

 mysql>select * from employee1内连接部上employee1.dep_id=department.id age> 25 age> 25按年龄顺序asc; 

子查询

 # 1:子查询是将一个查询语句嵌套在另一个查询语句中。
  # 2:内层查询语句的查询结果,可以为外层查询语句提供查询条件。
  # 3:子查询中可以包含:在不在,,,存在和不存在等关键字
  # 4:还可以包含比较运算符:=?=⒈?& lt;等

示例:

 #查询平均年龄在25岁以上的部门名
  mysql>选择名称从部门id(从employee1选择dep_id group by dep_id avg()岁比;25);
  
  #查看技术部员工姓名
  mysql>选择的名字从employee1 dep_id=(选择id从部门名称=& # 39;技术& # 39;);
  
  #查看小于2人的部门名
  mysql>选择名称从部门id(从employee1选择dep_id group by dep_id计数(id) & lt;2)联盟选择名称从部门id而不是(从employee1选择不同dep_id);
  #提取空部门
  #有人的部门
  mysql>select *从部门id而不是(从employee1选择不同dep_id); 

MySQL实现多表查询语句介绍