[摘要]+------+--------------+
4 rows in set (0.00 sec)多表连接查询交叉连接交叉连接:不适用任何匹配条件。生成笛卡尔积内连接内连接:找两张表共有的部分,相当于...
+------+--------------+
4 rows in set (0.00 sec)多表连接查询 交叉连接 交叉连接:不适用任何匹配条件。生成笛卡尔积 内连接 内连接:找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。(只连接匹配的行) # 找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果
#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如何实现多表查询?MySQL多表查询的语句的详细内容,更多请关注php中文网其它相关文章!
学习教程快速掌握从入门到精通的SQL知识。
|