修改数据 数据类型精讲

第十二章 _MySQL数据类型精讲

1.MySQL中的数据类型

类型 类型举例
整数类型 TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
浮点类型 FLOAT,DOUBLE
定点数类型 DEMICAL
位类型 BIT
日期时间类型 YEAR,TIME,DATE,DATETIME,TIMESTAMP
文本字符串类型 CHAR,VARCHAR,TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
枚举类型 ENUM
集合类型 SET
二进制字符串类型 BINARY,VARBINARY,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB
JSON类型 JSON对象,JSON数组
空间数据类型 单值类型: GEOMATRY,POINT,LINESTRING,POLYGON; 集合类型 : MULTIPOINT, MULTILINESTRING,MULTIPOLYGON,GEOMETRYCOLLECTION

2.整数类型

2.1类型介绍

整型类型 字节 有符号取值范围 无符号取值范围
TINYINT 1 -128 到 127 0 到 255
SMALLINT 2 -32,768 到 32,767 0 到 65,535
MEDIUMINT 3 -8,388,608 到 8,388,607 0 到 16,777,215
INT 4 -2,147,483,648 到 2,147,483,647 0 到 4,294,967,295
BIGINT 8 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0 到 18,446,744,073,709,551,615

2.2可选属性

int(5)要搭配zerofill才有意义

  • 显示宽度为5,当不足5位时用0填充,超过5位不影响

  • 当使用zerofill自动会添加unsigned

3.浮点类型

4.定点数类型

在 MySQL 中,浮点数类型和定点数类型都有相应的实现,分别用于存储不同精度和范围的数字。以下是它们在 MySQL 中的定义和使用方式:

1. 浮点数类型(Floating-Point Types)

MySQL 提供了两种浮点数类型:FLOATDOUBLE

  • FLOAT:单精度浮点数,通常使用 4 字节(32 位)存储。

  • DOUBLE:双精度浮点数,通常使用 8 字节(64 位)存储。

语法:
column_name FLOAT(size, decimals);
column_name DOUBLE(size, decimals);
  • size:指定总位数。对于 FLOATDOUBLE,大小并不影响存储空间,只是表示精度范围。

  • decimals:指定小数位的数量。对于 FLOATDOUBLE,这个参数不是必须的,如果没有指定,会根据实际需要进行存储。

示例:
CREATE TABLE example (
    float_column FLOAT(7, 2),
    double_column DOUBLE(15, 6)
);

注意事项:

  • FLOATDOUBLE 类型都遵循 IEEE 754 浮点标准,因此可能会遇到舍入误差。

  • FLOAT 适用于需要较小精度和范围的场景,而 DOUBLE 提供更高的精度,适用于需要更高精度的科学计算或财务数据。

2. 定点数类型(Fixed-Point Types)

MySQL 提供了 DECIMALNUMERIC 类型来表示定点数。两者的区别仅在于命名,它们是等效的,可以互换使用。

  • DECIMAL:用于存储精确的定点数。它通过字符串的方式存储数字,可以避免浮点数的舍入误差,适用于财务和需要高精度的小数计算。

  • NUMERIC:与 DECIMAL 类型完全相同,只是名字不同。

语法:
column_name DECIMAL(size, decimals);
column_name NUMERIC(size, decimals);
  • size:指定总位数,即数字的最大长度(整数部分 + 小数部分)。

  • decimals:指定小数部分的位数。

示例:
CREATE TABLE example (
    decimal_column DECIMAL(10, 2)
);

在上面的例子中,DECIMAL(10, 2) 表示总共有 10 位数字,其中有 2 位是小数位。也就是说,最大能存储 99999999.99 这个数值。

优点

  • 精确表示DECIMAL 类型不会发生浮点数的舍入误差,特别适合用于存储财务和货币数据。

  • 高精度:可以存储非常大的或非常精确的小数。

总结对比:

类型 存储大小 精度 适用场景
FLOAT 4 字节 精度有限 科学计算、图像处理、速度等
DOUBLE 8 字节 更高的精度 更高精度的科学计算、财务数据等
DECIMAL 变长存储 高精度,精确 财务、会计、货币计算等

总结:

  • 如果你需要处理大范围、浮动的小数或科学计算,FLOATDOUBLE 是合适的选择。

  • 如果你需要精确存储小数(例如财务数据),则应该使用 DECIMALNUMERIC 类型,它们能保证精度而不产生舍入误差

5.位类型

6.日期与时间类型

6.1 year类型

推荐格式

'YYYY'

6.2 date类型

推荐格式

YYYY-MM-DD

6.3 TIME类型

推荐格式

HH-MM-SS

使用CURRENT_TIME()或者NOW(),会插入系统时间

第11章_数据处理之增删改

1. 插入数据

方式一: 一条一条的添加数据

方式二: 将查询结果插入到表中

2.更新数据

修改数据是是可能存在不成功的情况的.(可能是由于约束造成的)

3.删除数据

DELETE FROM ... WHERE ...

在数据删除时,也有可能因为约束,导致删除失败

DML操作默认情况下,执行玩以后都会自动提交数据,如果希望执行完不自动提交数据,则需要使用SET autocommit = FALSE

4.MySQL8新特性 : 计算列

create table test(
a INT,
b INT,
c INT GENERATED ALWAYS AS (a+b) VIRTUAL
);