【MySQL】创建外键的方法

首先谈一下外键的作用,一是节省空间,二是约束含外键的列中的值,含外键列的值必须为参考列中的id在这里插入图片描述
创建数据表时,创建外键方法

create table userinfo(
   uid bigint auto_increment primary key,           # 创建列uid ,bigint类型,自增,主键
   name varchar(32),                                           #  创建列name  varchar类型,32位
   department_id int,                                         
   xx_id int,
   constraint fk_user_depar foreign key (department_id) references department(id)   #创建外键
  )engine=innodb default charset=utf8;
  
  create table department(
   id bigint auto_increment primary key,
   title char(15)
  )engine=innodb default charset=utf8;

创建外键语法如下

constraint fk_user_depar foreign key (department_id) references department(id)
constraint 外键名字  foreign key (添加外键的列名)references 参考表的名称(参考表中的列名)

外键也可以是两列,但是前提条件是,被参考的表的两列均是主键

CREATE TABLE t5 (
       nid int(11) NOT NULL AUTO_INCREMENT,
       pid int(11) not NULL,
       num int(11),
       primary key(nid,pid)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
create table t6(
      id int auto_increment primary key,
      name char(10),
      id1 int,
      id2 int,
      CONSTRAINT fk_t5_t6 foreign key (id1,id2) REFERENCES t5(nid,pid)
     )engine=innodb default charset=utf8;

注意上述创建主键时有两种形式,一种是在创建列的时候,同时创建主键,另一种是先创建列,再后面再创建主键,如以上t5,t6表创建主键的两种方式

在一张数据表中只有一个主键,但主键可以由多列组成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug 挖掘机

支持洋子

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值