Mysql索引、存储引擎有何具体区别
下文我给大家简单讲讲关于MySQL索引、存储引擎有何具体区别,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完Mysql索引、存储引擎有何具体区别对大家多少有点帮助吧。
创新互联公司主要从事成都网站设计、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务鲁山,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
一、普通索引:index
查看索引:
desc 库名.表名;
show index from 库名.表名;
默认使用的索引类型:
BTREE(二叉树) hash B+Tree
创建索引:
--》建表时创建:
creat table 表名(
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件,
index(字段1),index(字段2)
);
create table t2 (
name char(10) not null,
index(name)
);
--》已有表添加索引:
create index 索引名 on 表名(字段名);
create index id on t1(id);
//注意:我们索引名与字段名可以不相同,但是为了方便辨认,我们一般将索引名与字段名设置相同。
删除索引:
drop index 索引名 on 表名;
##########################################################################################3
二、主键:primary key
使用规则:
-->设置主键的字段的值,不能重复,且不能赋空值
--》一个表只能有一个主键
--》如果,多个字段都作为primary key,称为复合主键,必须一起创建。
--》主键字段的key标志为pri
--》通常与auto_increment(自动增长),一起连用。
创建主键:
--》建表时创建:
create table 表名(
字段名1 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
primary key(字段名1,字段名2)
);
create table t4(
id int auto_increment, //设置自动增长(不赋值时,会根据上条记录自动加1)
name char(10),
primary key(id,name) //设置复合主键
);
--》已有表创建:
alter table 表名 primary key(字段名);
alter table t1 primary key(id);
删除主键:
alter table 表名 drop primary key;
##########################################################################################
三、唯一索引:unique
使用规则:
--》字段值可以为null,但不能重复
--》当将字段修改为null,限制与主键相同,
--》表中可以有多个unique字段
创建唯一索引:
--》建表时创建:
create table 表名(
字段名1 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
unique(字段名1),
unique(字段名2)
);
create table t5(
id int,
name char(10),
unique(id),
unique(name)
);
--》已有表创建:
create unique index 索引名 on 表名(字段名);
删除唯一索引:
drop index 索引名 on 表名;
#############################################################################################
四、外键:foreign key
外键:
让当前表字段的值在另一个表中字段值的范围内选择。
使用规则:
--》表的存储引擎必须是innodb
--》字段类型要一致
--》被参照字段必须要是索引类型的一种
创建外键:
命令:foreign key(字段名) references 表名(字段名)
on update cascade on delete cascade
create table jfb(
id int auto_increment,
name char(10),
pay float(7,2),
primary key(id),
);
create table xsb(
num int,
name char(10),
class char(10),
foreign key(num) references key(id) on update cascade on delete cascade
);
//创建jfb表,创建xsb表。xsb的num需要参考jfb中的id字段。即将num设为外键,将jfb中的id设为参考键。并设置自动更新。
insert into jfb values(1,"bob",20000),(2,"lucy",19000);
insert into xsb values(3,"jim","1709"); //无法插入,因为num的值,不在jfb的id值范围内。
insert into xsb values(1,"jim","1709"; //插入成功
update jfb set id=6 where name=“bob”
select * from xsb; //更新jfb中的id字段数据,查看xsb中的记录,也同时更新
delete from jfb where name=“bob”;
selece * from xsb; //删除jfb表中记录,xsb中的记录也随之删除。
查看外键:
show create table 表名; //可以查看外键信息,包含外键名
删除外键:
alter table 表名 drop foreign key 外键名;
##############################################################################################
mysql存储引擎:
一、介绍:
mysql数据库服务软件自带的程序,不同的存储引擎有不同的功能和数据存储方式,是表的处理器。
mysql服务体系结构:
连接池
sql接口
分析器
优化器
查询缓存
存储引擎
文件系统
管理工具
########################################################################################
二、基本设置、
查看数据库服务使用的存储引擎:
show engines;
查看表使用的存储引擎:
show create table 表名;
设置数据库服务使用的存储引擎:
vim /etc/my.cnf
[mysql]
default-storage-engine=引擎类型
设置表的存储引擎:
create table 表名(。。。。); //使用默认引擎
create table 表名(。。。。)engine=innodb; //设置存储引擎为innodb
修改表使用的存储引擎:
alter table 表名 engine=存储引擎类型;
################################################################################3
三、常用引擎的特点:
myisam特点:
表.MYI 索引信息
表.MYD 数据
表.frm 表结构
支持表级锁 (锁一张表)
不支持事务 事务回滚
innodb特点:
表.frm 表结构
表.ibd 索引信息+数据
支持行级锁 (只给当前被访问的行加锁)
支持事务 事务回滚
锁的作用:解决并发访问冲突问题。
锁类型 :读锁 和 写锁
锁粒度 : 行级锁 表级锁
事务: 一次数据访问从开始到结束的过程 称为事务
事务回滚: 一次数据访问 任意一步执行失败,恢复所有操作。
事务的特性: 一致性 原子性 隔离性
事务日志文件:记录对innodb存储引擎的表执行过的操作。
工作如何如何决定表使用的存储引擎:
接收写操作多的表适合使用innodb存储引擎。
接收读操作多的表适合使用myisam存储引擎
大家觉得Mysql索引、存储引擎有何具体区别这篇文章怎么样,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。
网页名称:Mysql索引、存储引擎有何具体区别
网页地址:http://myzitong.com/article/pdishs.html