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

    CURRENT_TIMESTAMP  字段设置后 当insert数据时 mysql会自动设置当前系统时间 赋值给该属性字段

    ON UPDATE CURRENT_TIMESTAMP 字段设置后 当update数据时 并且 成功发生更改时 mysql会自动设置当前系统时间 赋值给该属性字段

     

     

  • 相关阅读:
    042.hiveLEFT SEMI JOIN 、 left anti join、inner join、full join
    032.hive rollup 、 with cube 、 grouping sets
    023.linuxshell抽取文本中某几行插入到另一个文
    041.mysql查询mysql元数据来格式化datax同步脚本,查询语句、拼接的json语句dataxmysql到hive
    33.hivecollect_set组合数组(数组内去重) 、array_contains 判断数组内是否又某个值返回布尔类型、concat_ws
    vue vant组件库 card组件 修改 thumb属性的图片 参数后不及时刷新解决
    idea 警告 The IDE is running low on memory and this might affect performance. Please consider increasing available heap. 解决
    尺子控件WinForm控件开发系列
    自定义形状按钮WinForm控件开发系列
    code ERESOLVE, ERESOLVE could not resolve
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/11813316.html
Copyright © 2020-2023  润新知