MySQL外键操作

MySQL外键操作

返回首页

外键就是将两张或多张表,关联起来,使其一张表的某行数据与另一张表的某行数据关联起来。

使表1的外键与表2的主键关联,这样就可以通过表1的外键,找到表2的主键所在行的数据。

create table userinfo(

  uid bigint auto_increment primary key,

  name varchar(255),

  department_id int,

  constraint fk_userinfo_department foreing key (department_id) references department (id)

  )engine = innodb default charset=utf8;

constraint是约束,fk_userinfo_department是外键的名称。

foreing key开始指定外键为department_id,references设置外键关联到表名department。

最后设置外键需要关联到的department表的字段,id字段。

create table department(

  id bigint auto_increment primary key,

  title varchar(255)

  )engine = innodb default charset=utf8;

这样就使userinfo表中department_id成为了外键。和department表中的id关联了。 

多个约束外键就是在UserInfo表中再多些一行constraint。

样例:

create table userinfo(

  uid bigint auto_increment primary key,

  name varchar(255),

  department_id int,

  xx_id int,

  constraint fk_userinfo_department foreing key (department_id) references department (id),

  constraint fk_xx_class foreing key (xx_id) references class (cid) #外键名为fk_xx_class,主表字段是xx_id,关联表为class,被关联字段为cid。

  )engine = innodb default charset=utf8;

扩展:

一张表只能有一个主键,但是一个主键可以是多列。多列可以合起来做一个主键,只要多列合起来唯一就可以。

样例:

create table t1(

  nid int(11) not null auto_increment ,

  pid int(11) not null,

  num int(11) default null,

  primary key (nid,pid)     #这样是创建了一个由nid和pid组合的一个主键。

  )engine = innodb default charset=utf8;

create table t2(

  id int auto_increment primary key,

  name varchar(255),

  id1 int,

  id2 int,

  constraint fk_t2_t1 foreing key (id1,id2) references t1 (nid,pid),

  )engine = innodb default charset=utf8;

------ END ------

原文地址:https://www.cnblogs.com/george92/p/7299781.html