• MySQL字段的数据类型


    整型

    类型

    占用字节

    无符号范围

    有符号范围

    数据长度(几位数)

    tinyint

    1

    0 ~ 255

    -128 ~ 127

    3

    smallint

    2

    0 ~ 65535

    -32768 ~ 32767

    5

    mediumint

    3

    0 ~ 16777215

    -8388608 ~ 8388608

    8

    int

    4

    0 ~ 2^32

    -2^31 ~ 2^32-1

    10

    bigint

    8

    0 ~ 2^64

    -2^63 ~ 2^63-1

    20

    浮点型和定点型

    1. MySQL中使用浮点数类型和定点数类型来表示小数
    2. 浮点数类型包括单精度浮点数(float型)和双精度浮点数(double型)。定点数类型就是decimal型。
    3. Decimal型的取值范围和double相同。但是decimal的有效取值范围由M和D决定,而且Decimal型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的

    数据类型

    存储需求

    有符号

    无符号

    FLOAT(单精浮点数)

    4

    -3.402823466E+38 ~ -1.175494351E-38

    0和1.175494351E-38~3.402823466E+38

    DOUBLE(双精浮点数)

    8

    -1.7976931348623157E+308~-2.2250738585072014E-308

    0和2.2250738585072014E-308 ~ 1.7976931348623157E+308

    DECIMAL(M,D)

    或DEC(M,D)(定点数)

    M > D,大小M + 2

    M < D,大小D + 2

    同DOUBLE

    同DOUBLE

    1、Decimal型的取值范围和double相同。但是decimal的有效取值范围由M和D决定,而且Decimal型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。
    
    2、MySQL中可以指定浮点数和定点数的精度。其基本形式如下:数据类型(M,D)。其中,“数据类型”参数是浮点数或定点数的数据类型名称,M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D。M的默认值是10,最大值65,D的默认值是0,最大值30
    
    3、对于定点数而言,decimal(M,D)是定点数的标准格式,一般情况下可以选择这种数据类型。
    4、如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。

    字符串类型

    char(64)

    1、定长字符,指定长度后,系统一定会分配指定的空间存储数据
    2、基本语法:char(L),L代表字符数(中文与英文字母一样),L长度为0到255

    varchar(64)

    1、变长字符,指定长度后,系统会根据实际存储需要来计算长度
    2、基本语法:varhcar(L),L代表字符数,L的长度理论值0到65535
    3、因为varchar要根据系统自动分配空间记录数据长度,所以每个varchar数据产生后,系统会在数据后面增加1-2个字节的额外开销,用来保存数据所占用的空间长度
    4、如果数据本身小于255个字符,额外开销一个字节;如果大于255个字符,额外开销两个字节

    一个索引列的长度不能超过255字符(765个字节)(对于中文,一个中文占3个字节),utf8mb4中是4个字节

    一般都定义为varchar(190)

    char和varchar的区别

    1、  当插入一条空数据的时候,Varchar占用1个字节来描述这条数据长度,而char则占用固定的4个字节,也就是4个空格
    2、  char的插入数据效率比varchar高,varchar需要通过记录数来计算

    选型

    • 如果确定数据的长度、字符很短、经常发生变更,使用char,否则使用varchar
    • 如果数据长度超过255个字符,不论是否固定长度,都会使用text

    文本类型

    文本类型:
    Text:存储普通字符文本
    Blob:存储二进制文本(图片,文件),一般不用,通常使用一个链接指向对应的文件本身
    注意:
        1、在选择对应的存储文本的时候,不要刻意使用text,因为系统会自动根据存储的数据长度选择合适的类型
        2、在选择字符存储的时候,如果数据超过255个字符,一定要选择text存储

    枚举类型enum

    枚举类型
        如果确定某个字段的数据只有固定的几个值,可以使用enum
    基础语法:
    enum(数据值1,数据值2) create table t1(sex enum('F','M','UN'));

    集合类型set

    集合:将多个数据选项可以同时保存的数据类型,本质是将指定的项按照对应的二进制位来进行控制,1表示被选中,0表示没有被选中
    基本语法:
        set('值1','值2','值3')

    系统为set提供了多个字节进行保存,系统会自动计算选择具体的存储单元

    1个字节,set只能存储8个选项

    2个字节,set只能存储16个选项

    3个字节,set只能存储24个选项

    8个字节,set只能存储64个选项

    enum:单选(只能插入一个)

    set:复选(可以插入多个)

    时间类型

    类型

    大小

    (字节)

    范围

    格式

    用途

    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 ~ 2038-1-19 11:14:07

    YYYYMMDD

    HHMMSS

    混合日期和时间值,时间戳

    列约束及属性

    primary key :主建约束,同时保证唯一性和非空.每个表只能有一个PK,我们建议业务无关列(数字列)。
    foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值。
    not null :非空约束,保证字段的值不能为空
    default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值
    unique:唯一,保证唯一性但是可以为空,比如手机号。
    auto_increment:自增长列
    unsigned: 无符号
    comment: 注释
  • 相关阅读:
    FZU 1683 纪念SlingShot ★(矩阵 && 求和 && 线性变换)
    POJ 2356 Find a multiple (鸽巢原理)
    HDU 1568 Fibonacci ★(取科学计数法)
    POJ 2356 Find a multiple (鸽巢原理)
    POJ 1222 & 1681 & 1830 & 3185 开关灯问题 (高斯消元 & 异或方程组)
    HDU 1588 Gauss Fibonacci ★(矩阵 && 求和)
    HDU 1568 Fibonacci ★(取科学计数法)
    C#数据绑定技巧
    AHP分析
    AHP分析
  • 原文地址:https://www.cnblogs.com/zh-dream/p/12961522.html
Copyright © 2020-2023  润新知