• MySQL 数据类型


    1)整数型

    类型

    占用空间

    最小值

    最大值

    举栗与知识点

    INT 4

    signed -2147483648 (-2^31)【默认】

    unsigned 0

    2147483647 (2^31-1)

    4294967295 (2^32-1)

    int的默认类型是有符号的

    BIGINT 8

    signed -2^63 【默认】

    unsigned 0

    2^63

    2^64-1

    int(3) int(11)中3和11的含义:

    这里的3跟11表示显示宽度,本身没有意义,只有与zerofill配合在一起,才会起作用。

    create table 时指定数据类型为int(0),但使用desc table_name时发现int(0)变成了int(11),原因是signed int 的默认显示宽度是11。。为什么11是默认值,是因为signed int类型的取值范围-2147483648~ 2147483647,最大值加上符号位是11位,当我设定int为unsigned,它的取值范围是0~ 4294967295,对应的默认显示宽度是10,如图所示。


    INT类型的属性:

      UNSIGNED/SIGNED: 是否有符号

      ZEROFILL:  定义显示宽度,不会更改值,当插入数据宽度大于定义的宽度,不会对插入的数据有任何影响,还会按照类型的实际进度进行保存,这时宽度格式已经没有任何意义。

    Auto_INCREMENT:自增,每张表一个自增字段,该自增字段,必须有唯一索引,以避免序号重复

    2).浮点型

    类型

    占用空间

    有效位数

    知识点

    单精度类型: FLOAT

    4 8

    1、float(M,D)/DOUBLE(M,D)/DECIMAL(M,D),M表示总位数,D表示小数点后面有几位,M和D又称为精度和标度。

    2、mysql在保存值的时候,会进行四舍五入,例如float(7,4),当插入,999.00009 这个时候会显示999.0001

    3.FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

    双精度类型: DOUBLE

    8 16

    高精度类型:DECIMAL 变长  

    1.DECIMAL用于在数据库中存储精确的数值,FLOAT与DOUBLE在数据库中存放的是近似值

    2.DECIMAL(M,D)中M的范围是1〜65,D的范围是0~30

    在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数,浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。

    在今后关于浮点数和定点数的应用中,需要记住以下几点:

    参考:https://blog.csdn.net/qq_32823673/article/details/80410238

    1、浮点数存在误差问题;

    2、对货币等对精度敏感的数据,应该用定点数表示或存储;

    3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;

    4、要注意浮点数中一些特殊值的处理。

    3)字符类型

    类型

    说明

    最大长度

    用途
    char(n) 定长字符 255字节 定长字符串
    varchar(n) 变长字符 65535字节 变长字符串
    tinytext 大对象 255字节 短文本字符串
    text 大对象 65535字节 长文本数据

    知识点:

    1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节

    2.char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。

    3.超过char和varchar的n设置后,可能会出现报错或者是字符串的截断,跟MySQL的版本有关。

    4、char的上限为255字节,varchar的上限65535字节,text的上限为65535。

    5、char在存储的时候会截断尾部的空格,varchar和text不会。

    6、varchar会使用1-3个字节来存储长度,text不会。

    7.当varchar大于某些数值的时候,其会自动转换为text,大概规则如下:

    • 大于varchar(255)变为 tinytext
    • 大于varchar(500)变为 text

    所以对于过大的内容使用varchar和text没有太多区别。

    总结:

    • char,存定长,速度快,存在空间浪费的可能,会处理尾部空格,上限255。
    • varchar,存变长,速度慢,不存在空间浪费,不处理尾部空格,上限65535,但是有存储长度实际65532最大可用。
    • text,存变长大数据,速度慢,不存在空间浪费,不处理尾部空格,上限65535,会用额外空间存放数据长度,顾可以全部使用65535。

    字符串类型-----ENUM & SET

          ENUM类型最多运行65536个值,SET类型最多允许64个值,set类型一次可以选取多个成员,而ENUM则只能选一个,就相当于ENUM是单选,而set是复选

    • mysql> create table b ( user varchar(30),sex ENUM('male','female'));
    • Query OK, 0 rows affected (0.07 sec)
    • mysql> insert into b values( 'david','male');
    • Query OK, 1 row affected (0.01 sec)
    • Records: 1 Duplicates: 0 Warnings: 0
    • mysql> insert into b values( 'john','bmale');
    • ERROR 1265 (01000): Data truncated for column 'sex' at row 1

    4)日期类型

    类型
    大小
    (字节)
    范围
    格式
    用途
    DATE 3 1000-01-01~9999-12-31 YYYY-MM-DD 日期值
    TIME 3 '-838:59:59'~'838:59:59' HH:MM:SS 时间值或持续时间
    YEAR 1 1901~2155 YYYY 年份值
    DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
    TIMESTAMP 4

    1970-01-01 00:00:00 UTC~2038-01-19 03:14:07 UTC

    YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

    日期函数

    • NOW() 返回sql执行的时间
    • current_timestamp 与now()函数同义

    常用的创建包含create_time与update_time表的命令:

     
     

    create table test_time (id int(10) NOT NULL AUTO_INCREMENT ,

    name varchar(10),

    create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

    update_time datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,

    PRIMARY KEY (`id`));

  • 相关阅读:
    【LoadRunner-Vuser Generator】录制脚本设置Recording Options
    【LoadRunner-内部结构】
    【LoadRunner-工作过程】
    单片机上内存管理(重定义malloc free)的实现
    stm32模块的初始化顺序要求的更改设值
    [CAN波形分析] 一次CAN波形分析之旅
    w5500调试小记
    keil mdk中save和load指令,在调试中比较有用,以及hex格式的学习
    PHP启用session后抛 session_start(): open(/var/lib/php/session/sess_... 的解决办法
    brew 方式安装的php,关闭与重启----mac启动,关闭php-fpm方式
  • 原文地址:https://www.cnblogs.com/ting152/p/12450280.html
Copyright © 2020-2023  润新知