內(nèi)連接:
假設(shè)A和B表進(jìn)行連接梦鉴,使用內(nèi)連接的話,凡是A表和B表能夠匹配的上的記錄查詢出來(lái)揭保,這就是內(nèi)連接肥橙。AB兩張表沒(méi)有主副之分,兩張表是平等的秸侣。
外連接:
假設(shè)A和B表進(jìn)行連接存筏,使用外連接的話,AB兩張表中有一張表是主表味榛,一張表是副表椭坚,主要查詢主表中的數(shù)據(jù),捎帶著查詢副表搏色,當(dāng)副表中的數(shù)據(jù)沒(méi)有和主表中的數(shù)據(jù)匹配上善茎,副表自動(dòng)模擬出NULL與之匹配。
外連接的分類频轿?
左外連接(左連接):表示左邊的這張表是主表巾表。
右外連接(右連接):表示右邊的這張表是主表汁掠。
左連接有右連接的寫法,右連接也有對(duì)應(yīng)的左連接的寫法集币。
eg:找出每個(gè)員工的上級(jí)領(lǐng)導(dǎo)考阱?
select e.empno,e.ename,e.mgr,m.ename from emp e left join emp m on e.mgr=m.empno;
找出哪個(gè)部門沒(méi)有員工?
select e.*,d.* from emp e right join dept d on e.deptno=d.deptno where e.empno is null;
數(shù)據(jù)庫(kù)設(shè)計(jì)三范式(重點(diǎn)內(nèi)容鞠苟,面試常問(wèn))
什么是設(shè)計(jì)范式乞榨?
設(shè)計(jì)表的依據(jù)。按照這個(gè)三范式設(shè)計(jì)的表不會(huì)出現(xiàn)數(shù)據(jù)冗余当娱。
三范式都是哪些吃既?
第一范式:任何一張表都應(yīng)該有主鍵,并且每一個(gè)字段原子性不可再分跨细。
第二范式:建立在第一范式的基礎(chǔ)之上鹦倚,所有非主鍵字段完全依賴主鍵,不能產(chǎn)生部分依賴冀惭。
多對(duì)多震叙?三張表,關(guān)系表散休,兩外鍵
t_student 學(xué)生表
sno(pk) sname
1 張三
2 李四
3 王五
t_teacher 講師表
tno(pk) tname
1 王老師
2 李老師
3 杜老師
t_student_teacher_relation 學(xué)生講師關(guān)系表
id(pk) sno(fk) tno(fk)
1 1 3
2 1 1
3 2 2
第三范式:建立再第二范式基礎(chǔ)之上媒楼,所有非主鍵字段直接依賴主鍵,不能產(chǎn)生傳遞依賴戚丸。
一對(duì)多划址??jī)蓮埍恚嗟谋砑油怄I
班級(jí)t_class
cno(pk) cname
1 班級(jí)1
2 班級(jí)2
學(xué)生t_student
sno(pk) sname classno(fk)
101 張1 1
102 張2 1
103 張3 2
104 張4 2
提醒:在實(shí)際的開(kāi)發(fā)中限府,以滿足客戶的需求為主夺颤,有的時(shí)候會(huì)拿冗余換執(zhí)行速度。
一對(duì)一怎么設(shè)計(jì)胁勺?
一對(duì)一設(shè)計(jì)有兩種方案:主鍵共享
一對(duì)一設(shè)計(jì)有兩種方案:外鍵唯一