一、E-R關(guān)系模型
1、Entry 實(shí)體
2、Relationship 關(guān)系
3、一個(gè)實(shí)體轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的一個(gè)表
4、關(guān)系描述兩個(gè)實(shí)體之間的對(duì)應(yīng)規(guī)則:一對(duì)一,一對(duì)多,多對(duì)多
二、數(shù)據(jù)庫(kù)的3范式
? ? ? ? ? ? 1NF :列不可拆分
? ? ? ? ? ? 2NF:唯一標(biāo)識(shí)
? ? ? ? ? ? 3NF:引用主鍵
? ? ? ? ? ? 說(shuō)明:后一個(gè)范式都是在前一個(gè)范式的基礎(chǔ)上建立的。
三、數(shù)據(jù)完整性
? ? 1、數(shù)據(jù)字段的類型:int,decimal,char,varchar,text,datetime,bit
? ? ????eg:decimal(5,2) 一共包含五位數(shù),小數(shù)占兩位
????? ? char和varchar的區(qū)別:char字符數(shù)固定,不夠會(huì)自動(dòng)補(bǔ)齊;varchar字符可變
? ? 2、數(shù)據(jù)字段的約束;primary key,not null,unique,default,foreign key

五、命令腳本操作
eg:
? ? select gender,count(*) from Student group by gender having gender=1;
? ? select * from Student where gender=1 and isDelete=0 order by desc;
執(zhí)行順序

六、高級(jí)
1、關(guān)系
? ? ? ? foreign key(stuid) references Student(id),建立外鍵
? ? ? ? 外鍵級(jí)聯(lián)操作
? ? ? ? restrict(限制):默認(rèn)值,拋異常
? ? ? ? cascade(級(jí)聯(lián)):如果主表的記錄刪除,則從表中的相關(guān)聯(lián)的記錄都被刪掉
? ? ? ? set null:將外鍵設(shè)置為空
? ? ? ? no action:啥都不干
2、連接查詢
3、自關(guān)聯(lián)
? ? ? ? create table areas(
? ? ? ? aid int primary key,
? ? ? ? atitle varchar(20),
? ? ? ? pid int,
? ? ? ? foreign key(pid) references areas(id)
????);
4、視圖
????????視圖的本質(zhì)就是對(duì)查詢的一個(gè)封裝,用途就是查詢
? ? ? ? create view stuscore as? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select students.*,scores.score from scores inner join students on? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scores.stuid = students.id
5、事務(wù)
? ? ? ? 1>當(dāng)一個(gè)業(yè)務(wù)邏輯需要多個(gè)SQL完成時(shí),如果其中的某條SQL語(yǔ)句出錯(cuò),則希望整個(gè)操作都退回,例如:轉(zhuǎn)賬問(wèn)題;
? ? ? ? 2>使用事務(wù)可以完成退回功能,保證業(yè)務(wù)邏輯的正確性
? ? ? ? 3>四大特性(ASID)原子性,隔離性,一致性,持久性
? ? ? ? 4>要求:表的類型必須是innodb或者bdb類型
? ? ? ? 查看表的創(chuàng)建語(yǔ)句:show create table students;
? ? ? ? 修改表的類型:alter table “表名” engine = innodb;
? ? ? ? 事務(wù)語(yǔ)句:
? ? ? ? 開(kāi)啟 begin;提交 commit;回滾 rollback;
6、索引
? ? ? ? show index from tablename;
? ? ? ? create index indexname on mytable(username(length))
? ? ? ? drop index [indexname] on table;