zoukankan      html  css  js  c++  java
  • Oracle一对一与左关联

    -- 一对一
    -- 身份证表
    CREATE TABLE idcard (
       idcard_num CHAR(18) PRIMARY KEY,
       name VARCHAR2(20),
       address VARCHAR2(100),
       minzu VARCHAR2(20)
    );
    
    -- 学生表
    CREATE TABLE stu(
       sno VARCHAR2(10) PRIMARY KEY,
       name VARCHAR2(20),
       idcard_num CHAR(18)
    );
    
    INSERT INTO idcard(idcard_num, name, address, minzu)
    VALUES
    ('123456789012345678','小芳','珠海南方','汉族');
    INSERT INTO idcard(idcard_num, name, address, minzu)
    VALUES
    ('123456789087654321','小军','珠海东方','傣族');
    
    commit
    
    select * from idcard
    
    insert into stu(sno, name, idcard_num)
    values
    ('001','小芳','123456789012345678');
    
    insert into stu(sno, name, idcard_num)
    values
    ('002','小军','123456789087654321');
    commit
    
    select * from idcard;
    select * from stu;
    update stu set name='大芳' where sno='001'
    commit
    
    select sno,t1.name,t1.idcard_num,address 
     from stu t1,idcard t2  
     where t1.idcard_num = t2.idcard_num 
     
     select * from stu
     -- 故意修改身份证号码,让它关联不上
     update stu set idcard_num='123456789012345677' 
     where idcard_num='123456789012345678'
     commit;
     -- 本质上是一个内关联
     -- 关联不上的数据,不显示
     select sno,t1.name,t1.idcard_num,address 
     from stu t1,idcard t2  
     where t1.idcard_num = t2.idcard_num 
     
     ----------
     -- 左关联left join
     -- (以左为主,左边关联不上的数据,继续显示)
      select sno,t1.name,t1.idcard_num,address 
     from stu t1,idcard t2  
     where t1.idcard_num = t2.idcard_num(+)
     --传统的写法
     
     select * from stu t1
     left join idcard t2
     on 
       t1.idcard_num = t2.idcard_num
     
     
  • 相关阅读:
    软件补丁问题(网络流24题)
    飞行员配对方案问题(网络流24题)
    [NOIp普及组2011]瑞士轮
    如何在Linux上安装QQ
    [洛谷P2420] 让我们异或吧
    高斯消元
    [SCOI2014]方伯伯的OJ
    [USACO1.3]虫洞
    KMP算法讲解
    [洛谷P1382] 楼房
  • 原文地址:https://www.cnblogs.com/yuchne/p/12920664.html
Copyright © 2011-2022 走看看