码迷,mamicode.com
首页 > 数据库 > 详细

MySQL进阶4

时间:2018-09-22 19:51:33      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:右连接   主表   info   img   使用   分享图片   右外连接   等值连接   类型   

多表查询:

合并结果集:

合并结果集就是把两个select语句的查询结果合并到一起,被合并的两个结果列数列类型必须相同

 

合并结果集的两种方式:

union:合并时去除重复记录

union all:合并时不去除重复记录

 

格式:

select * from 表1 union select * from 表2;
select * from 表1 union all select * from 表2;

 

创建表:

技术分享图片

技术分享图片

技术分享图片

 

union:

技术分享图片

 

union all:

技术分享图片

 

 

连接查询:

连接查询,也可以叫跨表查询,需要关联多个表进行查询

笛卡尔积:假设集合A={a, b}, 集合B={0, 1},则两个集合的笛卡尔积为{a, 0), {a, 1}, {b, 0}, {b, 1},可以扩展到多个集合的情况

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

 

技术分享图片

技术分享图片

技术分享图片

 

同时查询两个表出现的就是笛卡尔积:

技术分享图片

 

 多表联查保证数据正确的方法:

在查询时要保持主键和外键一致

技术分享图片

主表当中的数据参照子表当中的数据,逐行判断,相等的留下

 

 

连接方式的分类:内连接,外连接,自然连接

内连接:等值连接,多表连接,非等值连接,自连接

等值连接:

两个表同时出现的id号(值)才显示

技术分享图片

与多表联查约束主外键是一样的,只是写法改变,on后面只写主外键,如果还有条件直接在后面写where

技术分享图片

多表联查后面还有条件就写and

 

多表连接:

建立学生,分数,科目表:

技术分享图片

技术分享图片

技术分享图片

 

技术分享图片

技术分享图片

技术分享图片

 

 

技术分享图片

技术分享图片

技术分享图片

 

使用99连接法:

技术分享图片

 

使用内联查询:

技术分享图片

 

非等值连接:

技术分享图片

技术分享图片

技术分享图片

 

技术分享图片

技术分享图片

技术分享图片

 

 

技术分享图片

技术分享图片

技术分享图片

 

查看所有员工姓名,工资:

技术分享图片

 

查询所有员工姓名,工资和部门:

技术分享图片

技术分享图片

 

 

查询所有员工的姓名,工资和所在部门及工资等级:

技术分享图片

技术分享图片

 

外连接:左外连接(左连接),右外连接(右连接)

左连接:

两表满足条件相同的数据,如果左边表中有不相同的数据,也把左边表中的数据查出来,左边表当中的数据全部查出来,右边表当中只查出满足条件的内容

技术分享图片

技术分享图片

 

技术分享图片

 

 

技术分享图片

技术分享图片

 

技术分享图片

 

使用内连接时,zq不会查出来,没有成绩,缺考了,把所有考过试的学生分数查出来:

 技术分享图片

技术分享图片

 

 

使用左连接查询所有学生及学生的考试分数:

技术分享图片

左连接会把左表当中的数据全部查出,右表当中查出满足条件的数据,可以省略outer不写,查询时两个表可以不需要建立主外键约束

 

 

 右连接:

技术分享图片

右连接会把右表当中的数据全部查出,左边表只查出满足条件的记录

站在表外的角度看,使用左连接就是把左表的数据全部查出,右边查出满足条件的,右连接反之

 

 

自然连接:

连接查询会产生无用笛卡尔积,我们通常使用主外键关系来去除它,而自然连接无需你给出主外键关系,它会自动找到这一等式

要求:两张连接的表中列名称和类型完全一致的列作为条件会去除相同的列

 

 

子查询:

一个select语句包含另一个完整的select语句或两个以上的select

 

子查询出现的位置:

where后,把select查询出来的结果当作另一个select的条件值

from后,把查询出的结果当作一个新表

 

查询与项羽同一部门的员工:

技术分享图片

查询工资高于程咬金的员工:

技术分享图片

 

 查询工资高于30号部门所有人的员工信息:

技术分享图片

 

查询工作和工资与妲己完全相同的员工信息:

技术分享图片

 

查询有2个以上直接下属员工的信息:

技术分享图片

 

查询员工编号为7788的员工名称,员工工资部门名称部门地址:

技术分享图片

 

 

自连接:

 查询7369员工编号,姓名,经理编号,经理姓名:

技术分享图片

上述方法只能查出一个经理的名称

 

自连接:自己连接自己,起别名:

技术分享图片

 

MySQL进阶4

标签:右连接   主表   info   img   使用   分享图片   右外连接   等值连接   类型   

原文地址:https://www.cnblogs.com/xzx123/p/9690722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!