zoukankan      html  css  js  c++  java
  • MYSQL表关系

    表关系

    一、外键--Foreign Key

    ​   作用:约束当前表的某列值必须取自于另一张表的主键列值

    ​   外键所在的列称之为“外键列”

    ​   外键所在的表称之为“外键表”或“子表”

    ​   被外键列所引用的表称之为“主表”或“主键表”

      语法:

      1.创建表的同时指定外键

      create table xxx(

      字段 类型,

      ...,

      constraint 外键名 foreign key(字段)

      references 主键表(主键列)

      )

    -- 创建course表:id,cname,cduration
     create  table course(
        id int primary key auto_increment,
        cname varchar(30) not null,
        cduration int not null
     )
    -- 创建teacher表:id,name,age,gender,hobby,course
    -- course_id是外键,引用自course表的主键id
     create table teacher(
        id int primary key auto_increment,
        name varchar(30) not null,
        age int not null,
        gender varchar(2) not null,
        hobby varchar(50) not null,
        course_id int,
        -- 外键约束
        constraint fk_course_teacher
        foreign key(course_id) -- 设置外键
        references course(id) -- 参照主键(参照course的id值)参照谁就写谁
     )

    ​   2.对已有表增加外键

    ​   alter table 表名

    ​   add constraint 外键名

    ​   foreign key(字段)

    ​   references 主键表(主键)

    -- 创建student表:id,name,age,gender,school,class_id,major_id
        create table student(
        id int primary key auto_increment,
        name varchar(30) not null,
        age int not null,
        gender varchar(2) not null,
        school varchar(100) not null,
        class_id int not null,
        major_id int not null
     );
    -- 创建classinfo表:id,classname,status
        create table classinfo(
        id int primary key auto_increment,
        classname varchar(30) not null,
        status varchar(2) not null
        );
    -- 更新student表结构,增加外键在class_id,引用子classinfo表的主键id
        alter table student
        add constraint fk_class_student
        foreign key(class)
        references classinfo(id)

      3.删除外键

      alter table 表名 drop foreign key 外键名;

      4.查看外键名

      show create table 表名;

    二、级联操作

    ​ 1.语法:

      alter table 表名

      add constraint 外键名

      foreign key(字段)

      references 主键表(主键)

      on delete 级联操作

      on update 级联操作

    -- 为score表中的stu_id增加外键,并设置级联操作
        alter table score
        add constraint fk_student_score
        foreign key(stu_id)
        references student(id)
        on delete cascade
        on update cascade

    ​ 2.级联操作取值

      (1)cascade

      数据级联删除、更新(主表有啥动作,子表跟着有啥动作)

      (2)restrict(默认)

      子表中有关联数据,那么主表中就不允许做删除、更新。

      (3)set null

      主表删除数据时子表中的相关数据会设置为null

     

     

  • 相关阅读:
    iostream、printf/wprintf和中文输出【转】
    java命令行运行错误:ClassNotFoundException【转】
    一致性代码段和非一致性代码段【转】
    Winform disign tips(转)
    WinForm下多层架构的实现(转)
    如何在GPU上产生随机数
    最快速度找到内存泄漏
    给定单链表的头结点,如何快速的找到倒数的第n个节点?
    DX11_基于GPU_GeometryShader的3D精确拾取
    Directx11:基于GPU_GeometryShader的Billboard公告板绘制
  • 原文地址:https://www.cnblogs.com/maplethefox/p/11161150.html
Copyright © 2011-2022 走看看