多表設(shè)計
一對一
一張表的一條記錄一定只能與另外一張表的一條記錄進行對應拄养,反之亦然离斩。
有時候,為了業(yè)務,或者避免一張表中數(shù)據(jù)量過大跛梗,過復雜寻馏,在開發(fā)中會進行一對一方式來設(shè)計表。
一對多(1方建主表(id為主鍵字段), 多方建外鍵字段)
一個實體的某個數(shù)據(jù)與另外一個實體的多個數(shù)據(jù)有關(guān)聯(lián)關(guān)系茄袖, 一對多的關(guān)系在設(shè)計的時候操软,需要設(shè)計表的外鍵。
班級表和學生表設(shè)計
部門表和員工表設(shè)計
創(chuàng)建數(shù)據(jù)庫表
constraint 約束
foreign key就是表與表之間的某種約定的關(guān)系宪祥,由于這種關(guān)系的存在聂薪,能夠讓表與表之間的數(shù)據(jù),更加的完整蝗羊,關(guān)連性更強藏澳。
foreign key語句的式例:FOREIGN KEY(Sno) REFERENCES Student(Sno)
注意:表的外鍵必須是另一張表的主鍵
補一個外鍵的注意(默認是約束): 刪除主鍵信息時,當該主鍵字段值在外鍵表中存在時耀找,該記錄是不能刪除的翔悠。---要把外鍵表是的相關(guān)信息刪除之后,才能刪除野芒。
子查詢:嵌套在其他查詢中的查詢蓄愁。
多對多( 3個表= 2個實體表 + 1個關(guān)系表 )
一個實體的數(shù)據(jù)對應另外一個實體的多個數(shù)據(jù),另外實體的數(shù)據(jù)也同樣對應當前實體的多個數(shù)據(jù)狞悲。
一個學生可以有多個老師撮抓,一個老師可以教多個學生
解決方案:創(chuàng)建一個中間表,專門用來維護多表之間的對應關(guān)系摇锋,通常是能夠唯一標識出數(shù)據(jù)的字段(主鍵)
聯(lián)表查詢
分類:內(nèi)連接丹拯、外連接、交叉連接
初始定義表結(jié)構(gòu)
交叉查詢
交叉查詢荸恕,又叫笛卡爾積查詢乖酬,會將左表和右表的信息,做一個乘積將所有信息查詢出來融求,會產(chǎn)生臨時表咬像,比較占用內(nèi)存,生成的記錄數(shù)=表1 X表2
?內(nèi)連接查詢
內(nèi)連接生宛,inner join on 查詢兩張表县昂,設(shè)定條件,將兩張表中對應的數(shù)據(jù)查詢出來
不會產(chǎn)生笛卡爾積茅糜,不會產(chǎn)生臨時表七芭,性能高
左外連接
左外連接? left join on 設(shè)定條件,將兩張表對應的數(shù)據(jù)查詢出來蔑赘,同時將左表自己沒有關(guān)聯(lián)的數(shù)據(jù)也查詢出來
注意:join前面是左狸驳,后面是右
右外連接
右外連接 right join? on 設(shè)定條件预明,將兩張表對應的數(shù)據(jù)查詢出來,同時將右表自己沒有關(guān)聯(lián)的所有數(shù)據(jù)查詢出來