美文网首页
2019-03-25多表查询

2019-03-25多表查询

作者: 骏龙ll | 来源:发表于2019-03-25 15:50 被阅读0次

    1、--涉及的表是一张以上,两张表就会发生自动连接

    --连接规则:笛卡尔积,(每张表里的每一行都与其他表的每一行发生一个链接匹配的情况)

    一般n张表相连接,连接条件有n-1个

    1/等值连接 两张表有一列值相等

    2/非等值连接

    **注意

    1.同名列需要加表名作为前缀

    2.涉及一张以上表,别落下连接条件,否则就会产生笛卡尔积现象

    3.表别名(目的:简练表名),一旦有了表别名就需要使用,此时表名再使用就产生错误,只能使用表别名。

    2、查询入职时间比其上级入职时间早的员工

    如果select *的话会出现显示两张表的全部信息情况,应该选择select e.*

    3、标准连接(sql99写法)

    了解

    --自然连接:nature join两张表同名同类型的字段进行等值连接(必须有两边的列同名且同类型)

    --using 子句:select ename,sal,dname from emp join dept using(deptno)

    重要

    --join on子句

    --外部连接

    -左(外)连接 left 【outer】 join  以关键字左边的表为主表,主表中记录都要显示,若没有匹配的记录另一张表对应的位置出null匹配。(不要忘记 on后面的内容)

    查询所有员工的姓名,工资,部门名称,没有部门的也要显示

    select ename,sal,dname

    from emp e left join dept d

    on e.deptno=d.deptno

    -右(外)连接 right【outer】 join

    -全(外)连接 full 【outer】 join 目前mysql不支持,oracle支持。 左右两端的表都为主表(没有部门的员工,没有员工的部门都显示)

    多表连接注意事项

    总结

    1、多表连接写法

    2、笛卡尔积

    3、连接条件

    4、sql 99标准写法 join on 子句

    5、外部连接(left join,right join,full join(目前mysql不支持))

    相关文章

      网友评论

          本文标题:2019-03-25多表查询

          本文链接:https://www.haomeiwen.com/subject/xutbvqtx.html