首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
5.1 MySQL存储引擎
5.1.1 MySQL存储引擎的概念
5.1.2 查询MySQL中支持的存储引擎
5.1.3 InnoDB存储引擎
5.1.4 MyISAM存储引擎
5.1.5 MEMORY存储引擎
5.1.6 选择存储引擎
5.1.7 设置数据表的存储引擎
5.2 MySQL数据类型
5.2.1 数字类型
5.2.2 字符串类型
5.2.3 日期和时间类型
6.1 创建数据表(CREATE TABLE语句)
6.2 查看表结构
6.2.1 使用SHOW COLUMNS语句查看
6.2.2 使用DESCRIBE语句查看
6.3 修改表结构(ALTER TABLE语句)
6.3.1 添加新字段和修改字段定义
6.3.2 修改字段名/类型
6.3.3 删除字段
6.3.4 修改表名
6.4 重命名表(RENAME TABLE语句)
6.5 复制表(CREATE TABLE…LIKE语句)
6.6 删除表(DROP TABLE语句)
7.1 运算符
7.1.1 算术运算符
7.1.2 比较运算符
7.1.3 逻辑运算符
7.1.4 位运算符
7.2 流程控制语句
7.2.1 IF语句
7.2.2 CASE语句
7.2.3 WHILE循环语句
7.2.4 LOOP循环语句
7.2.5 REPEAT循环语句
8.1 增添数据
8.1.1 使用INSERT…VALUES语句插入数据
8.1.2 使用INSERT…SET语句插入数据
8.1.3 使用INSERT...SELECT语句插入查询结果
8.2 修改数据
8.3 删除数据
8.3.1 使用DELETE语句删除数据
8.3.2 使用TRUNCATE TABLE语句删除数据
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(二)
小册名称:MySQL从入门到精通(二)
### 5.2 MySQL数据类型 在MySQL中,数据类型是定义表结构中列存储数据的种类和范围的基础。正确理解和选择数据类型对于数据库的性能、存储效率以及数据的准确性至关重要。本章将深入介绍MySQL支持的主要数据类型,包括数值类型、日期和时间类型、字符串类型以及二进制类型,并探讨它们的使用场景和注意事项。 #### 5.2.1 数值类型 MySQL提供了多种数值类型来满足不同精度和范围的需求,主要分为整数类型、浮点数类型和定点数类型。 ##### 1. 整数类型 整数类型包括TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER、BIGINT等,它们之间的主要区别在于存储的字节大小和范围。例如: - **TINYINT**:占用1个字节,有符号范围是-128到127,无符号范围是0到255。适用于存储非常小的整数值。 - **SMALLINT**:占用2个字节,有符号范围是-32,768到32,767,无符号范围是0到65,535。适用于存储较小范围的整数值。 - **MEDIUMINT**:占用3个字节,有符号范围是-8,388,608到8,388,607,无符号范围是0到16,777,215。适用于中等大小的整数值。 - **INT/INTEGER**:占用4个字节,有符号范围是-2,147,483,648到2,147,483,647,无符号范围是0到4,294,967,295。是最常用的整数类型。 - **BIGINT**:占用8个字节,支持的范围非常大,有符号范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807,无符号范围是0到18,446,744,073,709,551,615。用于存储非常大的整数值。 ##### 2. 浮点数和定点数类型 浮点数和定点数都用于存储小数。 - **FLOAT**:单精度浮点数,占用4个字节。对于需要存储大范围但不要求精确的小数数据很有用。 - **DOUBLE**:双精度浮点数,占用8个字节。提供比FLOAT更高的精度,适合需要高精度计算的应用。 - **DECIMAL(M,D)**:定点数,M是数字的最大位数(精度),D是小数点后的位数(标度)。DECIMAL类型用于存储精确的小数,特别适用于财务计算。与FLOAT和DOUBLE相比,DECIMAL类型在存储和计算时不会产生舍入误差。 #### 5.2.2 日期和时间类型 MySQL提供了多种日期和时间类型,以满足不同应用场景的需求。 - **DATE**:日期,格式为YYYY-MM-DD,范围从'1000-01-01'到'9999-12-31'。 - **TIME**:时间,格式为HH:MM:SS,范围从'-838:59:59'到'838:59:59'。支持正负时间值,用于表示两个时间点之间的时间间隔。 - **DATETIME**:日期和时间组合,格式为YYYY-MM-DD HH:MM:SS,范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。 - **TIMESTAMP**:时间戳,与DATETIME类似,但范围较小(从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC),且支持时区转换。常用于记录数据的创建或修改时间。 - **YEAR**:年份,格式为YYYY,范围从1901到2155。 #### 5.2.3 字符串类型 字符串类型用于存储文本数据,MySQL提供了多种字符串类型以适应不同的需求。 - **CHAR(M)**:定长字符串,M指定字符串的最大长度。如果实际存储的字符串长度小于M,MySQL会在字符串末尾填充空格以达到指定的长度。CHAR类型适合存储长度几乎相等的字符串,如密码或国家代码。 - **VARCHAR(M)**:变长字符串,M指定字符串的最大长度(最大长度取决于MySQL版本和字符集,但通常为65,535字节)。VARCHAR类型只存储必要的字符和长度信息,因此比CHAR类型更节省空间。适用于存储长度变化较大的字符串,如姓名或电子邮件地址。 - **TINYTEXT**、**TEXT**、**MEDIUMTEXT**、**LONGTEXT**:这些类型用于存储大量的文本数据,分别有不同的最大长度限制(TINYTEXT为255字节,TEXT为65,535字节,MEDIUMTEXT为16,777,215字节,LONGTEXT为4,294,967,295字节)。选择哪种类型取决于你预计存储的文本大小。 #### 5.2.4 二进制类型 二进制类型用于存储二进制数据,如图片、音频或视频文件的二进制表示。 - **TINYBLOB**、**BLOB**、**MEDIUMBLOB**、**LONGBLOB**:这些类型用于存储二进制大对象(BLOB)。与TEXT类型类似,它们分别有不同的最大长度限制(TINYBLOB为255字节,BLOB为65,535字节,MEDIUMBLOB为16,777,215字节,LONGBLOB为4,294,967,295字节)。BLOB类型非常适合存储图像、音频、视频等二进制数据。 - **BINARY(M)**、**VARBINARY(M)**:这两种类型分别用于存储定长和变长的二进制字符串。与CHAR和VARCHAR类型类似,但存储的是二进制数据而非文本。 #### 5.2.5 选择数据类型的注意事项 1. **存储需求**:根据数据的实际大小和范围选择合适的数据类型,避免不必要的空间浪费。 2. **性能考虑**:某些数据类型(如INT)在查询时可能比其他类型(如VARCHAR)更快。在性能敏感的应用中,应仔细考虑数据类型的选择。 3. **精度要求**:对于需要精确计算的应用(如财务计算),应使用DECIMAL类型而不是FLOAT或DOUBLE。 4. **兼容性**:在设计数据库时,应考虑到未来可能的扩展和与其他系统的兼容性。 5. **字符集**:字符集的选择会影响VARCHAR、CHAR等字符串类型的存储需求。例如,UTF-8字符集比ASCII字符集占用更多的空间。 综上所述,MySQL数据类型的选择是数据库设计和优化中的一个重要环节。通过合理选择数据类型,可以确保数据库的性能、存储效率和数据的准确性。希望本章内容能为你在MySQL数据库的设计和使用中提供有益的参考。
上一篇:
5.1.7 设置数据表的存储引擎
下一篇:
5.2.1 数字类型
该分类下的相关小册推荐:
MySQL必会核心问题
MySQL 实战 45 讲
MySQL8.0入门与实践
MySQL从入门到精通(五)
MySQL从入门到精通(四)
细说MySQL(零基础到高级应用)
SQL零基础到熟练应用(增删改查)
MySQL从入门到精通(三)
MySQL从入门到精通(一)