• mysql的外键知识


    外键的作用

    1、用来约束两张表中的字段

    2、外键也可以用来实现一对多

    我们先举一个这样的例子,让大家对外键有一个基本的认识

    当前我们有一个需求就是,需要创建一张表,这张表要包括“姓名”,“年龄”,“工作地点”,而对于我们公司的员工,工作的地点就是那么几个,所以对于工作地点这一列,如果在一张表中实现,那么就会有很多重复的数据,这里就会有2个弊端

    a、重复数据,会占用很大的硬盘空间

    b、如果我们要更改某个地点的名称,那么我们就需要对所有在这个地点工作的信息都要更改

     那么我们该如何解决呢?这里我们就可以用到外键的知识,我们可以创建两张表,第二张表专门用来存放工作地点的信息,效果如下

     如果可以形成这样的对应关系,那么上面的两个问题就可以迎刃而解了

    我们在mysql中就可以使用外键来解决这个问题

    我们今天主要来学习一下如何对两张表格设置外键

    方法1、我们可以先创建表,然后在配置外键信息

    a、先创建两张表

     

     b、我们为userinfo表和workaddress表分别插入数据

    c、第三步,我们就要配置外键关系了,此时我们要约束userinfo表中的workaddres列中的内容必须是workaddress表中的workid中的内容

    mysql> alter table userinfo add constraint fk_userinfo_workaddress foreign key u

    serinfo(workaddress) references workaddress(workid);

     d、我们测试我们的外键是否生效

    从这里我们可以看到,我们如果插入一个workaddress为4的是可以成功的,因为workaddress中有workid为4的值,但是我们插入workaddress为5的数据就会失败,因为我们在workaddress表中没有值为5的数据,所以证明我们的外键是生效的

    e、我们最后来说明一下添加外键的命令

    红色框中的命令是命令的格式,必须要这么写

    绿色框中的命令就需要我们根据实际情况来写

    第一个绿色的框:外键的名称,这个可以任意取

    第二个绿色的框:约束的表名称(要约束的列的名称),比如我们的userinfo表的workaddress列

    第三个绿色的框:被约束的表的名称(被约束的列的名称),比如我们的workaddres表的workid列

    方法2:我们也可以在创建的表的时候就配置外键关系,这里我们就把命令展示一下,就不用实例演示了,如果我们能看到方法1,那么方法2其实是很简单的。

  • 相关阅读:
    oracle在没
    一天中时针和分钟重合的次数
    oracle的隐藏的东东
    左右小移动
    JS全选的操作
    JS定时器
    在文件中查找字符串
    表单原件
    div和span互换
    div和span的区别
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/8344115.html
Copyright © 2020-2023  润新知