美文网首页数据库
对于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