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

一. 数值类型(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-2 1个字节
3-4 2个字节
5-6 3个字节
7-8 4个字节

                    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);

你可能感兴趣的:(MySQL数据库)