• 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;
  • 相关阅读:
    linux安装ftp服务器
    批量删除某个用户所有的表
    解决ORA-14450:试图访问已经在使用的事务处理临时表
    jpa 表字段转bean对象
    oracle查询包含某个字段的表
    给所有的表建同义词
    easyui datagrid
    oracle 拼接一张表所有字段
    easyui js基础
    MySQL的Grant命令
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12526767.html
Copyright © 2020-2023  润新知