MySQL学习第四天

1、关于查询结果集的去重
记住:distinct只能出现在所有字段的最前面。
distinct对后面的字段是联合去重,只要其中一个字段的数据不一样就不会去重。
例子:mysql> select distinct job from emp; // distinct关键字去除重复记录。
2、连接查询
根据表的连接方式来划分,包括:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接(左连接)
右外连接(右连接)
全连接( 很少用!)
(1)笛卡尔积现象
当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。
(2)表的别名的好处(当几张表有名字一样的字段时可以区分开来)
第一:执行效率高。
第二:可读性好。
例子:select e.ename,d.dname from emp e,dept d;
将emp重命名为e,将dept重命名为d,e.ename就会查询e中的ename,d.dname就会查询d中的dname
(3)内连接之等值连接:最大特点是:条件是等量关系。
语法:

A
join
B
on
连接条件
where

例子:查询每个员工的部门名称,要求显示员工名和部门名。(从emp员工表和dept部门表中操作)
select
e.ename,d.dname
from
emp e
inner join // inner可以省略的,带着inner目的是可读性好一些。
dept d
on
e.deptno = d.deptno;
(4)内连接之非等值连接:最大的特点是:连接条件中的关系是非等量关系。
连接条件为区间。
案例:找出每个员工的工资等级,要求显示员工名、工资、工资等级。
// inner可以省略
select
e.ename,e.sal,s.grade
from
emp e
inner join
salgrade s
on
e.sal between s.losal and s.hisal;
(5)自连接:最大的特点是:一张表看做两张表。自己连接自己。
案例:找出每个员工的上级领导,要求显示员工名和对应的领导名。
±------±-------±-----+ empno为员工编号
| empno | ename | mgr | mgr为领导编号
±------±-------±-----+
| 7369 | SMITH | 7902 |
| 7499 | ALLEN | 7698 |
| 7521 | WARD | 7698 |
| 7566 | JONES | 7839 |
| 7654 | MARTIN | 7698 |
| 7698 | BLAKE | 7839 |
| 7782 | CLARK | 7839 |
| 7788 | SCOTT | 7566 |
| 7839 | KING | NULL |
| 7844 | TURNER | 7698 |
| 7876 | ADAMS | 7788 |
| 7900 | JAMES | 7698 |
| 7902 | FORD | 7566 |
| 7934 | MILLER | 7782 |
±------±-------±-----+

select
a.ename as ‘员工名’,b.ename as ‘领导名’
from
emp a
inner join
emp b
on
a.mgr = b.empno;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值