码迷,mamicode.com
首页 > 数据库 > 详细

mysql的索引,事务,引擎

时间:2019-01-11 14:47:14      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:show   访问速度   的区别   tor   table   man   定义   包含   mem   

索引:
1、普通索引:
create index 自定义索引名称 on 库名.表名(表中的字段);
如:create index student on aa.学生表(学号);

2、唯一性索引:
create unique index 自定义索引名称 on 库名.表名(表中的字段);
如:create unique index tudent on aa.学生表(学号);
注:删除索引 DROP INDEX 索引名称 ON 表名

3、主键索引:
create table 表名(字段1,字段2……,PRIMARY KEYS(前面的某个字段));
alter table 库名.表名 add PRIMARY KEYS(表的某个字段);
如:create table studentss(id int(4), name char(6),age int(4),PRIMARY KEY(id));
如:alter table studentss add primary key(id)

注:主键索引和唯一性索引的区别是,唯一性索引可以允许有空值。

注: 删除主键
如果一个主键是自增长的,不能直接删除该列的主键索引,

     应当先取消自增长,再删除主键特性
        alter table 表名 drop primary key; 【如果这个主键是自增的,先取消自增长.】
     具体方法如下:
        alter table articles modify id int ; 【重新定义列类型】
        alter table articles drop primary key;

4、全文索引:仅在MyISAM存储引擎下使用。

ALTER TABLE 表名 ADD FULLTEXT(字段1);

create table 表名("字段1" 类型 ,FULLTEXT(字段1))engine=MyISAM;

5、单列索引:一个索引只包含一个列,一个表可以有多个单列索引.
方法一:CREATE INDEX 索引名 ON 表名(字段);

方法二:ALTER TABLE 表名 ADD INDEX 索引名(字段);

6、组合索引:
CREATE INDEX 索引名 On 表名(字段1(length),字段2(length),...);

ALTER TABLE 表名 ADD INDEX 索引名(字段1,字段2);

7,查看索引的方法
show index from 表名 \G;
show keys from 表名 \G;

注:所有的索引名称不能重复

事务命令控制事务:
begin; 表示开始一个事务

中间输入sql语句;

commit; 表示提交一个事务

rollback; 回滚事务,会撤销所有之前的操作,在提交

savepoint s1; 定义回滚点
rollback to savepoint s1; 在提交之前执行

set设置控制事务:
set authcommit = 0; 禁止自动提交

设置禁止自动提交后,输入SQL语句命令后,需要手动使用"commit"去提交执行。

set authcommit=1; 开启自动提交

MySQL存储引擎:

MySQL5.5支持的存储引擎有InnoDB、MyISAM、MEMORY、MRG_MyISAM、ARCHIVE、FEDERATED、CSV、BLACKHOLE、PERFORMANCE_SCHEMA共9种。

可在数据库中使用"SHOW ENGINES" 查看系统所支持的引擎类型

功能 InnoDB MyISAM
支持事务 支持 不支持
支持全文搜索 不支持 支持
外键约束 支持 不支持
表空间大小 较大 较小
数据行锁定 支持 不支持

MyISAM存储引擎:该存储引擎不支持事务,也不知外键约束,访问速度比较快。因此对不需要事务处理,以访问为主的应用适合使用该引擎。

InnoDB存储引擎:对需要日夕频繁的更新、删除操作,同时还对事务的完整性要求比较高,需要实现并发控制的应用,适合使用该存储引擎。

MySQL5.5以上版本默认的存储引擎是InnoDB。

1、查看默认存储引擎
SHOW VARIABLES LIKE ‘%storage_engine%‘;

注:%storage_engine%:表示查询默认存储引擎。

2、查看数据库中的所有数据表使用的引擎:
show table status from 数据库名 \G;

查看数据库中某个数据表使用的引擎:
show table status from 数据库名 数据表名 \G;

查看创建表时使用的命令:
show create table 表名;

注:\G表示以垂直形式显示内容。

3、修改默认存储引擎:
通过修改配置文件my.cnf来实现,修改以下内容:
[mysqld]下添加:
default-storage-engine=MyISAM
注:
改完后,删除/mysql/data目录下的ib_logfile0,ib_logfile1
否则在启动mysql时会报错,重启数据库服务。

4、指定表的存储引擎
(1)、在数据表已存在的情况下,修改表的存储引擎:
alter table 表名 engine=存储引擎名称;

(2)、在创建数据表的情况下制定数据表的存储引擎:
CREATE TABLE 表名(
….
)ENGINE=存储引擎;

(3),修改默认存储引擎:
通过修改配置文件my.cnf来实现,修改以下内容:
[mysqld]下添加:
default-storage-engine=MyISAM

5、MySQL数据文件
在MySQL中,不同的存储引擎涉及 的数据文件不同.
可通过配置文件/etc/my.cnf来制定路径。
[mysqld]
datadir = /usr/local/mysql/data

该目录下,每个数据库相关文件均存放在以数据库命名的目录中。

/usr/lcoal/mysql/data mysql的文件目录

MyISAM类型的表文件有3个,分别为:

.frm文件 :表结构文件。主要存放表的元数据,包括表结构定义信息等。该文件与存储引擎无关,即任何存储类型的表都会有这个文件

MYI文件 :索引文件。其主要存放MyISAM类型表的索引信息,每个MyISAM类型的表会有一个.MYI文件,存放的位置与.frm文件相同。

.MYD文件 :数据文件。存放表中数据的文件

InnoDB类型的表文件有.frm和.idb相关文件

.frm文件:表结构文件。主要存放表的元数据,包括表结构定义信息等。该文件与存储引擎无关,即任何存储类型的表都会有这个文件

.idb文件 :数据文件,保存所有InnoDB类型表的数据

mysql的索引,事务,引擎

标签:show   访问速度   的区别   tor   table   man   定义   包含   mem   

原文地址:http://blog.51cto.com/14150862/2341580

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!