zoukankan      html  css  js  c++  java
  • 04 MySQL数据类型

    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' , c='a' 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'
            
     
  • 相关阅读:
    求Mac 的adt插件!
    前端ajax异步传值以及后端接收参数的几种方式
    在eclipse中使用git clone 别人共享在Github的代码和上传到自己的仓库!
    Tomcat 配置虚拟路径保存、访问图片
    sssp-springmvc+spring+spring-data-jpa问题总结
    redis整合异常总结
    sssp-springmvc+spring+spring-data-jpa增删改查
    ssm+PageHelper实现分页查询
    微信小程序异常解析
    CentOS 7.4中firewall防火墙详解和配置以及切换为iptables防火墙
  • 原文地址:https://www.cnblogs.com/lmxxlm-123/p/11131928.html
Copyright © 2011-2022 走看看