如何使用mysql外键

  介绍

这篇文章主要为大家展示了如何使用mysql外键,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。


    <李>外键就是表中存在一个<强>字段指向<强>另外一个表的主键强,那么这个字段就可以称为外键。 <李>一张表可以有多个外键。 <李>外键用于约束表与表之间的关系,可以说外键是表之间的映射关系,这个关系可以帮助我们处理表之间关系的紧密性和存在性(<强>比如学生表的cid班级号与班级表的id建立关联,cid应该不能为不存在的,如果不增加外键cid,没有建立上关系,我们就不知道班级号不存在)。 <李>或者说,外键是告诉数据库系统,我们所认为的关系,单纯的数据,系统是不知道实际意义的,外键就是告诉系统应该如何处理他们的关系。 <李>所以,外键的核心是约束。
<人力资源/>

外键的增加:

    <李>创建外键的前提是该字段首先是一个索引,如果不是的话,创建外键是会创建成一个普通索引【所以可以不在意】。 <李>创建外键的另外一个前提是“指向表”已经创建,对于一个不存在的表,将无法使用外键对应上。 <李>增加的方式:
      <李> 1。在创建表的时候定义,在所有字段定义结束后使用外键(外键字段)引用指向表(主键)来定义,比如如何使用mysql外键 <李> 2。也可以修改字段来增加:alter table表名添加[约束外键名字)外键(外键字段)引用父表(主键字段);
        <李>约束外键名字:可以帮助定义外键的名字,但不建议使用,因为要求外键名都唯一,而使用系统自定义的绝对不会重复,李
创建表的学生(
  id auto_increment int主键,
  名字varchar(15)没有空,
  性别varchar(10)非空,
  cid int,
  外键(cid)引用类(id)
  );
 create table类(
  id auto_increment int主键,
  cname varchar (15)
  );

补充:

    <李>在Mysql中,如果存储引擎不是innodb,那么无法使外键的约束作用生效,即使是能成功增加外键。 <李>外键名不能重复,所以不建议使用约束外键名字
<人力资源/>

外键的修改与删除:

    <李>修改:不能修改外键信息,如外键指向之类的,只能先删除再新增。 <李>删除语法:alter table表名删除外键外键名,
      <李>这里的外键名不是外键字段,而是外键名。如果没有使用约束来定义,可以通过显示创建来查看表创建语句中系统定义的外键名。 <李> 如何使用Mysql外键

补充:

    <李>删除外键时,如果使用desc会看到表结构还有MUL,那是一个索引。因为创建外键时,字段会被创建成一个索引。如果不想保留,可以使用下降指数字段名alt="如何使用Mysql外键">
<李>针对父表:可以约束父表的删除和更新,通常有可以以下几种约束模式。【这种约束是子表对父表的约束】
    <李>模式:
      <李>严格严格模式:涉及到外键的删除和更新时,如果对应记录的主键数据已经被子表使用时,那么无法删除(像已经有人入学了某个班级,学校不可能犯傻去把某个班级删除,只能删除那些没人入学的班级)。 <李>级联级联模式:涉及到外键的删除和更新时,如果字段已经被子表使用,子表中的数据会对应更新(像某个班改了班号,那么学生表中的班别都对应更改,如果某个班被删除,就删除对应班的所有学生) <李>设置零置空模式:涉及到外键的删除和更新时,如果字段已经被子表使用,那么子表中的外键数据会置空(像某个班被删掉了,不应该删掉所有学生,而是应该给他们先置空再重新分配班别)【子表允许置空的前提是该字段允许为空】
    <李>其实可以给不同操作指定不同模式李 <>李综上所述(根据我的那些举例),实际上,合适的举措是<>强删除时置空(即使某个班太垃圾了,想删除某个班,但也不应该将所有学生退学,而是将它们分到别的班),<强>修改时级联(允许更改班号,而且更改会更新到学生中) <李>不同操作设置不同模式的设置方法(在子表中操作):外键(外键字段)引用父表(主键)>外键(外键字段)引用父表(主键)>——实验表结构   创建表类(   id auto_increment int主键,   cname varchar (15)   );   创建表学生二(   id auto_increment int主键,   名字varchar(15)没有空,   性别varchar(10)非空,   cid int,   外键(cid)引用类(id)>以上就是关于如何使用mysql外键的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看的到。

    如何使用mysql外键