mysql里面怎样添加外键?

mysql里面怎样添加外键?,第1张

包含外健的表,要先建把外健作为主贱的表,然后才能建你那个包含外健的标。

create table A( aaa int primary key,...)

create table B(

bbb int primary key,

aaa int,

... ...

foreign key (aaa) references A (aaa) on delete ... on update ...

)

要注意 B中的aaa类型 和 名字要和A中的完全一样,还有 那些空格你最好有,虽然有的时候没关系,但是有时候就有问题。

1.外键的作用,主要有两个:

一个是让数据库自己通过外键来保证数据的完整性和一致性

一个就是能够增加er图的可读性

2.外键的配置

1)先创建一个主表,代码如下:

#创建表student,并添加各种约束

create

table

student

(

id

int

primary

key

,

#主键约束

name

varchar(20)

,

#唯一约束

age

int

not

null,

#非空约束

sex

varchar(2)

,

address

varchar(20)

default

'重庆'

#默认约束

)

再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:

#创建分数表

create

table

score

(

id

int

primary

key

,

sid

int

,

china

int

,

history

int,

english

int,

constraint

fk_sid

foreign

key(sid)

references

student(id)

#通过外键创建链接

)

创建外键的方法有很多,其中最常见创建外键的格式是:constraint

fk_***

foreign

key(**)

references

链接的外表

删除外键:

alter

table

drop

foreign

key

'外键名'.

注意:

只有在定义外键时,用constraint

外键名

foreign

key

....

方便进行外键的删除

外键约束对父表的含义:

在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下

. cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

On delete cascade从mysql3.23.50开始可用on update cascade从mysql4.0.8开始可用

. set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null

要注意子表的外键列不能为not null

On delete set null从mysql3.23.50开始可用on update set null从mysql4.0.8开始可用

. No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete *** 作

这个是ANSI SQL-92标准,从mysql4.0.8开始支持

. Restrict方式

同no action, 都是立即检查外键约束

不知道这文章对你有没有帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11830913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存