数据库--关联查询

–关联查询:
–格式:select * from tableName1,tableName2…
select * from emp,dept;
–等值查询:两张表中有关系的字段做条件,进行等值连接
–使用表别名:
select e.ename “员工姓名”,e.deptno “部门号” from emp e,dept d where e.deptno=d.deptno;
–关联查询:
–内连接:[inner] join on
–格式:A join B on 关联条件 where/and
–外连接: 驱动表 从表
–左外连接:A left join B on 条件 A是驱动表,B是从表
–右外连接:A right join B on 条件 B是驱动表,A是从表
–全外连接:A full join B on 条件
–自连接:
–高级关联查询:
–子查询在where字句中
–子查询返回的数据特点:可能是单行单列的
–子查询返回的数据特点:可能是多行单列的
—-子查询返回的数据特点:可能是单行多列的
–子查询返回的数据特点:可能是多行多列的
–子查询在from字句中:
–练习1:查询每个员工的工资,姓名和其部门的平均工资
select deptno,avg(ifnull(sal,0)) ‘avg_sal’ from emp group by deptno;
select sal,ename avg_sal from emp join (select deptno,avg(ifnull(sal,0)) ‘avg_sal’ from emp group by deptno) t on emp.deptno=t.deptno order by t.deptno;

–子查询在having字句中
–练习:查询部门平均工资大于30号部门平均工资的部门 平均工资,工资之和,最大工资,最小工资,总人数
select deptno,avg(ifnull(sal,0)) from emp where deptno=30;
select deptno,avg(ifnull(sal,0)),sum(sal),max(sal),min(sal),count(*) from emp group by deptno having avg(ifnull(sal,0))>(select avg(ifnull(sal,0)) from emp where deptno=30);

–子查询在select字句中(相当于外连接另一种)
–练习:查询每个员工的姓名,工资,及其部门的平均工资,工资之和
select ename,sal,(select avg(ifnull(sal,0)),(select sum(sal)from emp c where c.deptno=b.deptno )sum_sal from emp a where a.deptno=b.deptno) avg_sal from emp b order by b.deptno;
–约束:
–主键约束
–非空约束
–检查性约束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值