zoukankan      html  css  js  c++  java
  • 055_数据库的外键约束

    #创建学生表与班级表,其中学生表依赖与班级表
    CREATE TABLE tbl_class(
        id int(11) PRIMARY KEY  AUTO_INCREMENT,
        name char(20),
        number int(11)
    );
    
    CREATE TABLE tbl_student(
        id int(11) PRIMARY KEY AUTO_INCREMENT,
        name char(50),
        age char(11),
        class_id int(11),
        CONSTRAINT haha FOREIGN KEY(class_id) REFERENCES tbl_class(id)
        ON DELETE cascade ON UPDATE cascade    
    );
    
    constraint ***:这个是给外键约束起的名字,通常根据这个名字来删除外键约束。外键约束主要就是约束的被依赖表,
    对于依赖表没有任何影响。
    外键约束有四个属性值=
        cascade:级联删除与更新,当删除被依赖表时,会将依赖表中的数据全部删除。
        set null:当删除被依赖表的时候,依赖表中的数据设置为null
        restrict:依赖表不删完,无法删除被依赖表。也是默认的值。
        no action再mysql中和restrict相同。
        set default:innoDB和NDB无法使用改参数。
    
    #删除外键约束
    ALTER TABLE tbl_student DROP FOREIGN KEY haha;
    delete from tbl_class where id = 2;
    
    #添加外键约束
    ALTER TABLE tbl_student ADD CONSTRAINT haha FOREIGN KEY(class_id) REFERENCES tbl_class(id)
    ON DELETE cascade ON UPDATE cascade
    
    #删除两个表
    drop table tbl_student;
    drop table tbl_class;
    
    
    #查看一个表的索引,可以看到主键索引,也可以看到外键索引,但是restrict约束属性值查看不出来。
    show  index  from tbl_student;
    
    #查看表的创建信息,这个可以查看到外键的约束属性值,但是只能再doc窗口中。
    show create table tbl_student;
  • 相关阅读:
    django rest framework renderer
    django集成celery
    Celery
    ajax csrftoken
    验证码刷新、倒计时
    C++ const关键字以及static关键字
    git 查看当前仓库地址以及设置新的仓库地址
    C++ explicit关键字
    SSD训练网络参数计算
    C++ opencv调用resize修改插值方式遇到的坑
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12526767.html
Copyright © 2011-2022 走看看