美文网首页数据库
对于mysql的外键和mysql的存储引擎

对于mysql的外键和mysql的存储引擎

作者: 烂笔头2020 | 来源:发表于2020-10-16 16:03 被阅读0次

    存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

    在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型。

    基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

    1. 查看数据库可以支持的存储引擎
      用show engines; 命令可以显示当前数据库支持的存储引擎情况

    2.创建数据库表时设置存储存储引擎的基本语法是:

    Create table tableName(
    columnName(列名1)  type(数据类型)  attri(属性设置),
    columnName(列名2)  type(数据类型)  attri(属性设置),
    ……..) engine = engineName
    
    例:
    create table user(
    id int not null auto_increment,
    username char(20) not null,
    sex char(2),
    primary key(id))
    engine=InnoDB;
    

    如果经常用InnoDB的话可以直接将它设置为默认的存储引擎。
    外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。

    对于外键

    下面直接放一个例子来说:

    //表1:(父表)
    create table repo_table(
    repo_id char(13) not null primary key,
    repo_name char(14) not null)
    engine=InnoDB;
    
    //表2:(子表)
    create table busi_table(
    busi_id char(13) not null primary key,
    busi_name char(13) not null,
    repo_id char(13) not null,
    index (repo_id),//外键必须建立索引
    foreign key(repo_id) references repo_table(repo_id) on delete cascade on update cascade)//增加级联操作
    engine=InnoDB;
    
    insert into repo_table values("12","sz");//成功
    insert into repo_table values("13","cd");//成功
    insert into busi_table values("1003","cd", "13");//成功
    insert into busi_table values("1002","sz", "12");//成功
    insert into busi_table values("1001","gx", "11");//失败
    
    //级联删除:删除父表的数据,子表对应的也会被删除
    delete from repo_table where repo_id=12; 
    //级联更新:更新父表的数据,子表对应的也会被更新
    update repo_table set repo_id=6 where repo_id=12;
    

    注意:
    ·删除先删除子表数据
    ·插入先插入父表数据

    相关文章

      网友评论

        本文标题:对于mysql的外键和mysql的存储引擎

        本文链接:https://www.haomeiwen.com/subject/sfrzpktx.html