【03】MySQL数据库的数据类型都有哪些?


在这里插入图片描述


在 MySQL 中,数据类型是每个列的核心特性之一,决定了该列所能存储的数据类型及数据范围。正确选择数据类型对于优化数据库的存储性能和查询效率至关重要。本文将详细介绍 MySQL 中常见的数据类型,并给出具体的示例。

一、MySQL中的数据类型

MySQL的基础数据类型可以分为几类:数值类型、日期和时间类型、字符串类型、二进制类型等。接下来,我们将详细解释每一类的数据类型以及它们的特点和使用场景。

1. 数值类型

数值类型用于存储数字,可以分为整数类型和浮动类型。
1.1 整数类型
整数类型用于存储没有小数部分的数字。常见的整数类型有:

数据类型有符合数值范围无符号数值范围所占字节(个)描述
TINYINT-128~1270~2551非常小的整数
SMALLINT-32768~327680~655352小范围的整数
MEDIUMINT-8388608~83886080~167772153中等范围的整数
INT-2147483648~ 21474836480~42949672954标准、常用的整数
BIGINT-9223372036854775808 ~92233720368547758080~184467440737095516158非常大的整数

1.2 浮动类型
浮动类型用于存储带小数的数字,常见的有:

数据类型有符合数值范围无符号数值范围所占字节(个)描述
float-3.402823466E+38 ~-1.175494351E-380和1.175494351E-38~3.402823466E+384单精度浮动点数,存储较小范围的数字
double-1.7976931348623157E+308 ~2.2250738585072014E-3080和2.2250738585072014E-308~1.7976931348623157E+3088双精度浮动点数,存储较大范围的数字
DECIMAL(M,D)-1.7976931348623157E+308 ~2.2250738585072014E-3080和 2.2250738585072014E-308~1.7976931348623157E+308M+2用于存储精确的小数值,适用于财务等精确计算的场景

注意:
DECIMAL类型的取值范围与DOUBLE类型相同。但是,请注意:DECIMAL类型的有效取值范围是由M和D决定的。其中,M表示的是数据的长 度,D表示的是小数点后的长度。比如,将数据类型为DECIMAL(6,2)的数据6.5243 插入数据库后显示的结果为6.52。

示例:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10, 2)  -- 存储两位小数
);
#在这个表中,price 使用 DECIMAL 类型,表示商品的价格,保留两位小数。

2. 日期和时间类型

MySQL 提供了一系列的日期和时间类型,专门用于存储时间相关的数据。

数据类型取值范围日期格式所占字节(个)描述
DATE1000-01-01~9999-12-31YYYY-MM-DD4存储日期
DATETIME1000-01-01 00:00:00 ~9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS8存储日期和时间
TIMESTAMP1000-01-01 00:00:00 ~9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS4类似于 DATETIME,但通常用于记录时间戳,存储 UTC 时间
TIME-838:59:59~ 838:59:59HH:MM:SS3存储时间
YEAR1901~2155YYYY1存储年份

示例:

CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    event_date DATETIME
);
#在这个表中,event_date 使用 DATETIME 类型,表示活动的日期和时间。

注意:
当使用YEAR类型时,一定要区分’0’和0。因为字符串格式的’0’表示的YEAR值是2000而数字格式的0表示的YEAR值是0000。

3. 字符串类型

字符串类型用于存储文本数据。根据数据的长度和是否有定长要求,MySQL 提供了不同的字符串类型。
3.1 常用字符串类型

数据类型存储范围描述
char0~255字节定长字符串:无论存储的数据长度是多少,都会填充空格来保证定长
varchar0~65535字节变长字符串:根据实际数据的长度,节省存储空间。

注意:
当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节;而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1

如:当定义字段为char(3),在存储时不管是“”,“1”,“12”,存储需求均为3个字节;二定义为varchar(3)时,在存储时不管是“”,“1”,“12”,存储字节对应的数据所占用的字节数为实际长度加1。则“”,“1”,“12”对应1字节,2字节,3字节。

3.2 文本字符串类型
文本类型用于表示大文本数据,例如,文章内容、评论、详情等,它的类型分为如下4种:

数据类型存储范围描述
TINYTEXT0~255字节用于存储更短的文本数据
TEXT0~65535字节用于存储较长的文本数据
MEDIUMTEXT0~16777215字节用于存储中等的文本数据
LONGTEXT0~4294967295字节非常长的文本数据

示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    bio TEXT
);
#在这个表中,username 使用 VARCHAR(50) 类型,表示用户的用户名,最多允许 50 个字符。
#bio 使用 TEXT 类型,用来存储用户的个人简介,文本内容较长。

4. 二进制类型

二进制类型用于存储二进制数据,如图片、文件等。

数据类型存储范围描述
TINYBLOB0~255字节存储小型二进制数据
BLOB0~65535字节二进制大对象,用于存储大数据量的二进制数据
MEDIUMBLOB0~16777215字节存储中型二进制数据
LONGBLOB0~4294967295字节存储大型二进制数据

示例:

CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    image_data LONGBLOB
);
#在这个表中,image_data 使用 LONGBLOB 类型,表示存储大量二进制数据,如图片的二进制内容。

5. 枚举类型和集合类型

  • ENUM: 枚举类型,允许存储固定集合中的一个值。通常用于存储预定义的选项。
  • SET: 集合类型,允许存储多个预定义选项的组合(最多 64 个值)。

示例:

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    status ENUM('pending', 'processing', 'completed', 'cancelled')
);
#在这个表中,status 使用 ENUM 类型,表示订单的状态,它的值只能是 pending、processing、completed 或 cancelled 中的一个。

二、如何在MySQL中创建和执行这些数据类型的示例

创建和执行这些数据类型的过程涉及到 SQL 的 CREATE TABLE 语句。下面我们通过多个示例来说明如何使用不同的数据类型。

示例1:创建一个商品表

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10, 2)
);

在这个表中,我们使用 INT 来表示商品的 ID,VARCHAR(100) 来表示商品的名称,DECIMAL(10, 2) 来表示商品的价格。

示例2:创建一个活动表

CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    event_date DATETIME
);

name 用于存储活动名称,event_date 用于存储活动的具体日期和时间。

示例3:创建一个用户表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    bio TEXT
);

username 存储用户的用户名,bio 存储用户的个人简介。

示例4:插入数据

INSERT INTO products (name, price) VALUES ('Laptop', 1299.99);
INSERT INTO events (name, event_date) VALUES ('Tech Conference', '2024-12-15 09:00:00');
INSERT INTO users (username, bio) VALUES ('john_doe', 'A tech enthusiast and blogger.');

总结

在 MySQL 中,选择合适的数据类型不仅能帮助你高效地存储数据,还能提高查询的效率。不同的数据类型具有不同的存储需求和性能特点,理解它们的特点并合理应用,是数据库设计的基础。通过本文的示例,你可以看到如何在实际项目中定义并使用这些数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白话Learning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值