存储引擎制定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。
19.1 查看MySQL5.5所支持的存储引擎
命令:
mysql> show engines;
也可以
mysql> show engines \G;
我们看到,MySQL 5.5版本支持9中存储引擎,分别为:PERFORMANCE_SCHEMA、MRG_MYISAM、CSV、BLACKHOLE、MEMORY、InnoDB、ARCHIVE、MyISAM、FEDERATED。
其中,
参数Engine表示存储引擎名称;
参数Support表示MySQL是否支持该存储引擎(YES表示支持、NO表示不支持、DEFAULT表示该存储引擎是数据库管理系统默认支持的存储引擎);
参数Comment表示关于存储引擎的评论;
参数Transactions表示存储引擎是否支持事务(YES表示支持、NO表示不支持);参数XA表示存储引擎所支持的分布式是否符合XA规范(YES表示符合、NO表示不符合);
参数Savepoints表示存储引擎是否支持事务处理中的保存点(YES表示支持、NO表示不支持)。
通过执行结果,我们发现MySQL5.5默认的存储引擎为InnoDB存储引擎。
19.2 查看MySQL5.5默认的存储引擎
命令:
mysql> show variables like ‘storage_engine%’;
说明:
如果想修改默认存储引擎,只需要修改配置文件my.ini,修改其中的[mysqld]组中的字段default-storage-engine
19.3 数据类型
MySQL查看数据类型命令:
mysql> help data types;
19.3.1 整数类型
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 有符号:-128 无符号:0 | 有符号:127 无符号:255 |
SMALLINT | 2 | 有符号:-32768 无符号:0 | 有符号:32767 无符号:65535 |
MEDIUMINT | 3 | 有符号:-8388608 无符号:0 | 有符号:8388607 无符号:1677215 |
INT和INTEGER | 4 | 有符号:-2147483648 无符号:0 | 有符号:2147483647 无符号:4294967295 |
BIGINT | 8 | 有符号:-922……… 无符号:0 | 有符号:922…….. 无符号:184…….. |
查看系统帮助
mysql> help contents;
说明:这条命令可以查看MySQL帮助文档支持的目录列表,然后根据需要查看的条目选择查看。
比如:输入help int即可查看int类型的帮助
19.3.2 浮点数、定点数类型
浮点数
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | +1.75494351E - 38 | +3.402823466E + 38 |
DOUBLE | 8 | +2.2250738585072014E - 308 | +1.7976931348623157E + 308 |
定点数
定点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DEC(M,D)和DECIMAL(M,D) | M+2 | 与DOUBLE相同 | 与DOUBLE相同 |
19.3.3 位类型
位类型的使用方法如下:
(1) mysql> show databases; //查看数据库
(2) mysql> use databasetest; //先选择一个数据库
(3) mysql> create table bit_test(id bit(8)); //在选择的数据库中创建一个数据表
(4) mysql> show tables; //查看该数据库中数据表的情况
(5) mysql> insert into bit_test values (11), (b’11’); //向表bit_test中插入数据
注意:这里insert语句中,插入的第一个参数为十进制数字11,插入的第二个参数为二进制表示的数字“11”,即十进制数字3
(6) mysql> select id+0 from bit_test; //查看表中的数据(十进制显示)
(7) mysql> select bin(id+0) from bit_test; //查看表中的数据(二进制显示)
19.4 日期和时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -835:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
日期和时间类型的使用方法如下:
(1) mysql> show databases; //查看数据库
(2) mysql>use databasetest; //先选择一个数据库
(3) mysql>create table d_test(f_date DATE, f_datetime DATETIME, f_timestamp TIMESTAMP, f_time TIME, f_year YEAR); //创建一个表
(4) mysql> show tables; //查看该数据库中数据表的情况
(5) mysql> select curdate(), now(), now(), time(now()), year(now()) \G //查看相关函数
(6) mysql> insert into d_test values(curdate(), now(), now(), time(now()), year(now())); //向表中插入数据
(7) mysql> select * from d_test \G //查看表中的数据
19.5 字符串类型
MySQL有多种表示字符串的数据类型
(1) CHAR系列字符串类型
CHAR系列字符串类型 | 字节 | 描述 |
---|---|---|
CHAR(M) | M | M为0~255之间的整数 |
VARCHAR(M) | M | M为0~65535之间的整数 |
(2) TEXT系列字符串类型
TEXT系列字符串类型 | 字节 | 描述 |
---|---|---|
TINYTEXT | 0~255 | 值的长度为+2个字节 |
TEXT | 0~65535 | 值的长度为+2个字节 |
MEDIUMTEXT | 0~167772150 | 值的长度为+3个字节 |
LONGTEXT | 0~4294967295 | 值的长度为+4个字节 |
(3) BINARY系列字符串类型
BINARY系列字符串类型 | 字节 | 描述 |
---|---|---|
BINARY(M) | M | 允许长度为0~M |
VARBINARY(M) | M 允许长度为0~M |
(4) BLOB系列字符串类型
BLOB系列字符串类型 | 字节 |
---|---|
TINYBLOB | 0~255 |
BLOB | 0~216 |
MEDIUMBLOB | 0~224 |
LONGBLOB | 0~232 |
说明:
BLOB类型与TEXT类型比较相似,不同的是,BLOB类型可以存储二进制数据(如:图片、音乐或者视频文件),而TEXT类型只能存储字符数据。
字符串类型的使用方法如下:
(1) mysql> show databases; //查看数据库
(2) mysql> use databasetest; //先选择一个数据库
(3) mysql> create table user(id INT, name VARCHAR(20)); //创建一个user表,含有VARCHAR类型,长度为20
(4) mysql> show tables; //查看该数据库中数据表的情况
(5) mysql> insert into user values(1, ‘bob’),(2,’jack’),(3,’sdadjsahdcajsdcfksdkfjasdfjaskfjdashvdaskj’); //向user表中插入数据
注意:这里出现了一个警告,这是由于插入的第3个数据的name值超过了字符串的长度
(6) mysql> show warnings; //查看警告
(7) mysql> select * from user; //查看表中的数据
我们看到,如果输入的字符串的长度超过了字符串定义的长度,字符串会被截断并显示警告信息。