MySQL建立資料表並建立主外來鍵關係

2022-07-04 03:48:11 字數 2691 閱讀 6404

為mysql資料表建立主外來鍵需要注意以下幾點:

需要建立主外來鍵關係的兩個表的儲存引擎必須是innodb。

外來鍵列和參照列必須具有相似的資料型別,即可以隱式轉換的資料型別。

外來鍵列和參照列必須建立索引,如果外來鍵列不存在索引,mysql將自動建立索引。

一、sql語句建立資料表並設定主外來鍵關係

create

table

demo.chinesecharinfo

( id

intnot

null

auto_increment,

hanzi

varchar(10) not

null

,

primary

key(id)

)engine

=innodb auto_increment=

1default charset=utf8 collate=

utf8_general_ci;

create

table

demo.chinesepinyininfo

( id

intnot

null

auto_increment,

charid

intnull

, pinyin

varchar(10) null

, tone

tinyint unsigned null

,

primary

key(id),

--方式一:不指定外來鍵名稱,資料庫自動生成

foreign

key (charid) references chinesecharinfo(id) on

delete

cascade

onupdate

cascade

--方式二:指定外鍵名稱為(fk_name)

--constraint fk_name foreign key (charid) references chinesecharinfo(id) on delete cascade on update cascade

)engine

=innodb auto_increment=

1default charset=utf8 collate=utf8_general_ci;

二、當資料表已經存在時,就要使用下面的方法建立主外來鍵關係

--

為表(demo.chinesepinyininfo)中欄位(charid)新增外來鍵,並指定外來鍵名為(fk_name)

alter

table demo.chinesepinyininfo add

constraint fk_name foreign

key (charid) references

chinesecharinfo(id);

--為表(demo.chinesepinyininfo)中欄位(charid)新增外來鍵,不指定外鍵名,由資料庫自動生成外鍵名

alter

table demo.chinesepinyininfo add

foreign

key (charid) references chinesecharinfo(id);

三、刪除主外來鍵約束

--

通過修改列的屬性來刪除自增長,第乙個(id)為原列名,第二個(id)為新列名

alter

table demo.chinesepinyininfo change id id int

notnull;--

刪除表(demo.chinesepinyininfo)中的主鍵約束,如果主鍵列為自增列,則需要先刪除該列的自增長

alter

table demo.chinesepinyininfo drop

primary

key; --

刪除表(demo.chinesepinyininfo)中的名稱為(fk_name)的外來鍵

alter

table demo.chinesepinyininfo drop

foreign

key fk_name;

四、主外來鍵關係的約束

如果子表試圖建立乙個在主表中不存在的外鍵值,資料庫會拒絕任何insert或update操作。

如果主表試圖update或者delete任何子表中存在或匹配的外鍵值,最終動作取決於外來鍵約束定義中的on delete和on update選項。

on delete和on update都有下面四種動作。

cascade

:主表刪除或更新相應的資料行,則子表同時刪除或更新與主表相匹配的行,即級聯刪除、更新。

setnull

:主表刪除或更新相應的資料和,則子表同時將與主表相匹配的行的外來鍵列置為null。當外來鍵列被設定為not null時無效。

no action:資料庫拒絕刪除或更新主表。

restrict:資料庫拒絕刪除或更新主表。如果未指定on delete或on update的動作,則on delete或on update的預設動作就為restrict。

建立mysql資料表

mysql建表語句 create table if not exists db name.table name colunum1 date not null comment 列欄位說明 colunum2 int 11 not null comment 列欄位說明 colunum3 int 11 no...

MYSQL 建立資料表

rdbms即關聯式資料庫管理系統 relational database management system 的特點 rdbms術語 資料庫 一些關聯的表的集合 資料表 資料的矩陣。等同於簡單的電子 列 同一類資料 行 一組相關資料,稱為乙個記錄 冗餘 儲存量被資料,使系統速度更快。主鍵 唯一。外來...

MySQL 建立資料表

建立mysql資料表需要以下資訊 以下為建立mysql資料表的sql通用語法 create table table name column name column type 以下例子將在 runoob 資料庫中建立資料表runoob tbl runoob tbl runoob id int not ...