• 内外链接,显隐式链接详解


     
    --创建一个user信息表
    create table user_info(
    id number(2) primary key,
    name varchar2(10) unique
    );
    --插入数据
    insert into user_info(id,name)values(1,'曹操');
    insert into user_info(id,name)values(2,'刘备');
    insert into user_info(id,name)values(3,'周瑜');
    insert into user_info(id,name)values(4,'关羽');
    insert into user_info(id,name)values(5,'张飞');
    insert into user_info(id,name)values(6,'赵云');
     
    select * from user_info;
    --创建地址表
    create table address(
    id number(2) primary key,
    user_id number(2),
    info varchar2(16)
    );
    --添加数据
    insert into address(id,user_id,info)values(1,1,'河北唐山');
    insert into address(id,user_id,info)values(2,2,'北京海淀');
    insert into address(id,user_id,info)values(3,1,'河北邯郸');
    insert into address(id,user_id,info)values(4,2,'河北保定');
    insert into address(id,user_id,info)values(5,3,'河南郑州');
    insert into address(id,user_id,info)values(6,5,'山西太原');
    insert into address(id,user_id,info)values(7,4,'安徽合肥');
    insert into address(id,user_id,info)values(8,2,'山东青岛');
    insert into address(id,user_id,info)values(9,9,'山东青岛');
    select * from address;
     
    commit;
     
    --隐式左/右外链接,outer可以不写
    select u.*,a.* from user_info u left join address a on u.id=a.user_id;
    select u.*,a.* from user_info u right join address a on u.id=a.user_id order by a.id;
    --显式左/右外链接
    select u.*,a.* from user_info u left outer join address a on u.id = a.user_id;
    select u.*,a.* from user_info u right outer join address a on u.id = a.user_id;
     
     
    --隐式内连接,inner可以省略,将on改为where
    select u.*,a.* from user_info u,address a where u.id=a.user_id;
    --显式内连接,不分左右,不带left或right,只显示重合的数据,也就是取交集
    select u.*,a.* from user_info u inner join address a on u.id=a.user_id;
     
     
    --外链接的其他写法,+号和完整表位置相反
    select u.*,a.* from user_info u,address a where u.id=a.user_id(+);--左外链接,+号在=号右面
    select u.*,a.* from user_info u,address a where u.id(+)=a.user_id;--右外链接,+号在=号左面
     
    --全连接,显示两个表中所有信息
    select u.*,a.* from user_info u full join address a on u.id = a.user_id;
    --交叉连接,取笛卡尔积
    select u.*,a.* from user_info u cross join address a;
    select u.*,a.* from user_info u, address a;
  • 相关阅读:
    vue基础八(路由组件)
    vue基础(七),同源策略以及跨域,vuex
    如何将注释的代码折叠
    axios发请求的基本语法:
    vue基础(六)全局事件总线
    vue基础(五),对todos的操作
    Android仿IOS的AssistiveTouch的控件EasyTouch实现
    CentOS下配置HTTPS访问主机并绑定访问端口号
    Effective Java:对于所有对象都通用的方法
    物联网操作系统HelloX开发者入门指南
  • 原文地址:https://www.cnblogs.com/anzhi/p/7568428.html
Copyright © 2020-2023  润新知