MySQL第四天——数据类型和存储引擎

本文介绍了MySQL中的数据类型,包括数值类型(如TINYINT、FLOAT、DOUBLE)、日期/时间类型(如DATE、TIMESTAMP)、字符串类型(如CHAR、VARCHAR、TEXT、ENUM、SET)和二进制类型(如BIT、BLOB)。此外,还讲解了存储引擎的概念,如MyISAM(读写速度快,不支持事务)和InnoDB(支持事务,适合并发和数据完整性要求高的场景),并提供了查看和修改存储引擎的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型(data_type)

是指系统中所允许的数据的类型。

数值类型

整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型包括 FLOAT 和 DOUBLE,定点数类型为 DECIMAL。
在这里插入图片描述

浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。

日期/时间类型

包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。

在这里插入图片描述

字符串类型

包括 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET 等。

在这里插入图片描述

CHAR 和 VARCHAR 类型

固定长度不管实际为多少,都占用指定字节;可变长度则取决于实际字节。CHAR 会自动删除插入数据的尾部空格,VARCHAR 不会。
CHAR(4) 定义后,无论存入的数据长度为多少,占用均为 4 字节。VARCHAR(10) 定义的列所占的字节数为实际长度加 1。

TEXT 类型

TEXT 列保存非二进制字符串,TEXT 只能存储纯文本文件,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。

TEXT 分为 4 种:TINYTEXT 为 255字符、TEXT 为 65535字符、MEDIUMTEXT 为 16777215字符、LONGTEXT 为 4GB字符。

ENUM 类型

ENUM 是一个字符串对象,值为表创建时列规定中枚举的一列值。其语法格式如下:

字段名 ENUM( ‘值1’, ‘值2’, …, ‘值n’ )

”字段名“指将要定义的字段,“值 n ”指枚举列表中第 n 个值。

ENUM 只能取单值,它的数据列表是一个枚举集合。它的合法取值列表最多允许有 65 535个成员。因此,在需要从多个值中选取一个时,可以使用 ENUM。比如,性别字段适合定义,为 ENUM 类型,每次只能从‘男’或‘女’中取一个值。

SET 类型

SET 值在内部用整数表示,列表中每个值都有一个索引编号。当创建表时,SET 成员值的尾部空格将自动删除。与 ENUM 不同的是,ENUM 类型的字段只能从定义的列值中选择一个值插入,而 SET 类型的列可从定义的列值中选择多个字符的联合。

SET 可取多值。它的合法取值列表最多允许有 64 个成员。空字符串也是一个合法的 SET值。在需要取多个值的时候,适合使用 SET 类型,比如,要存储一个人兴趣爱好,最好使用SET类型。

二进制类型

包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
在这里插入图片描述
BLOB 是二进制字符串,主要存储图片、音频信息等。

存储引擎

存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。可以使用SHOW ENGINES;语句查看系统所支持的引擎类型。

在这里插入图片描述
1、MyISAM 不支持事务和外键,访问速度比较快。如应用以读和写为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么 MyISAM 非常适合。

2、InnoDB 在事务上具有优势,支持具有提交、回滚和崩溃恢复能力的事务安装,所以比 MyISAM 存储引擎占用更多的磁盘空间。

如应用对事务的完整性高要求,在并发条件下要求数据的一致性,数据操作除了插入和查询,还包括很多的更新、删除,那么 InnoDB 合适。除了可以有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB 都是合适的。

3、MEMORY 将所有数据保存在 RAM 中,数据访问速度快,但安全没有保障。对表的大小有限制,太大的表无法缓存在内存中。由于没有安全保障,所以要确保表中的数据可以恢复。

查看和修改默认存储引擎

查看默认的存储引擎:

SHOW VARIABLES LIKE ‘default_storage_engine%’;

修改数据库临时的默认存储引擎:重启客户端时会恢复原来的值

SET default_storage_engine= 存储引擎名

永久修改默认的存储引擎,就需要修改 my.cnf 配置文件。在 [mysqld] 后面加入以下语句:

default-storage-engine=存储引擎名称

修改数据表的存储引擎

ALTER TABLE <表名> ENGINE=<存储引擎名>;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值