前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习笔记:数据类型

MySQL学习笔记:数据类型

原创
作者头像
孟斯特
发布2024-03-03 17:28:06
2280
发布2024-03-03 17:28:06
举报
文章被收录于专栏:MySQL学习笔记MySQL学习笔记

数据类型是数据库表中列的基本属性,它决定了列中可以存储的数据种类以及如何存储和操作这些数据。选择合适的数据类型对于确保数据存储的准确性和高效性至关重要。MySQL中的数据类型,包括数值类型、日期和时间类型、字符串类型等。

1. 整数

整数类型用于存储整数值,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。这些类型的取值范围和存储大小不同,可以根据实际需求选择合适的类型。

数据类型

存储空间

取值范围

tinyint

1个字节

有符号:-2^7 \sim (2^7-1) ;无符号:0 \sim (2^8-1)

samllint

2个字节

有符号:-2^{15} \sim (2^{15}-1) ;无符号:0 \sim (2^{16}-1)

mediumint

3个字节

有符号:-2^{23} \sim (2^{23}-1) ;无符号:0 \sim (2^{24}-1)

int

4个字节

有符号:-2^{31} \sim (2^{31}-1) ;无符号:0 \sim (2^{32}-1)

bigint

8个字节

有符号:-2^{63} \sim (2^{63}-1) ;无符号:0 \sim (2^{64}-1)

2. 浮点型

数据类型

存储空间

取值范围

说明

float

4个字节

-3.4E38 ~ 3.4E38

单精度浮点数,精确到小数点后7位

double

8个字节

-1.8E308 ~ 1.8E308

双精度浮点数,精确到小数点后15位

除了float和double外,MySQL中还有一种浮点类型 -- DECIMAL(十进制),用于存储精确的小数值。与其他浮点数类型相比,DECIMAL类型在存储和计算过程中不会引入浮点误差,因此更适合用于存储货币、金融数据等需要精确值的场景。

DECIMAL类型由两部分组成:精度(precision)和小数位数(scale):

  1. 精度(precision):表示数值的总位数,包括整数部分和小数部分。取值范围为1到65。
  2. 小数位数(scale):表示小数部分的位数。取值范围为0到30。

DECIMAL类型的语法如下:

代码语言:sql
复制
DECIMAL(precision, scale)

例如,要创建一个名为price的字段,用于存储精确到两位小数的价格数据,可以使用以下语句:

代码语言:sql
复制
CREATE TABLE product (
  id INT PRIMARY KEY,
  name VARCHAR(255),
  price DECIMAL(10, 2)
);

在这个例子中,DECIMAL(10, 2)表示数值的总位数为10位,其中小数部分占2位。这意味着该字段可以存储的最大值为99999999.99,最小值为0.01。

当向DECIMAL类型的字段插入数据时,需要注意以下几点:

  • 如果插入的数值超出了精度和小数位数的限制,MySQL会报错。
  • 如果插入的数值为NULL,则该字段的值为NULL。
  • 如果插入的数值为空字符串(''),则该字段的值为0。

在查询DECIMAL类型的字段时,可以使用四舍五入函数(ROUND())来调整小数位数。例如,要将price字段的值四舍五入到整数,可以使用以下查询:

代码语言:sql
复制
SELECT id, name, ROUND(price) AS rounded_price FROM product;

总之,DECIMAL类型是一种非常实用的数据类型,适用于存储需要精确值的场景。在使用过程中,需要注意精度和小数位数的设置,以确保数据的准确性。

3. 字符串

  • char,定长字符串,最大255字符
  • varchar,变成字符串,最多2^{16}-1 字符
  • blob,二进制对象,最多2^{16}-1 字节
  • longblob,二进制对象,最多2^{32}-1 字节
  • text,文本字符串,最多2^{16}-1 字符
  • longtext,长文本字符串,最多2^{32}-1 字符

4. 日期和时间类型

数据类型

说明

格式

DATE

日期

YYYY-MM-DD

TIME

时间

HH:MM:SS。

DATETIME

日期和时间

YYYY-MM-DD HH:MM:SS

TIMESTAMP

时间

与时区相关

YEAR

年份

YYYY

5. 其它类型

数据类型

说明

取值范围

ENUM

枚举类型

预定义的值集合中的一个值

SET

集合类型

预定义的值集合中的零个或多个值

JSON

存储JSON格式的数据

最多2^{32}-1 字符


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

blog: mengbin

Github: mengbin92

cnblogs: 恋水无意

腾讯云开发者社区:孟斯特


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 整数
  • 2. 浮点型
  • 3. 字符串
  • 4. 日期和时间类型
  • 5. 其它类型
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档