zoukankan      html  css  js  c++  java
  • 数据库-多表连接查询

    -- 多表连接查询

    -- 定义: 两张或两张以上的表 通过关联关系,联合查询并获取多表的字段信息
    -- 1、内连接
    -- 根据两张表的关联条件,获取它们共有的部分 , 取交集
    -- 语法: select * from 表1 inner join 表2 on 条件(有关系的两张表的字段)
    -- 或 select * from 表1 ,表2 where 条件1
    -- 查询学生所在的 系部信息
    select * from t_student;
    select * from t_dept;
    insert into t_student(sid ,sname ,sscore ) values(1000,'李全权',500);

    select * from t_student inner join t_dept on t_student.did = t_dept.did

    select * from t_student t1,t_dept t2 where t1.did = t2.Did

    -- 查询学生 系名, 和 系主任
    select * from t_man;

    select sname ,dname ,mname from t_student as t1
    inner join t_dept as t2 on t1.did = t2.did
    inner join t_man as t3 on t3.mid = t2.mid

    -- 2、外连接
    -- 2.1 左外连接 select * from 表1 left join 表2 on 条件
    -- 以left左边的表为主表关联查询,查询关联的记录,如果不能关联上的返回null记录

    -- 查询学生信息 和他的系信息
    select * from t_student t1 left join t_dept t2 on t1.did = t2.did

    select * from t_student t1
    left join t_dept t2 on t1.did = t2.did
    left join t_man t3 on t3.mid = t2.mid

    -- 2.2 右外连接 select * from 表1 right join 表2 on 条件
    -- 以right右边的表为主表, 查询右边表的所有记录。
    -- 查询学生信息
    select * from t_student t1 right join t_dept t2 on t1.did = t2.did
    -- 等价于 以下的左外连接
    select * from t_dept t1 left join t_student t2 on t1.did = t2.did ;

    -- 2.3 全外连接 ,关联两张表所有的记录 (MySql 不支持 ,Oracle支持 )
    select * from t_student t1 full join t_dept t2 on t1.did = t2.did ;

    27 (26+1)
    7 (5+2)
    -- 最终 26+1 +2 =29

    -- 2.4 自连接(自己表关联自己表 ) 或 笛卡尔积连接 :
    -- 自连接
    select t1.id ,t1.name ,t1.pid , t2.name as pname from baseinfo t1 , baseinfo t2
    where t1.pid = t2.id

    -- 两张表之间没有关联条件
    select * from t_student t1 ,t_dept ;

    查询各个部门员工工资大于平均工资(平均工资包括所有员工)的人数

    select deptno , count(*) from emp
    where sal > (
    select avg(sal) from emp
    )

    group by deptno

    查询出有3个以上下属的员工信息 --

    select * from emp order by mgr ;

    select * from emp where empno in (
    select mgr from emp group by mgr
    having count(*)>=3
    )

  • 相关阅读:
    Linux 系统下 “账户管理”
    gulp添加版本号解决缓存问题
    vue3.0的proxy浅析内层绑定原理
    rem用font-size布局与easyui的datagrid通用,出现table不显示
    堆与栈 | 对象深浅拷贝
    vue双向绑定原理值Object.defineProperty
    bootstrap模态框不出,只出现黑色蒙层bug
    Appdelegate 导航操作
    CLLocationManager 位置定位
    导航创建
  • 原文地址:https://www.cnblogs.com/z5452830/p/13996806.html
Copyright © 2011-2022 走看看