zoukankan      html  css  js  c++  java
  • ORACLE1.9一对一与左关联

    一对一

    身份证表

    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('123456789012345688','小方','珠海','彝族');

    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;

  • 相关阅读:
    dblink密码
    Select .. into .. 和 OCIBindByName
    在网上东逛西逛看到这篇文章,鼻子有点酸。
    奇怪的LINUX系统时间问题
    综合练习:简单日历
    15位到18位身份证的升级计算
    进入面向对象的世界:类就是代码,对象是内存。
    关于数据类型转换的补充知识
    数学函数
    抽象类和密封类
  • 原文地址:https://www.cnblogs.com/wyj1212/p/8547990.html
Copyright © 2011-2022 走看看