在設(shè)計數(shù)據(jù)庫時,一般而言要求遵循數(shù)據(jù)庫三范式(3 NF)(面試題)
1锋边、設(shè)計的字段具有原子性(字段具有不可分割性)
2皱坛、每條記錄具有唯一性 主鍵
3、外鍵
分表的重要性(垂直分表)
多表關(guān)聯(lián)查詢五種連接方式
1豆巨、交叉查詢(笛卡兒積現(xiàn)象)
select *
from dept,emp
SELECT * from emp cross join dept;
2剩辟、內(nèi)連接
SELECT *
FROM emp,dept
WHERE emp.deptid = dept.id
SELECT e.*,t.name as deptname, t.describle deptdesc from emp as e inner join dept t on (e.deptid = t.id)
3、外連接(外連接分為左外連接和右外連接)
SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e LEFT JOIN dept d on(e.deptid=d.id);
SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e RIGHT OUTER JOIN dept d on(e.deptid=d.id);
4往扔、自然連接(真正開發(fā)用不到贩猎,作為一個知識點)、
SELECT * from emp natural join dept;
5萍膛、自連接
外鍵在約束自身的某個字段(如主鍵)
外鍵:constraint foreign key(新表的字段)references 主表(引用字段)
條件查詢:select
from
where
group by
having
order by
limit
子查詢:將一個查詢結(jié)果作為條件的一部分寫入到第二個sql中
select depthame from dept where deptid
表與表的關(guān)聯(lián)關(guān)系
OneToOne(1 : 1 )
ManyToOne (n : 1)
ManyToMany (n : n)
外鍵約束
創(chuàng)建表的同時創(chuàng)建外鍵:
create table tName(
id........,
deptid int,
[constraint fk_xx_xx]foreign key(deptid) references dept(id) on delete restrict(cascade) on update restrict
)
為已經(jīng)存在的表創(chuàng)建外鍵
alter table add tName [constrint fk_xx_xx] foreign
刪除外鍵
alter table drop 外鍵名稱吭服;