三夏时光

@三夏时光

一期一会,世当珍惜!

文章 33
朋友 15
来访 52

LATEST POSTS

0-我自己

1-大神们

三夏时光

  • MySQL

MySQL核心知识之DQL数据查询语言与项目查询实战(二)

1、mysql查询之exists型子查询

简介:详解exists的用法

  • exists型子查询后面是一个受限的select查询语句;
  • exists子查询,如果exists后的内层查询能查出数据,则返回 TRUE 表示存在;为空则返回 FLASE则不存在。
分为俩种:exists、not exists
select * from 表名 a where exists (select 1 from 表名2 where 条件);

举例:查询出公司有员工的部门的详细信息
select * from dept a where exists (select 1 from employee b where a.deptnu=b.deptnu);
select * from dept a where not exists (select 1 from employee b where a.deptnu=b.deptnu);

2、mysql查询之左连接查询与右连接查询

简介:详解左右连接的用法以及应用场景

  • 左连接称之为左外连接,右连接称之为右外连接,这俩个连接都是属于外连接
  • 左连接关键字:left join 表名 on 条件 / left outer 表名 join on 条件
  • 右连接关键字:right join 表名 on 条件 / right outer 表名 join on 条件;
  • 左连接说明: left join 是left outer join的简写,左(外)连接,左表(a_table)的记录将会全部表示出来, 而右表 (b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
  • 右连接说明:right join是right outer join的简写,与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合 搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
举例:列出部门名称和这些部门的员工信息,同时列出那些没有的员工的部门
dept,employee
select a.dname,b.* from dept a left join employee b on a.deptnu=b.deptnu;
select b.dname,a.* from employee a right join dept b on b.deptnu=a.deptnu;

3、mysql查询之内连接查询与联合查询

简介:详解内连接与联合查询的用法以及应用场景

  • 内连接:获取两个表中字段匹配关系的记录
  • 主要语法:inner join 表名 on 条件;
举例:想查出员工张飞的所在部门的地址
select a.addr from dept a inner join employee b on a.deptnu=b.deptnu and b.ename='张飞';
select a.addr from dept a,employee b where a.deptnu=b.deptnu and b.ename='张飞';
  • 联合查询:就是把多个查询语句的查询结果结合在一起
  • 主要语法1:... UNION ... (去除重复)
  • 主要语法2:... UNION ALL ...(不去重复)
  • union查询的注意事项:

(1) 两个select语句的查询结果的“字段数”必须一致;

(2) 通常,也应该让两个查询语句的字段类型具有一致性;

(3) 也可以联合更多的查询结果;

(4) 用到 order by 排序时,需要加上 limit(加上最大条数就行),需要对子句用括号括起来。

举例:对销售员的工资从低到高排序,而文员的工资从高到低排序 
(select * from employee a where a.job = '销售员' order by a.sal limit 999999 ) union (select * from employee b where b.job = '文员' order by b.sal desc limit 999999);

Comments | 1 条评论

  游客,你好 修改资料

*邮箱和昵称必须填写

  • y

    配色一绝