[MySQL文章4] MySQL数据库存储类型

本文详细介绍了MySQL数据库的存储类型,包括数值类型如int、tinyint、bigint、float和decimal,字符类型如char、varchar、text,枚举类型,日期时间类型及函数,以及日期时间的运算。内容涵盖各类型的特点、存储空间和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 数值类型(int tinyint bigint float decimal)

    1. 整型(unsigned signed)

        1)int 大整型(占4个字节的存储空间

            0 ~ 2**32-1(约为42亿)

        2)tinyint 微小整型(占1个字节的存储空间

            0~255

        3)bigint 极大整型(占8个字节的存储空间

        e.g.

            create table stu (id int,name char(15),age tinyint unsigned,phone bigint);

      备注:1字节 = 8位,可以表示2*8 = 256种状态,表示无符号的整形数字范围为0-255;表示有符号整形范围为-128-127;

    2. 浮点型

        1)float(占4个字节,最多显示7个有效位) ---->常用于成绩

                ...字段名 float(总位数, 小数位)  ...

                float(5,2)取值范围:-999.99~+999.99

        2)decimal(最多可以显示28个有效位)

                ...字段名 decimal(总位数, 小数位) ...

                存储空间计算:

                    1.整数部分和小数部分分开存储

                    2.原则:将9的倍数包装成4个字节,余数占用的字节数如下:

decimal的整数位和小数位模9的余数和字节对照表
余数 字节
1-21个字节
3-42个字节
5-63个字节
7-84个字节

                    3.例如:decimal(19,9)

                       整数部分:10/9=1 ... 1 ----->4字节 + 1字节 = 5字节

                       小数部分:9/9=1 ... 0  ----->4字节 + 0字节 = 4字节

      备注:float的最大缺陷最多显示7个有效位,因此使用较少;而decimal则是使用最为频繁的数据类型,效率非常高,且存储的范围非常大。

二. 字符类型

    1. char(定长)

            当列中存储的字符串达不到最大长度时,使用空格进行补足

            char(必须说明'宽度值')

    2. varchar(变长)

            varchar(必须说明'宽度值')

            char:浪费存储空间,但性能高

            varchar:节约存储空间,但存储性能低

    3. text / longtext(4G)

      备注:数值类型宽度为显示宽度,和占用存储空间大小无关;字符类型的宽度,超过则无法存储;

            ysql> create table tab3(number int(3) zerofill);       #int(3)为显示宽度,int占用4个存储字节,表示0~2*32-1

            ysql> insert into tab3 value(1),(2),(03);

            ysql> select * from tab3;

               001 |

               002 |

               003 |

            ysql> insert into tab3 value(12345678);

            ysql> select * from tab3;

               001 |

               002 |

               003 |

              12345678 |

三.枚举类型

    字段名 enum(val1,val2,...) 多选

    字段名 set(val1,val2,...) 单选

    备注:字段值只能在列举的范围内选择

四. 日期时间类型

日期时间类型
date日期"YYYY-MM-DD"
time时间"HH:MM:SS"
datetime日期时间"YYYY-MM-DD HH-MM-SS"
timestamp日期时间"YYYY-MM-DD HH-MM-SS"

    备注:datetime : 不给值默认返回Nulltimestamp(时间戳) :不给值默认返回当前时间。

. 日期时间函数

日期时间函数
日期时间函数返回值命令行查看
NOW()返回服务器当前的时间select now();
CURDATE()返回当前日期select curtime();
CURTIME()返回当前时间select curdate();  

    备注1:在命令行查询函数返回的结果 :select 函数(); 如:select database(); 查询当前所在数据库

    备注2:insert into tab1 values(...,CURDATE(),CURTIME(),NOW());

. 日期时间运算

   1.语法格式

         select ... from 表名where 字段名 运算符 (时间 - interval 时间间隔单位);

         说明:

             时间间隔需要使用 interval 关键字声明;时间间隔单位可以是1 day | 2 hour | 1 minute | 1 year | 3 month

         示例:

             where meeting > (now() - interval 1 day)         #现在的时间 - 1天的时间 = 一天前的时间

   2.应用实例

         1)查询1天以内的记录:

            select * from 表名 where 字段名 > (now() - interval 1 day)

         2)查询2年前至今年的记录:

            select * from tb2 where time1>(now() - interval 2 year) and time1<(now() + interval 1 year);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值