mysql学习笔记--数据类型

一、整型

  1. 有符号整型

    类型    字节    范围

    TINYINT     1    -27 ~ 27-1

    SMALLINT  2    

    MEDIUMINT    3    

    INT     4

    BIGINT    5

  2. 无符号整型:unsigned

  3. 支持显示宽度 int(5), 必须结合zerofill使用

二、浮点型

  1. 类型

    float(单精度)  4字节  

    double(双精度)  8字节

  2. 浮点数声明:float(M, D), double(M, D), 总位数是M,小数位数是D,整数位数为M-D,如果精度超出了小数范围,会四舍五入

  3. 浮点数存的是近似数,精度可能丢失。

三、定点数

  1. 类型

    decimal(M, D), 总位数是M,小数位数是D,整数位数是M-D

  2. 定点数是变长的

  3. 浮点数和定点数都支持显示宽度和无符号数。

四、字符型

  1. 类型

    char(长度)  定长  最大255

    varchar(长度)  变长  最大65535

    tinytext     大段文本  255

    text     大段文本  65535

    mediumtext  大段文本  224 - 1

    longtext    大段文本  232 - 1

  2. char和varchar的区别

    相同点:它们最多能保留10个字符

    不同点:char不回收富余字节,varchar会回收富余字节。char效率高,浪费内存,varchar节省空间,效率比char低。

  3. char的最大长度为255,varchar最大长度为65535,实际根本达不到,具体长度和字符编码有关。

  4. 一个记录总长度不能超过65535个字节

  5. 大块文本不计算在总长度中,一个大块文本只占用10个字节来保存文本的地址。

五、枚举(enum)

  1. 从集合中选择一个数据(单选)

  2. mysql的枚举类型是通过整数来管理的,第一个值是1,第二个值是2,以此类推。既然枚举类型是数字,那么可以直接插入数字。

  3. 枚举的优点:

    a. 运行速度快(数字比字符串运行速度快)

    b. 限制数据,保证数据完整性

    c. 节省空间

六、集合(set)

  1. 从集合中选择一些数据(多选)

  2. 插入的顺序不一样,但显示的顺序是一样的

  3. 插入集合中没有的选项会报错

  4. 每个集合的元素都分配一个固定的值,分配的方式从左往右按2的0、1、2 ...次方

  5. 如果是多选,它们的关系是按位或

七、日期类型

  1. 类型

    datetime      日期时间,占用8个字节

    date        日期,占用3个字节

    time        时间,占用3个字节

    timestamp      时间戳,占用4个字节

    year        年份,占用一个字节

  2. datetime格式:年 - 月 - 日 小时:分钟:秒

八、boolean类型

  1. mysql不支持bool类型,true和false在数据库中对应1和0