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 ------

posted @ 2017-08-07 16:26  王先生是胖子  阅读(148)  评论(0编辑  收藏  举报