MySQL的数据类型

数据类型:

  1. 整数

    类型 大小 范围(有符号) 范围(无符号) 用途
    TINYINT 1 字节 (-128,127) (0,255) 小整数值
    SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 字节
    BIGINT 8 字节

    注意事项:

    1. 默认情况,整数是有符号的,(可通过unsigned去设置为无符号整型)

    2. 存入的数据值 超过数据类型表示的最大范围时,会自动取最大值。

      • 查看局部环境变量,即当前连接的环境变量。@@,例如:select @@sql_mode;

      • 查看全局环境变量,即所有连接的环境变量。@ ,例如:select @sql_mode;

      • 解决办法:设置严格模式(可写入配置文件)。

         set sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"
        

      指定长度:int(长度)

  2. 浮点

    类型 大小 范围(有符号) 范围(无符号) 用途
    FLOAT 4 字节 可以精确到大约5位 单精度
    浮点数值
    DOUBLE 8 字节 比float更精确 双精度
    浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2。M最大为65,D最大为30 小数值
  3. 字符串

    类型 大小 特点 优点 用途
    CHAR 0-255字节 定长 效率高,消耗空间 定长字符串
    VARCHAR 0-65535 字节 可变长度 效率低,节省空间 变长字符串
    BLOB 0-65 535字节 二进制形式的长文本数据
    TEXT 0-65 535字节 长文本数据
    LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
    LONGTEXT 0-4 294 967 295字节 极大文本数据

    mysql一般不存储大型的多媒体数据,一般都存储媒体数据的地址指向其他服务器的地址。

    PS:char(10) 表示存储10个字符;int(10) 表示显示的数据长度。如下示例:

    # 创建t9表
    mysql> create table t9 (age int(3));
    Query OK, 0 rows affected (0.46 sec)
    
    mysql> insert into t9 values(1);
    Query OK, 1 row affected (0.04 sec)
    
    mysql> insert into t9 values(1111);
    Query OK, 1 row affected (0.29 sec)
    
    # 能插入大于3位的整数
    mysql> select * from t9;
    +------+
    | age  |
    +------+
    |    1 |
    | 1111 |
    +------+
    2 rows in set (0.00 sec)
    
    # 更改age字段的属性
    mysql> alter table t9 modify age int zerofill;
    Query OK, 2 rows affected (0.79 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from t9;
    +------------+
    | age        |
    +------------+
    | 0000000001 |
    | 0000001111 |
    +------------+
    2 rows in set (0.00 sec)
    
    # 更改age字段的属性
    mysql> alter table t9 modify age int(4) zerofill;
    Query OK, 0 rows affected (0.30 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> select * from t9;
    +------+
    | age  |
    +------+
    | 0001 |
    | 1111 |
    +------+
    2 rows in set (0.00 sec)
    
    # 由此可见,int(4)表示显示4位长度数据时,不足的部分是被填充了,再我们使用zerofill约束之后,观点得到了验证
    
  4. 日期和时间和时间戳

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

    TIMESTAMP类型,同列的字段被更改之后,类型为TIMESTAMP的字段时间会被更新

  5. 枚举和集合

    集合

    类型 大小 最大成员数量 范围(无符号) 用途
    set 1/2/3/4/8,取决与集合成员的数量 64

    特点:

    ​ 可一选多

    枚举

    类型 大小 最大成员数量 范围(无符号) 用途
    enum 1or2,取决枚举成员的数量 65535

    特点:

    ​ 只能一选一

原文地址:https://www.cnblogs.com/plf-Jack/p/11170153.html