详细讲解MySQL中的数据类型

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 1. TINYINT:占用1字节,表示范围为-128到127的有符号整数或0到255的无符号整数。2. SMALLINT:占用2字节,表示范围为-32768到32767的有符号整数或0到65535的无符号整数。3. MEDIUMINT:占用3字节,表示范围为-8388608到8388607的有符号整数或0到16777215的无符号整数。4. INT(INTEGER):占用4字节,表示范围为-2147483648到2147483647的有符号整数或0到4294967295的无符号整数。5. BIGINT:占用8字节,表示范围为-9223372036854775808到922337

详细讲解MySQL中的数据类型

image.png

一,整数类型

MySQL中常用的整数类型包括:

  1. TINYINT:占用1字节,表示范围为-128到127的有符号整数或0到255的无符号整数。

  2. SMALLINT:占用2字节,表示范围为-32768到32767的有符号整数或0到65535的无符号整数。

  3. MEDIUMINT:占用3字节,表示范围为-8388608到8388607的有符号整数或0到16777215的无符号整数。

  4. INT(INTEGER):占用4字节,表示范围为-2147483648到2147483647的有符号整数或0到4294967295的无符号整数。

  5. BIGINT:占用8字节,表示范围为-9223372036854775808到9223372036854775807的有符号整数或0到18446744073709551615的无符号整数。

下面是一个MySQL表的建表示例代码,包含了不同整数类型的列:

CREATE TABLE example (
    id INT(10) NOT NULL AUTO_INCREMENT,
    tiny_value TINYINT(4) NOT NULL,
    small_value SMALLINT(6) UNSIGNED NOT NULL,
    medium_value MEDIUMINT(8) NOT NULL,
    int_value INT(11) NOT NULL,
    big_value BIGINT(20) UNSIGNED NOT NULL,
    PRIMARY KEY (id)
);

在上述示例中,创建了一个名为example的表,包含了不同整数类型的列,每列都设置了对应的大小范围和其他属性。

下面是一个MySQL的查询示例代码,用于从上述表中查询数据:

SELECT * FROM example WHERE int_value > 100;

以上示例查询语句用于选取example表中int_value大于100的所有行。

请注意,示例代码只是用于演示不同整数类型的创建和查询,实际应用中还需根据具体情况选择合适的整数类型和设置相应的约束条件。

二,浮点数类型

MySQL中常用的浮点数类型包括:

  1. FLOAT:单精度浮点数,占用4字节,范围约为-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。

  2. DOUBLE:双精度浮点数,占用8字节,范围约为-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。

  3. DECIMAL:高精度小数,用于存储精确的十进制数。DECIMAL(M, D)中的M表示总的位数,D表示小数部分的位数。例如,DECIMAL(10, 2)可以存储最大值9999999.99。

下面是一个MySQL表的建表示例代码,包含了不同浮点数类型的列:

CREATE TABLE example (
    id INT(10) NOT NULL AUTO_INCREMENT,
    float_value FLOAT NOT NULL,
    double_value DOUBLE NOT NULL,
    decimal_value DECIMAL(10, 2) NOT NULL,
    PRIMARY KEY (id)
);

在上述示例中,创建了一个名为example的表,包含了不同浮点数类型的列,每列都设置了相应的大小和其他属性。

下面是一个MySQL的查询示例代码,用于从上述表中查询数据:

SELECT * FROM example WHERE float_value > 10.0;

以上示例查询语句用于选取example表中float_value大于10.0的所有行。

请注意,示例代码只是用于演示不同浮点数类型的创建和查询,实际应用中还需根据具体需求选择合适的浮点数类型,并注意浮点数的精度和舍入问题。

三,字符串类型

MySQL中常用的字符串类型包括:

  1. CHAR:固定长度字符串,最多可以存储255个字符。如果存储的字符串长度小于指定长度,则会自动用空格填充。

  2. VARCHAR:可变长度字符串,最多可以存储65535个字符。实际占用的存储空间根据存储的字符串长度而变化。

  3. TEXT:用于存储较长的文本数据,最大长度为65535个字符。

  4. BLOB:用于存储二进制数据,最大长度为65535个字节。

下面是一个MySQL表的建表示例代码,包含了不同字符串类型的列:

CREATE TABLE example (
    id INT(10) NOT NULL AUTO_INCREMENT,
    char_value CHAR(20) NOT NULL,
    varchar_value VARCHAR(255) NOT NULL,
    text_value TEXT NOT NULL,
    blob_value BLOB NOT NULL,
    PRIMARY KEY (id)
);

在上述示例中,创建了一个名为example的表,包含了不同字符串类型的列,每列都设置了相应的大小和其他属性。

下面是一个MySQL的查询示例代码,用于从上述表中查询数据:

SELECT * FROM example WHERE varchar_value LIKE '%keyword%';

以上示例查询语句用于选取example表中varchar_value列中包含关键字"keyword"的所有行。

请注意,示例代码只是用于演示不同字符串类型的创建和查询,实际应用中还需根据具体需求选择合适的字符串类型,并考虑存储空间和查询效率等因素。

四,时间日期类型

MySQL中常用的时间日期类型包括:

  1. DATE:用于存储日期,格式为'YYYY-MM-DD',范围从'1000-01-01'到'9999-12-31'。

  2. TIME:用于存储时间,格式为'HH:MM:SS',范围从'-838:59:59'到'838:59:59'。

  3. DATETIME:用于存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS',范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

  4. TIMESTAMP:用于存储日期和时间,并自动记录插入或更新行的时间戳。格式为'YYYY-MM-DD HH:MM:SS',范围从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。

下面是一个MySQL表的建表示例代码,包含了不同时间日期类型的列:

CREATE TABLE example (
    id INT(10) NOT NULL AUTO_INCREMENT,
    date_value DATE NOT NULL,
    time_value TIME NOT NULL,
    datetime_value DATETIME NOT NULL,
    timestamp_value TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

在上述示例中,创建了一个名为example的表,包含了不同时间日期类型的列,每列都设置了相应的大小和其他属性。其中timestamp_value列设置了默认值为当前时间戳。

下面是一个MySQL的查询示例代码,用于从上述表中查询数据:

SELECT * FROM example WHERE date_value > '2023-01-01';

以上示例查询语句用于选取example表中date_value大于'2023-01-01'的所有行。

请注意,示例代码只是用于演示不同时间日期类型的创建和查询,实际应用中还需根据具体需求选择合适的时间日期类型,并注意日期格式的匹配和时区的影响。

五,JSON数据类型
MySQL 5.7及以上版本支持JSON数据类型。JSON数据类型可以存储JSON格式的数据,提供了诸如查询、更新、删除等操作的方便性,并可通过索引进行优化,是处理半结构化数据的有效方式。

下面是一个MySQL表的建表示例代码,包含了JSON类型的列:

CREATE TABLE example (
    id INT(10) NOT NULL AUTO_INCREMENT,
    json_data JSON NOT NULL,
    PRIMARY KEY (id)
);

在上述示例中,创建了一个名为example的表,包含了一个JSON类型的列,每行记录包含一条JSON数据。

下面是一些MySQL的示例代码,用于对JSON数据进行操作:

  1. 插入JSON数据:
INSERT INTO example (json_data) VALUES ('{"name":"Alice","age":25}');

以上示例代码向example表中插入了一条JSON数据。

  1. 查询JSON数据:
SELECT json_data->>'$.name' as name, json_data->>'$.age' as age FROM example;

以上示例代码查询了example表中所有行的name和age字段值,并使用'->>'运算符获取JSON字段的值。

  1. 更新JSON数据:
UPDATE example SET json_data = JSON_SET(json_data, '$.age', 26) WHERE id = 1;

以上示例代码使用JSON_SET函数将example表中id为1的行的age字段值更新为26。

  1. 删除JSON数据:
DELETE FROM example WHERE json_data->>'$.name' = 'Alice';

以上示例代码使用'->>'运算符查询example表中所有name字段值为"Alice"的行,并删除这些行。

请注意,以上示例代码只是用于演示JSON数据类型的创建和操作,实际应用中还需根据具体需求选择合适的JSON数据类型,并考虑存储空间和索引优化等因素。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
34 5
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
70 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
98 3
|
1月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
47 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
52 2
|
6月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
68 0
|
3月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
32 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
425 0
|
3月前
|
存储 关系型数据库 MySQL