MySQL支持的数据类型
 
1.数值类型:
 
    a.整数类型 
 
TINYINT 1字节
有符号(-128~127);
无符号(0~255)
SMALLINT 2字节 
有符号(-32768~32767);
无符号(0~65535)
MEDIUMINT 3字节  
INT , INTEGER 4字节  
BIGINT 8字节  
                    
    b.浮点类型
 
FLOAT 4字节  
DOUBLE 8字节  
 
 c.定点数类型    
 
DEC(M,D) (M+2)字节  
DECIMAL(M,D) (M+2)字节  
 
d.位类型
 
BIT(M) 1~8字节 BIT(1)~BIT(64)
 
 
⚠️注意:
    1).AUTO_INCREMENT 属性只能定义在整数类型的column上,并且该字段要定义为NOT NULL 以及必须是PRIMARY KEY 或者是UNIQUE ;
    2).如果某一列定义ZEROFILL, 那么MySQL会自动添加UNSIGNED属性,即该列是无符号的。
    3).定位数中, M代表:一共显示M位数字;D是指小数位有D个数字;
       浮点数使用 (M,D)这种用法是非标准的,如果进行数据库的迁移,最好不要这么使用.
       FLOAT和DOUBLE的默认精度是由硬件和操作系统决定的;DECIMAL默认整数位为10,小数位为0;
       如果插入数据范围超过了限制范围(小数部分)
        如果是浮点型,会进行四舍五入
        如果是定位型,在SQLMode模式下无法插入记录;在非SQLMode模式,会弹出warning,数据按照四舍五入
       ;整数部分应该会报错 todo;
    4).BIT(M),M取值范围1~64,默认为1.用于保存二进制数据.例如BIT(1) 可以保存0和1,但是无法保存2,因为2在二进制中是10,占两位,报错;
        使用SELECT不能直接正常显示BIT类型数据,序号借助BIT() 或HEX()函数进行显示.
 
    
2.日期类型
 
DATE 4字节
DATETIME 8字节
TIMESTAMP 4字节
TIME 3字节
YEAR 1字节
 
注意:
    表中第一个TIMESTAMP类型的数据默认值为CURRENT_TIMESTAMP,后面如果还有该类型,默认值为0;
也就是说一个表中最多只能有一个默认值为CURRENT_TIMESTAMP的TIMESTAMP类型的字段.
    TIMESTAMP 会受时区影响,而DATETIME不会.
    SHOW VARIABLES LIKE 'time_zone' ;
    SET time_zone = '+9:00';
    TIMESTAMP最多能存到2038年的某一天,所以不适合存太久远的时间.如果溢出,系统会使用0000-00-00 00:00:00 进行填补.
 
 
3.字符串类型    
 
CHAR(M) M字节 M取值范围:0~255
VARCHAR(M)     M取值范围:0~65535
TINIBLOB    
BLOB    
MEDIUMBLOB    
LONGBLOB    
TINYTEXT    
TEXT    
MEDIUMTEXT    
LONGTEXT    
VARBINARY(M)    
BINARY(M) M字节  
NOTE :
    CHAR类型会去掉数据后面的空格;VARCHAR类型则会保留.
 
    BINARY和VARBINARY 与CHAR/VARCHAR 区别是前者包含二进制字符串,而后者不包含
        CREATE TABLE t (c BINARY(3)) ;
        INSERT INTO t SET c='a'; --注意插入语句与数值型的不同
        SELECT * , HEX(c) , c='a' , c='a\0' , c='a\0\0' FROM t ;
 
4.枚举类型ENUM
    对于第1~255个成员的枚举,需要1个字节存储;
    对于255~65335个成员需要2个字节来存储.
 
    枚举类型对数据是忽略大小写的.
    如果插入不在范围,则默认插入第一个值.
 
    ENUM类型只允许从值集合中选取单个值,不可以一次取多个值.
 
        CREATE TBALE t (gender ENUM('M','F'));
        INSERT INTO t VALUES('M'),('1'),('f'),(NULL);
    
 
5.SET类型
    存储方式:
 
1~8个成员 占1个字节
9~16个成员 占2个字节
17~24个成员 占3个字节
25~32个成员 占4个字节
33~64个成员 占8个字节
 
    SET类型与ENUM类型除了存储方式,最大的区别就是 SET可以一次性选取多个成员.
 
        CREATE TBALE t (col SET('a','b','c','d'));
        INSERT INTO t VALUES('a,d,a'),('a,b'),('c');
        --其中'a,d,a'会被去重,真正存储的是'a,d'
        
 

04 MySQL数据类型的更多相关文章

  1. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  2. 浅谈MySQL数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...

  3. mysql数据类型(三)

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...

  4. Mysql 数据类型、约束类型

    mysql数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型.   数值类型 MySQL支持所有标准 ...

  5. MySQL数据类型以及基本使用详解

    MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...

  6. 数据库-mysql数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...

  7. 2-14-2 MySQL数据类型

    MySQL数据类型: 对数据进行分类,针对不同分类进行不同的处理. 1. 使系统能够根据数据类型来操作数据. 2. 预防数据运算时出错. 3. 更有效的利用空间. 数据分类,可以使用最少的存储,来存放 ...

  8. 2.MySQL 数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...

  9. 八、MySQL 数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...

随机推荐

  1. Systemverilog for design 笔记(三)

    转载请标明出处 用户自定义和枚举数据类型 1. 用户自定义类型(typedef) 局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中 共享typ ...

  2. 问题解决 : MyBatis一对一查询时,打印结果只有一条数据

    问题截图:修改后,结果返回条数正确 问题解决: 因为有重名的列,建议起个别名

  3. PHP开发者该知道的5个Composer小技巧

    Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 co ...

  4. sklearn调用SVM算法

    1.支撑向量机SVM是一种非常重要和广泛的机器学习算法,它的算法出发点是尽可能找到最优的决策边界,使得模型的泛化能力尽可能地好,因此SVM对未来数据的预测也是更加准确的. 2.SVM既可以解决分类问题 ...

  5. Netty实现原理和使用

    参考: https://www.jdon.com/concurrent/netty.html Java NIO原理和使用 参考:https://www.jdon.com/concurrent/nio% ...

  6. 5.8 Nginx 常用功能的配置

  7. SQL Server DATEADD() 函数 一步步使用教程

    SQL Server DATEADD() 函数 DATEADD() 函数在日期中添加或减去指定的时间间隔. DATEADD(datepart,number,date)date 参数是合法的日期表达式. ...

  8. Jquery动画效果设置大全

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 17 MySQL的小技巧

    1.正则表达式的使用   ^ 在字符串开始处进行匹配 $ 在字符串末尾处进行匹配 . 匹配任意单个字符,包括换行符 [...]  匹配出括号内的任意字符 [^...]  匹配不出括号内的任意字符 a* ...

  10. docker-lnmp 多容器部署 Laravel 方案分享(转)

    docker lnmp 多容器部署方案.完全基于 docker 官方镜像,遵循最佳实践,一容器一进程. github 项目地址 https://github.com/March7/docker-lnm ...