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. Win10子系统Ubuntu安装nginx (win10 安装 nginx)

    更新仓库,下载nginx: sudo apt update sudo apt install nginx 检查版本: nginx –v 启动服务: sudo  nginx sudo  service ...

  2. Jquery 分页案例

    Jquery    分页案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...

  3. 使用 CocoaPods 遇到的问题记录

    1. 在 Terminal 输入 Cocoapods 命令时,有时会一直等待,出现“Performing a deep fetch of the `master` specs repo to impr ...

  4. ORACLE varchar2类型的字段更改为clob

    将varchar2类型字段改成clob类型    --增加临时新字段 alter table base_temp add temp clob; --将需要改成大字段的项内容copy到大字段中updat ...

  5. Nodejs 开发 随手记

    console.log(Object.prototype.toString.call(Now.toString())); //类型判断

  6. Day11 - I - 取石子游戏 HDU - 2516

    1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出"Second win".先取者胜输出&q ...

  7. MyBatis 配置文件详解

    根元素<configuration>,子元素: <properties> <setttings> <typeAliases> <typeHandl ...

  8. EMR 配置纪录(不断更新)

    日志路径 -> /var/log(软连接到 /mnt/var/log) 在 spark master 机器中,配置的路径为 /usr/lib/spark/conf /usr/lib/hadoop ...

  9. C#二维数组的初始化和存取

    static void Main(string[] args) { ,]; ; j < ; j++) { strings[j, ] = $"{j}.0"; strings[j ...

  10. 小陈WEB漏洞扫描器 V2.0

    小陈WEB漏洞扫描器 V2.0 小陈WEB漏洞扫描器 V2.0 https://pan.baidu.com/s/1NSmFCyxowEa3YlOuhvtwwQ