表一
create table ta1(
id int not null primary key auto_increment,
pid int not null,
uname varchar(20)
)engine =innodb default charset=utf8
由於這種寫法無法再表二無法進行外來鍵的關聯 顧寫成下面的格式
表一的變形
create table t1( -- 使用時注意改名
id int not null auto_increment,
pid int not null,
uname varchar(20),
primary key(id,pid)
)engine =innodb default charset=utf8
表二
create table table2(
id int primary key auto_increment,
name char(20),
id1 int,
id2 int,
constraint fk_1 foreign key(id1,id2) references t1(id,pid)
)
注意1:
constraint (即 fk_1)後面的名字必須是唯一的,如果重複將會無法建立出表,所以經常用兩張表的名來命名這個
注意:
[err] 1005 - can』t create table 『teacher.tq2』 (errno: 150)
cause:(1)遇到這個錯誤請給你定義的外來鍵換唯一無重複的名字;
(2)或者是這個外來鍵已經和表的主鍵關聯了;
(3)另外還有一種可能就是關聯欄位在引用表中沒有建立索引,你必須在引用表中為關聯字段建立乙個索引。
查詢參考**:
mysql 主鍵 外來鍵
1 候選鍵 關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。比如人的自然屬性 身高,體重,年齡,指紋樣式.2 主鍵 當有多個候選碼時,可以選定乙個作為主碼,選定的候選碼稱主鍵。主鍵是能確定一條記錄的唯一標識 比如上面例子中的指...
mysql主鍵 外來鍵
主鍵是能確定一條記錄的唯一標識,主鍵字段必須唯一,必須非空,乙個表中只能有乙個主鍵,主鍵可以包含乙個或多個字段。打個比方,一條記錄包括身份正號,姓名,年齡,學校,國籍,性別等。身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外...
mysql的主鍵 外來鍵約束 MySQL 主鍵外來鍵
笛卡兒積 多表查詢 多個表變成乙個表 完整性約束條件 primary key 標識該屬性為該錶的主鍵,可以唯一的標識對應的元組 foreign key 標識該屬性為該錶的外來鍵,是與之聯絡的某錶的主鍵 not null 標識該屬性不能為空 unique 標識該屬性的值是唯一的 auto increm...