表和表之間,一般就是三種關系:一對一,一對多,多對多
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