表結構1
table: t1
create
table: create
table
`t1` (
`a`
int(11) not
null
default'0
',`b`
int(11) not
null
default'0
',`c`
int(11) not
null
default'0
',`name`
varchar(20) default
null
, `createtime`
timestamp
notnull
default
current_timestamp,
primary
key(`a`,`b`,`c`)
) engine
=innodb default charset=utf8
表結構2
table: t2
create
table: create
table
`t2` (
`id`
int(11) not
null
, `d1`
int(11) default
null
, `d2`
int(11) default
null
, `d3`
int(11) default
null
, `name`
varchar(20) default
null
, `createtime`
timestamp
notnull
default
current_timestamp,
primary
key(`id`)
) engine
=innodb default charset=utf8
constraint 外建名 foreign key(屬性1.1,屬性1.2,屬性1.3,...,屬性1.n) references t1(屬性2.1,屬性2.2,屬性2.3,...屬性2.n)
屬性1和屬性2的數目必須一致,並且屬性2是來自於主表的主鍵字段,並且如果主表是復合主鍵則屬性2欄位的取值是有限制的
1.
altertable t2 add
constraint fk foreign
key(d1,d2,d3) references t1(a,b,c);
2.
altertable t2 add
constraint fk foreign
key(d1,d2) references t1(a,b);
3.
altertable t2 add
constraint fk foreign
key(d1) references t1(a);
foreign key(d1,d2,d3)中(d1,d2,d3)的順序無所謂
references t1(a,b,c)必需按照a,b,c的順序,必須先有a,才有b才有c
(b,c),(c),(a,c,b),(b,a,c)等都是錯誤的
超鍵 候選鍵 主鍵 外來鍵 聯合主鍵 復合主鍵
首先看看各種鍵的定義 超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 只要有乙個鍵唯一,再隨便組其他的鍵,合起來叫主鍵 候選鍵 candidatekey 不含有多餘屬性的超鍵稱為候選鍵 最小的超鍵,id,身份證號 主鍵 primary key 關係型資料庫中的一條記錄中有...
MySQL 建立主鍵,外來鍵和復合主鍵的語句
1.建立主鍵語法 alter table table name add constraint pk name primary key 列名 2.建立外來鍵語法 alter table news info 子表名 add constraint fk news info news type 約束名 fo...
MySQL如何建立主鍵,外來鍵和復合主鍵
1.主鍵語法 建立時 create table sc studentno int,courseid int,score int,primary key studentno 修改時 alter table table name add constraint pk name primary key 列名...