主鍵:唯一區分出不同的記錄的字段。
常見可作為id欄位的型別:
自增整數型別
全域性唯一guid型別(guid演算法通過網絡卡mac位址、時間戳和隨機數生成的字串)
外來鍵:實現一對多、多對多和一對一的關係。
可以通過資料庫來約束,也可以不設定約束,僅靠應用程式的邏輯來保證。
一對多:
學生表:students
idname
other columns...
1小明
...2
小紅...
班級表:classes
idname
other columns...1一班
...2
二班...
idclass_id
name
other columns...11
小明...21
小紅... 32
小白...
定義外來鍵約束:
alter table students
add constraint fk_class_id foreign key (class_id) references classes (id);
fk_class_id : 外來鍵約束名稱
foreign key (class_id) :指定class_id作為外來鍵
refernces classes (id) :指定將外來鍵關聯到classes表的主鍵
外來鍵約束的作用:保證關係型資料庫無法插入無效的資料。
刪除乙個外來鍵約束:
alter table students
drop foreign key fk_class_id;
注意:刪除外來鍵約束並沒有刪除外來鍵這一列。刪除列:drop column ...實現。
多對多:通過兩個一對多關係實現,即通過乙個中間表,關聯兩個一對多關係。
老師表:teachers
idname
1張老師
2王老師
3***
4趙老師
班級表:classes
idname 1一班
2二班中間表:teacher_class (關聯兩個一對多關係)
idteacher_id
class_id 11
1212
3214
2253
1642
一對一:乙個表的記錄對應到另乙個表的唯一記錄。
索引:關係型資料庫中對某一列或多列值進行預排序的資料結構。
學生表:students
idclass_id
name
gender
score
1 1
小明 m
90 2
1 小紅
f 95
3 1
小軍 m
88
如果經常操作score列進行查詢,就可以對score列建立索引:
alter table students
add index idx_score (score);
建立乙個名稱為idx_score,使用列score的索引。
優點:提高查詢效率。
缺點:插入、更新、刪除記錄時,需要同時修改索引,因此插入、更新、刪除記錄速度變慢。
對於主鍵,關係型資料庫會自動對其建立主鍵建立索引。
索引 主鍵 外來鍵
參 索引的優點 加快查詢表記錄的速度。索引的缺點 會減慢寫的速度 如 insert update 占用物理儲存空間。2 簡述普通索引與主鍵的約束規則。參 1 index普通索引 乙個表中可以有多個index欄位 欄位的值允許有重複,且可以賦null值 經常把做查詢條件的字段設定為index欄位 in...
主鍵 外來鍵 索引
1 主鍵 外來鍵 索引 主鍵外來鍵 索引定義 唯一標識一條記錄,不能重複,不能為空 表的外來鍵是另一張表的主鍵,外來鍵可以重複,也可以為空值 索引沒有重複,可以有乙個空值 作用用來保證資料的完整性 用來和其他表建立聯絡 提高資料查詢的速度 個數主鍵只能有乙個 乙個表可以有多個外來鍵 乙個表可以有多個...
主鍵,外來鍵和索引
主鍵和索引的區別 主鍵是索引,但索引不一定是主鍵。主鍵具有唯一性,而只有唯一性索引才具有唯一性 主鍵的值不能為空,不能重複。索引可以在程式中動態建立刪除。也可以是任何有序的字段.如果在乙個表中,列a b c 被設為主鍵的情況下,當需要將a,b,c 設為索引時,a,b,c被設為主鍵,資料庫自動會建立索...