SQL主鍵 外來鍵 索引

2021-10-09 13:34:06 字數 1749 閱讀 3406

主鍵:唯一區分出不同的記錄的字段。

常見可作為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被設為主鍵,資料庫自動會建立索...