MySQL学习笔记:数据类型

2024-03-03 17:28:06 浏览数 (1)

数据类型是数据库表中列的基本属性,它决定了列中可以存储的数据种类以及如何存储和操作这些数据。选择合适的数据类型对于确保数据存储的准确性和高效性至关重要。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: 恋水无意

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


0 人点赞