zoukankan      html  css  js  c++  java
  • mysql外键

    1,什么是外键和外键的作用

      如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。

      外键用于inodb的表中,myisam是无法使用的,即使创建的语句没有问题。实际上是无法创建成功的,建议创建sql语句的时候,带上engine inodb。

      外键的作用:能保持数据的一致性和完整性。

    2,外键的创建

    1,创建province表,可以称为父表。

     create table province(
         pId int primary key auto_increment,
         pName varchar(20)
    )engine innodb;
    

      

    2,创建user表,并创建外键。其中pid即为外键。他其实就是父表的主键。

    create table user(
    userId int primary key auto_increment,
    userName varchar(40),
    pid int,
    foreign key(pid) references province(pId)
    )engine innodb;
    

      

    foreign key(本表字段) references province(父表字段)

     

    注:

    上述谈到了外键保持数据的一致性和完整性。

    向user表插入数据,需要先判断province表里面是否对应的id.不然数据无法插入

    删除province里面的数据,需要先删除user表里面的数据,不然无法删除province里面的数据。因为user表引用了province里面的数据。

    删除表当然也是一样。这样就能保证数据的一致性,完整性。

    操作具体入下:

    1,向user表插入数据,可以看到报错。这是因为父表里面没有pid为1的记录。

    2,为此需要先在父表里面添加一条pid为1的记录。可以发现父表里面又id为1的记录,再向user表插入就没问题了。

     3,删除province表的记录,可以看到是无法删除的。可以先删除user表的记录在删除province的记录。

    3,外键的误区(容易搞混淆的地方,到底谁是外键。)

    上述这里是user表是引用province的表,那么province就是父表,user表就是子表。user的外键pid其实就是province的父表的主键。

  • 相关阅读:
    MyBatis+Oracle
    JAVA接口,json传递
    Oracle学习笔记(二)
    Oracle学习笔记(一)
    数据库事务四大特性之隔离性
    数据库事务四大特性(ACID)
    多表连接时条件放在 on 与 where 后面的区别
    tomcat request.getParamter() 乱码解决方案 Filter版本
    POI excel下载 中文名 浏览器兼容解决
    天马行空
  • 原文地址:https://www.cnblogs.com/lin1/p/9015830.html
Copyright © 2011-2022 走看看