一步一步学MySQL----19 MySQL中的存储引擎和数据类型

时间:2021-10-23 18:13:46

存储引擎制定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。

19.1 查看MySQL5.5所支持的存储引擎

命令:

mysql> show engines;

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

也可以

mysql> show engines \G;

一步一步学MySQL----19 MySQL中的存储引擎和数据类型
一步一步学MySQL----19 MySQL中的存储引擎和数据类型

我们看到,MySQL 5.5版本支持9中存储引擎,分别为:PERFORMANCE_SCHEMAMRG_MYISAMCSVBLACKHOLEMEMORYInnoDBARCHIVEMyISAMFEDERATED

其中,

  • 参数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%’;

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

说明:
如果想修改默认存储引擎,只需要修改配置文件my.ini,修改其中的[mysqld]组中的字段default-storage-engine

19.3 数据类型

MySQL查看数据类型命令:

mysql> help data types;

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

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类型的帮助
一步一步学MySQL----19 MySQL中的存储引擎和数据类型

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; //查看数据库

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(2) mysql> use databasetest; //先选择一个数据库

(3) mysql> create table bit_test(id bit(8)); //在选择的数据库中创建一个数据表

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(4) mysql> show tables; //查看该数据库中数据表的情况

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(5) mysql> insert into bit_test values (11), (b’11’); //向表bit_test中插入数据

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

注意:这里insert语句中,插入的第一个参数为十进制数字11,插入的第二个参数为二进制表示的数字“11”,即十进制数字3

(6) mysql> select id+0 from bit_test; //查看表中的数据(十进制显示)

一步一步学MySQL----19 MySQL中的存储引擎和数据类型一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(7) mysql> select bin(id+0) from bit_test; //查看表中的数据(二进制显示)

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

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; //查看数据库

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(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); //创建一个表

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(4) mysql> show tables; //查看该数据库中数据表的情况

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(5) mysql> select curdate(), now(), now(), time(now()), year(now()) \G //查看相关函数

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(6) mysql> insert into d_test values(curdate(), now(), now(), time(now()), year(now())); //向表中插入数据

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(7) mysql> select * from d_test \G //查看表中的数据

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

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; //查看数据库

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(2) mysql> use databasetest; //先选择一个数据库

(3) mysql> create table user(id INT, name VARCHAR(20)); //创建一个user表,含有VARCHAR类型,长度为20

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(4) mysql> show tables; //查看该数据库中数据表的情况

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

(5) mysql> insert into user values(1, ‘bob’),(2,’jack’),(3,’sdadjsahdcajsdcfksdkfjasdfjaskfjdashvdaskj’); //向user表中插入数据

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

注意:这里出现了一个警告,这是由于插入的第3个数据的name值超过了字符串的长度

(6) mysql> show warnings; //查看警告

(7) mysql> select * from user; //查看表中的数据

一步一步学MySQL----19 MySQL中的存储引擎和数据类型

我们看到,如果输入的字符串的长度超过了字符串定义的长度,字符串会被截断并显示警告信息。