Oracle 一對一與左關聯

2022-08-30 04:18:13 字數 1690 閱讀 8903

-- 一對一

-- 身份證表

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

13 一對一關聯

需求 查詢所有訂單資訊,關聯查詢下單使用者資訊。注意 因為乙個訂單資訊只會是乙個人下的訂單,所以從查詢訂單資訊出發關聯查詢使用者資訊為一對一查詢。如果從使用者資訊出發查詢使用者下的訂單資訊則為一對多查詢,因為乙個使用者可以下多個訂單。newsdata one to one tag tag one t...

hibernate 關聯關係 一對一 主鍵關聯

一對一關聯關係的使用 一對一關係在實際生活中是比較常見的,例如學生與學生證的關係,通過學生證可以找到學生。一對一關係在hibernate中的實現有兩種方式,分別是主鍵關聯和外來鍵關聯。以主鍵關聯 主鍵關聯的重點是,關聯的兩個實體共享乙個主鍵值。例如,student與card是一對一關係,它們資料庫中...

hibernate一對一關聯對映

一對一主鍵關聯對映 單向關聯person idcard 讓兩個實體物件的id保持相同,這樣可以避免多餘的字段被建立 具體對映 idcard 一對一主鍵關聯對映 雙向關聯person idcard 需要在idcard對映檔案中加入標籤指向person,指示hibernate如何載入person 預設根...