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

DECIMAL(precision, scale)

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

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字段的值四舍五入到整数,可以使用以下查询:

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)进行许可,使用时请注明出处。

Author: mengbin

blog: mengbin

Github: mengbin92

cnblogs: 恋水无意

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