• 多测师肖老师_mysql之外键(10.3)


    mysql之外键

    一、外键

    外键的定义:

    让一张表记录的数据不要太过于冗余,在数据库中对表的关系进行解耦,尽量让表的数据单一化。

    二、外键的作用?

    保持数据的一致性和完整性

    三、mysql 数据库中的存储引擎

    myisam(默认)

    innodb   (外键需要这种innodb存储格式)

    四、查看存储引擎

    格式:show  table status  from  库名   where  name="表名"

    案例:show  table status  from  dcs where  name="student"

     ==============================

    外键实战

    (1)创建engine=innodb  格式  的表格

    (2)外键,创建的表必须有主键 (子表可以不设主键)

    a、建表时建外键 

    父表:create  table  s (sid  int(10) PRIMARY key ,sname varchar(10)) engine=innodb;

    子表:CREATE  table  c (id  int(10) PRIMARY  key  ,name varchar(10),CONSTRAINT  f  foreign key(id)   REFERENCES  s1(sid) )engine=innod

    CONSTRAINT  外键名     

    foreign key(子表关联字段)    id是子表字段     外键

    REFERENCES  父表(父表关联字段)   引用

    b、表建好,在新建外键

    mm表:create  table mm (sid  int(10) PRIMARY key ,sname varchar(10)) engine=innodb;

    nn 表:create  table nn (id  int(10) PRIMARY key ,name varchar(10)) engine=innodb;

    格式:alter table  nn  add  constraint  外键名  FOREIGN key (子表关联字段 )   REFERENCES   父表(关联字段) ;

    案例:alter table  nn  add  constraint  fk_wj   FOREIGN key (id)   REFERENCES  mm(sid) ;

    ================================

    查询是有外键:

    方法一:

    方法二:查看创建的索引

    格式:show  create  table  表名 ;

    show  create  table  nn ;

     ================================

    删除外键:

    格式:alter  table    表名   drop  foreign key   外键名

    alter  table  nn drop  foreign key fk_wj 

     ================================

    外键中的一些特性:

    1、父表不存在的数据,子表无法插入数据

    2、父表中存在的数据,子表就库插入数据

    3、父表和子表都是空数据,子表无法插入数据,父表可以插入数据

    4、父表和子表都存在的数据,无法删除父表

    5、父表和子表都存在的数据,先删除子表,在删除父表

     ================================

    总结:

    1、如何创建外键?

    2、什么是外键?

    3、外键的作用?

    4、外键中子表和父表的关系?

    5、公司中为什么用外键?

    (1)保存数据的一致性和完整性

    (2)公司数据量大,造成数据重复新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表上,子表单一化,这样可以避免数据的冗余

    show  table status  from  dcs where  name="student"

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    如何在一个类中定义一些常量,每个对象都可以方便访问这些常量而不用重新构造?
    __init__函数一定需要吗
    python 面向对象编程
    Linux 操作系统原理 — mmap() 进程虚拟内存映射
    在VSCode中刷leetcode
    MIMO 天线技术
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/15716331.html
Copyright © 2020-2023  润新知