數據庫 表與表 的三種基本關系

表和表之間,一般就是三種關系:一對一,一對多,多對多

1、一對一:數據庫表中的數據結構,我們用人與車一 一對應的方式來描述一對一的數據表結構,type是區分這條數據是人還是車,master對應是的主人(車的主人是哪個id,car對應的是那輛車的id)

SQL代碼中,我們先創建這一張表: ? ?注--if not exists的意思是 ?如果不存在***就如何如何,在這里就表示,如果這個數據庫中沒有這個表,就創建本表

CREATE TABLE IF NOT EXISTS person (

? ? id int ?primary key autoincrement,

? ? name varchar(50),

? ? type int,

? ? master int,

? ? car int

);

插入數據:

? ? insert into person values(1,"小馬",1,0,1);

????insert into person values(2,"小虎",1,0,2);

????insert into person values(3,"小龍",1,0,3);

????insert into person values(4,"小牛",1,0,4);

????insert into person values(5,"寶馬5系",1,1,0);

????insert into person values(6,"奔馳E系",1,2,0);

????insert into person values(7,"漢蘭達",1,3,0);

????insert into person values(8,"路虎攬勝",1,4,0);

對照表我們可以發現:小馬 -- 寶馬5系

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 小虎 -- ?奔馳E系

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 小龍 -- 漢蘭達

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 小牛 -- 路虎攬勝

通常呢為了查詢方便,會建倆張表,但是實際項目中為了節省空間,一般都是一張表,重點來了 !!! 這時我們可以建視圖,想當年我學數據庫課程的時候,死都理解不了視圖和存儲是干什么,現在用這個例子可以很清晰的說明什么是視圖,首先在邏輯上我們可以把上述表重中的數據分為倆組,一組是以人為主的,一組是以車為主的,創建這么兩類視圖(虛表)

? ? ? ? 有個小概念我們需要普及一下,視圖是一種邏輯概念,它并不獨立占用物理內存,是依附在數據表上的,對視圖進行修改時,相應的表數據也會被改動

創建視圖:create view masterView?as(select * from person where type = '1' ); ?這是人的視圖

????????????????????create view carView ?as(select * from person where type = '0' ); 這是車的視圖

要求:查出哪些人擁有的車是什么?

執行查詢:

? ? 1、原始方法:select masterView.name AS ?car,carView.name AS master FROM masterView,carView ?where masterView.id =carView.master ?ANDcarView.id =masterView.car

? ? 2、連接方法:select mansterView.name AS car,carView.name AS master FROM masterView INTER JOIN ?carView ON ?masterView.id =carView.master ?ANDcarView.id =masterView.car

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容