MySQL學習 資料庫級別的外來鍵

2021-10-14 13:43:36 字數 3546 閱讀 6610

1.1 外來鍵(了解):

方式一:建表同時建外鍵 (物理)

-- 物理設定外來鍵的過程:

create

table

ifnot

exists

`grade`

(`grade_id`

int(4)

notnull

auto_increment

comment

'年級id'

,`grade_name`

varchar(10

)not

null

default

'無'comment

'年級名稱'

,primary

key(

`grade_id`))

engine

=innodb

default

charset

=utf8;

create

table

`student`

(`id`

intnot

null

auto_increment

comment

'學號'

,`name`

varchar(20

)not

null

default

'匿名'

comment

'暱稱'

,`password`

varchar(20

)not

null

default

'123456'

comment

'密碼'

,`***`

varchar(2

)not

null

default

'男'comment

'性別'

,`birthday`

datetime

default

null

comment

'出生日期'

,`address`

varchar

(100

)default

null

comment

'家庭位址'

,`email`

varchar(20

)default

null

comment

'郵箱'

,`grade_id`

int(4)

notnull

comment

'學生所在年級'

,primary

key(

`id`),

-- 物理設定外來鍵的過程

key`fk_grade_id`

(`grade_id`),

-- 定義外來鍵

-- 給外來鍵新增約束(引用)

constraint

`fk_grade_id`

foreign

key(

`grade_id`

)references

`grade`

(`grade_id`))

engine

=innodb

default

charset

=utf8;

方式二:建立表的時候沒有任何約束,在建立完錶後建立外來鍵 , 物理設定外來鍵的過程(物理)

create

table

ifnot

exists

`grade`

(`grade_id`

int(4)

notnull

auto_increment

comment

'年級id'

,`grade_name`

varchar(10

)not

null

default

'無'comment

'年級名稱'

,primary

key(

`grade_id`))

engine

=innodb

default

charset

=utf8;

create

table

`student`

(`id`

intnot

null

auto_increment

comment

'學號'

,`name`

varchar(20

)not

null

default

'匿名'

comment

'暱稱'

,`password`

varchar(20

)not

null

default

'123456'

comment

'密碼'

,`***`

varchar(2

)not

null

default

'男'comment

'性別'

,`birthday`

datetime

default

null

comment

'出生日期'

,`address`

varchar

(100

)default

null

comment

'家庭位址'

,`email`

varchar(20

)default

null

comment

'郵箱'

,`grade_id`

int(4)

notnull

comment

'學生所在年級'

,primary

key(

`id`))

engine

=innodb

default

charset

=utf8;

-- 在表外實時新增外來鍵(方便,推薦)

-- 物理設定外來鍵的過程

/*alter table `表名`

add constraint `約束名` foreign key(`作為外來鍵的列`) references `主表`(`約束列(字段)`)

*/alter

table

`student`

addconstraint

`fk_grade_id`

foreign

key(

`grade_id`

)references

`grade`

(`grade_id`

);

2021.1.12

如果覺得對你有幫助那麼歡迎你隨時來回顧!

只為記錄本人學習歷程。

MySQL 資料庫外來鍵

如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主表,表b稱為從表。外來鍵是用來實現參照完整性的,不同的外來鍵約束方式將可以使兩張表緊密的結合起來,特別是修改或者刪除的級聯操作將使得日常的維護工作更加輕鬆。這裡以mysql為例,總結一下3種外來鍵約束方式的區別和聯絡。這裡以使用者...

MySQL資料庫外來鍵

設定外來鍵 外來鍵及功能 成績表 參照表也叫子表 中的學號來自學生表 被參照表也叫父表 成績表中的課程號來自課程表 當要刪除或更新被參照表中的給字段的值時,參照錶該字段的值如何改變。在on delete on update設定參照動作 restrict 限制 cascade 級聯 set null ...

Database學習 mysql 資料庫 外來鍵

外來鍵約束子表的含義 如果在父表中趙達不到候選鍵,則不允許在子表上進行insert update 外來鍵預約對父表的含義 在父表上進行update delete以更新或刪除子表中有一條或多條對應匹配的候選鍵時,父表的行為取決於,在定義子表的外來鍵時指定的on update on delete 字句....