用户在选择存储引擎之前,首先需要确定数据库管理系统支持哪些存储引擎。
查看当前数据库管理系统所支持的存储引擎:
show engines \G
Engine:表示存储引擎名称。
Supoort:表示是否支持该存储引擎(值DEFAULT表示默认支持的引擎)。
Comment:表示存储引擎的评论。
Transactions:表示是否支持事务。
XA:表示存储引擎所支持的分布式是否符合XA规范。
Savepoints:表示存储引擎是否支持事务处理中的保存点。
查看当前数据库管理系统所支持的存储引擎(第二种)
show variables like 'hava%';
Variable_name:表示存储引擎名称;
Value:表示是否支持存储引擎;
DISABLED:表示支持但是还没开启;
查看默认存储引擎
show variables like 'storage_engine%';
设置关键字like为'storage_engine%':表示查询默认存储引擎;
----------------------------------------------------------------------------------------------------------------
修改默认引擎1.向导方式
2.手工修改配置方式
在my.ini配置修改如下内容:
.......................
...................
default-storage-engine=[默认引擎名称]
........
把default-storage-engine=[默认引擎名称]修改为default-storage-engine=[修改的引擎名称]
注意:要想生效,必须重启mysql服务(net start mysql).
-----------------------------------------------------------------------------------------------------------------
选择存储引擎常用的存储引擎特性
MyISAM:不支持事务,不支持外键,所以访问速度比较快。适合:对事务完整性没有要求并以访问为主的应用。
InnoDB:在事务上具有优势,支持具有提交’回滚和崩溃恢复能力的事务安。占用更多的磁盘空间,因此需要进行频繁的更新,删除操作。
对事务对的完整性要求比较高,需要实现并发控制。
MEMORY:使用内存存储数据,因此数据访问速度快,但是安全没有保障。
-----------------------------------------------------------------------------------------------------------------
数据类型整数类型的所有类型:
TINYINT:字节1(相当于byte,8位),占用字节数最小,取值范围最小;
SMALLINT:字节2(相当于short,16位).
MEDIUMINT:字节3。
INT和INTEGER:4(相当于int ,32位)。
BIGINT:字节8(相当于long,64位).占用字节最大,取值范围最大。
了解字节数可以算出该类型的取值范围,整数有符号数(正负数),左边为符号位(0位整数,1位负数).
例如TINYINT的有符号:
正整数最大值二进制:
0|1|1|1|1|1|1|1
转换成十进制:2^7-1=127
负整数最小值二进制:
1|0|0|0|0|0|0|0
转换成十进制:-2^7-1=-128
例如TINYINT的无符号:最小值无符号0,最大值无符号255
----------------------------------------------------------------------------------------------------------------
浮点数类型,定点数类型和位类型浮点数类型:
FLOAT:字节4(32)
DOUBLE:字节8(64)
定点数类型
DEC(M,D)和DECIMAL(M,D):字节M+2,最小值和最大值与DOUBLE相同。
要求小数数据精确度非常高时,可以选择DEC和DECIMAL,它们比double类型还要高。
--------------------------------------------------------------------------------------------------------------
位类型BIT:z字节1~8,最小值BIT(1),最大值BIT(64).
-----------------------------------------------------------------------------------------------------------------
日期和时间类型DATE:字节4,
DATETIME:字节8
TIMESTAMP:字节4
TIME:字节3
YEAR:字节1
使用场合:表示年月日:DATE;
表示年月日时分秒:DATETIME
表示需要经常插入或者更新日期为当前系统时间:TIMESTAMP
表示时分秒:TIME;
表示年份:YEAR,占用空间比DATE少
-----------------------------------------------------------------------------------------------------------------
字符串类型CHAR系列字符串类型
CHAR(M):字节M,范围0~255
VARCHAR(M):字节M,范围0~65535
使用注意:如果存储字符串长度经常变化,可以选择varchar;
-----------------------------------------------------------------------------------------------------------------
TEXT系列字符串类型TINYTEXT:字节0~255,值得长度+2个字节
TEXT:字节0~65535,值得长度+2个字节
MEDIUMTEXT:字节0~167772150,值得长度+3个字节
LONGTEXT:字节0~4294967295,值得长度+4个字节
使用情况:如果存储大量字符串,选择TEXT系类类型。
----------------------------------------------------------------------------------------------------------------
BINARY系列字符串类型BINRY:字节M,长度0~M
VARBINARY:字节M,长度0~M
SHI与CHAR系列相似,区别是CHAR系列只能存储数据,BINARY系列字符串类型还可以存储二进制数据(例如图片,音乐或者视频文件).
BINRY和VARBINARY的使用区别:存储字符串经常变化可以选择VARBINARY。它们可以存储少量的数据。
-----------------------------------------------------------------------------------------------------------------
BLOB系列字符串类型TINYBLOB:字节0~255
BLOB:字节0~2^16
MEDIUMBLOB:字节0~2^24
LONGBLOB:字节0~2^32
存储大量二进制数据(存储电影等视频文件)选择BLOB系列。