MySQL创建数据表并建立主外键关系详解

  

  

为mysql数据表建立主外键需要注意以下几点:

  
      <李>需要建立主外键关系的两个表的存储引擎必须是InnoDB。   <李>外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。   <李>外键列和参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引。   
  

        创建表demo.ChineseCharInfo   (   ID int not null auto_increment,   汉字varchar(10)非空,   主键(ID)   )   引擎=innodb auto_increment=1的默认字符集=utf8整理=utf8_general_ci;   创建表demo.ChinesePinyinInfo   (   ID int not null auto_increment,   CharID int空,   拼音varchar(10)为空,   语气非常小的整数unsigned空,   主键(ID),   ——方式一:不指定外键名称,数据库自动生成   外键(CharID)引用ChineseCharInfo (ID)>   ——为表(demo.ChinesePinyinInfo)中字段(CharID)添加外键,并指定外键名为(FK_Name)   alter table演示。ChinesePinyinInfo添加约束FK_Name外键(CharID)引用ChineseCharInfo (ID);   ——为表(demo.ChinesePinyinInfo)中字段(CharID)添加外键,不指定外键名,由数据库自动生成外键名   alter table演示。ChinesePinyinInfo添加外键(CharID)引用ChineseCharInfo (ID);      

        ——通过修改列的属性来删除自增长,第一个(ID)为原列名,第二个(ID)为新列名   alter table演示。ChinesePinyinInfo改变ID ID int not null;   ——删除表中(demo.ChinesePinyinInfo)的主键约束,如果主键列为自增列,则需要先删除该列的自增长   alter table演示。ChinesePinyinInfo删除主键;   ——删除表(demo.ChinesePinyinInfo)中的名称为(FK_Name)的外键   alter table演示。ChinesePinyinInfo删除外键FK_Name;      

四、主外键关系的约束

  

如果子表试图创建一个在主表中不存在的外键值,数据库会拒绝任何插入或更新操作。

  

如果主表试图更新或者删除任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中删除和更新上的选项。

  

上删除和更新都有下面四种动作。

  
      <李>级联:主表删除或更新相应的数据行,则子表同时删除或更新与主表相匹配的行,即级联删除,更新。   <李>设置零:主表删除或更新相应的数据和,则子表同时将与主表相匹配的行的外键列置为空。当外键列被设置为非空时无效。   <李>没有行动:数据库拒绝删除或更新主表。   <李>限制:数据库拒绝删除或更新主表。如果未指定在删除或更新的动作,则删除或更新上的默认动作就为限制。   
  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

MySQL创建数据表并建立主外键关系详解