mysql 设置外键约束(foreign key)

   建立外键约束可以采用列级约束语法和表级约束语法,如果仅仅对单独的一个数据列建立外键约束,则使用列级约束语法即可;如果需要对多个列组合创建外键约束,或者需要为外键约束指定名字则必须使用表级约束语法。

       使用列级约束语法建立外键约束直接使用references关键字,references指定该列参照的哪个主表,以及参照主表的哪一列。如下SQL语句所示:

create table teacher_table

(

teacher_id int auto_increment,

teacher_name varchar(255),

primary key(teacher_id)

);

 

 

create table student_table

(

student_id int auto_increment primary key,

student_name varchar(255),

java_teacher int references teacher_table(teacher_id)

);

   虽然MySQL支持使用列级约束的语法来建立外键约束,但这种列级的约束语法建立的外键约束不会生效,MySQL提供这种列级约束语法仅仅是和标准SQL保持良好的兼容性。因此,如果需要MySQL中的外键约束生效,应使用表级约束语法。

create table teacher_table1

(

teacher_id int auto_increment,

teacher_name varchar(255),

primary key(teacher_id)

);

 

create table student_table1

(

student_id int auto_increment primary key,

student_name varchar(255),

java_teacher int,

foreign key(java_teacher) references teacher_table1(teacher_id)

或者使用下面的语句建立外键约束,并指定外键约束名student_teacher_fk

constraint student_teacher_fk foreign key(java_teacher) references teacher_table1(teacher_id)

);

    如果使用表级约束语法,则可以需要使用foreign key来指定本表的外键列,并使用references来指定参照哪个主表,以及参照到主表的哪个列。使用表级约束语法可以使用外键的约束指定约束名,如果创建外键约束没有指定约束名,则MySQL会为该外键约束命名为table_name_ibfk_n,其中table_name是从表的表名,而n是从1开始的整数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值