• (2)MySQL数据类型


    一.整数类型

    整数类型 字节数 默认显示宽度
    TINYINT 1 4
    SMALLINT 2 6
    MEDIUMINT 3 9
    INT 4 11
    INTEGER 4
    BIGINT 8 20
    • 支持 数据类型**(显示宽度)** 的写法,例如int(4)。若不指定,有默认的显示宽度。
    • 若使用int(zerofill)数字没有达到显示宽度的会被0填补,显示类型变为UNSIGNED,长度比默认显示宽度少1
    • 插入数据的长度若大于默认显示宽度,默认显示宽度就无效;但插入的数据不能大于该类型的最大值

    二.浮点数和定点数

    类型 字节数
    FLOAT 4
    DOUBLE 8
    DECIMAL(M,D)或DEC(M,D) M+2

    定点数DECIMAL的取值范围与DOUBLE相同,有效范围由M决定。可以用数据类型(M,D)指定浮点数,定点数精度。

    • M称为精度,数据的总长度,不算小数点
    • D称为标度,小数点后的长度
    • 虽然定义标准可以定义浮点数,但最好不要使用,因为会影响数据库迁移。
    • 若插入值精度大于默认精度,会进行四舍五入处理。DECIMAL(M,D)会有警告

    三.日期与时间类型

    为了方便存储时间而设计

    整数类型 字节数 取值范围 零值
    YEAR 1 1991~2155 0000
    DATE 4 1000-01-01~9999-12-31 0000:00:00
    TIME 3 -838.59.59~838.59.59 00:00:00
    DATETIME 8 1000-01-01 00:00:00~9999-12-31 23.59.59 0000-00-00 00:00:00
    TIMESTAMP 4 19700101080001~20380119111407 00000000000000

    3.1 YEAR类型

    • 输入4位字符串:插入的日期若超过范围,就会插入0000,并且出现警告
    • 输入2位字符串
    • 0069:对应20002069 ,PS:输入0也会对应2000
    • 7090:对应19701990
    • 输入2位数字
    • 0:对应0000
    • 169:对应20012069
    • 7099:对应19701999

    3.2 TIME类型

    1. 赋值格式:D HH:MM:SS 类型:字符串
      输入时可以任意输入 D HH HH:MM SS等都可以
    • D:天数,取值范围 0~34,保存时 $$HH=24*D+HH$$
      如输入'2 11:30:50',根据公式转换为'59:30:50'
    • HH:取值范围 0~23
    • SS,MM:取值范围 0~59
    1. 赋值格式:HHMMSS 类型:字符串或数值
    • 若输入323432,无论字符串或数值,转化为 32:34:32
    • 若输入0'0',输出0000:00:00
    1. 插入CURRENT_TIMENOW()输出现在的系统时间

    3.3 DATE类型

    • 字符串YYYY-MM-DDYYYYMMDD格式表示,YYYY年,MM月,DD日
    • 还支持用任何标点符号分割,如YYYY*MM*DD,YYYY@MM@DD
    • 字符串YY-MM-DDYYMMDD格式表示
    • YY 取 '00''69':对应20002069
    • YY 取 '70''99':对应19701999
    • 数字YYYYMMDDYYMMDD格式表示,YY取值如上
    • 插入CURRENT_DATENOW()输出现在的系统日期

    虽然可以用不标准的语法,但是实际中还是使用标准语法好

    3.4 DATETIME类型

    DATE+TIME 组合,去掉TIME类型的D
    YYYY-MM-DD HH:MM:SS标准写法用法与DATE类型一样

    只能用NOW()输出现在的系统日期时间

    3.5 TIMPSTAMP类型

    TIMPSTAMP类型的显示格式与DATETIME是一样的,只不过范围比DATETIME小
    区别:

    • TIMPSTAMP类型插入NOW()NULLCURRENT_DATESTAMP和无任何输入时候,都会输入系统当前的时间
    • 会根据不同时区来显示时间,缺点是范围太小

    四.字符串类型

    字符串类型包括:CHAR,VARCHAR,BLOB,TEXT,ENUM,SET

    4.1 CHAR与VARCHAR

    在建表的过程中指定了M-最大长度字符串类型(M)

    • CHAR: 长度0~255,即0 <= M <= 255
    • VARCHAR: 长度0~65535,如VARCHAR(100),不是每条记录都占100空间,而是在100空间内使用多少,分配多少$$实际占用空间=字符串长度+1$$

    4.2 TEXT类型

    TEXT只能保存字符数据

    整数类型 允许长度 存储空间
    TINYTEXT 0~255 值的长度+2字节
    TEXT 0~65535 值的长度+2字节
    MEDIUMTEXT 0~167772150 值的长度+3字节
    LONGTEXT 0~4294967295 值的长度+4字节

    4.3 ENUM类型

    又称为枚举类型,创建表的时候,其基本形式如下:
    属性名 ENUM('值1','值2',···'值n-1','值n')这些值末尾的空格会被自动删除

    插入时候:

    1.不加NOT NULL

    • 不指定插入值或者指定插入null,那插入的值为null
    • 插入时候会自动创建索引,插入null,索引为null;插入非指定值,索引为0

    2.加上NOT NULL

    • 不插入指定值:会插入值1,也就是第一个元素
    • 插入null,会报错

    若只能选取列表中一个值,用ENUM,但有多个值的话,就是用set,我们往下看

    4.4 SET类型

    格式:属性名 SET('值1','值2',···'值n-1','值n')细节与ENUM差不多,但是SET元素最高只有64位。与ENUM一样,插进去的每一个元素都有顺序的索引值,但插入的元素顺序无关紧要,例如你插入多个值,显示的数据会按照设定时候的顺序排序

    五.二进制类型

    整数类型 取值范围
    BINARY(M) 字节数为M,允许范围定长0~M的二进制字符串
    VARBINARY(M) 允许范围变长0~M的二进制字符串,字节为数值长度+1
    BIT(M) M位二进制数据,M最大值64
    TINYBLOB 可变长二进制数据,最多255字节
    BLOB 可变长二进制数据,最多(2^16-1)字节
    MEDIUMBLOB 可变长二进制数据,最多(2^24-1)字节
    LONGMBLOB 可变长二进制数据,最多(2^32-1)字节

    5.1 BINARY(M)与VARBINARY(M)

    BINARY(M)最大长度已经固定,不足的由补全,而VARBINARY(M)自动增加不用。

    5.2 BIT与BLOB

    BIT没什么好说的插入的是二进制
    BLOB是一种特殊的二进制类,可以保存数据量很大的二进制,比如图片、PDF文档、MP3,其与TEXT很像,不过操作的数据类型不同。

    六.如何使用BOOLEAN型数据?

    在MySQL中,BOOL与BOOLEAN类型等价于TINYINT(1)

  • 相关阅读:
    【每日一具12】超级好用的录屏软件,赶紧收藏
    【每日一具12】超级好用的录屏软件,赶紧收藏
    python之K-邻近算法/kNN(附上注解代码)
    数据挖掘领域十大经典算法之—K-邻近算法/kNN(超详细附代码)
    【每日一具11】一款图片文件漂白软件
    python实现全北京的公交路线动图【一定收藏】
    【每日一具11】一款图片文件漂白软件
    一个典型的加了 SAP 注解的 OData 服务明细分析
    如何以 mock server 的方式本地启动 SAP UI5 应用,使它不连接服务器端 OData 服务
    深入掌握 SAP Fiori Elements 工作原理系列之二:如何给 Fiori Elements 应用添加自定义按钮
  • 原文地址:https://www.cnblogs.com/ikonon/p/7786807.html
Copyright © 2020-2023  润新知