復(fù)合主鍵就是指你表的主鍵含有一個(gè)以上的字段組成 。 例如拆宛; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段組合起來就是你test表的復(fù)合主鍵 (若其一為單索引字段時(shí)嗓奢,左邊的id才會(huì)有索引) 它的出現(xiàn)是因?yàn)槟愕膎ame字段可能會(huì)出現(xiàn)重名,所以要加上ID字段這樣就可以保證你記錄的唯一性 一般情況下浑厚,主鍵的字段長度和字段數(shù)目要越少越好
聯(lián)合主鍵根盒,顧名思義就是多個(gè)主鍵聯(lián)合形成一個(gè)主鍵組合物蝙,體現(xiàn)在聯(lián)合炎滞。 (主鍵原則上是唯一的,別被唯一值所困擾诬乞。) 索引可以極大的提高數(shù)據(jù)的查詢速度册赛,但是會(huì)降低插入、刪除震嫉、更新表的速度,因?yàn)樵趫?zhí)行這些寫操作時(shí)票堵,還要操作索引文件。 簡單的例子 主鍵A跟主鍵B組成聯(lián)合主鍵 主鍵A跟主鍵B的數(shù)據(jù)可以完全相同(困擾吧换衬,沒關(guān)系)证芭,聯(lián)合就在于主鍵A跟主鍵B形成的聯(lián)合主鍵是唯一的。
聯(lián)合主鍵體現(xiàn)在多個(gè)表上废士,復(fù)合主鍵體現(xiàn)在一個(gè)表中的多個(gè)字段
學(xué)生表:student
create table student(
id mediumint auto_increment comment '主鍵id',
name varchar(30) comment '姓名',
age smallint comment '年齡',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '學(xué)生'
課程表:course
create table course(
id mediumint auto_increment comment '主鍵id',
name varchar(30) comment '課程名稱',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '課程'
學(xué)生課程表:stu_cour
create table IF NOT EXISTS stu_cour(
id mediumint auto_increment comment '主鍵id',
stu_id mediumint comment '學(xué)生表id',
cour_id mediumint comment '課程表id',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '學(xué)生課程表'
此時(shí)stu_cour中id就表示聯(lián)合主鍵,通過id可以獲取學(xué)生和課程的一條記錄
復(fù)合主鍵:
create table student(
name varchar(30) comment '姓名',
age smallint comment '年齡',
sex enum('男','女') comment '性別',
primary key(name,age)
)
engine = myisam,
charset = utf8,
comment = '學(xué)生'