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. Java基础 -3.5

    我觉得上一篇不是很严谨啊 我认为这个逻辑还是正确的 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 如果没有特别的说明,Java 中的数据类型默认为int,int数据类 ...

  2. c数据结构线性表的总结

    1:连表的特点   1.链表是一种存储结构,用于存放线性表   2.连表的结点是根据需要调用动态分配内存函数进行分配的,因此链表可随需要伸长缩短      在腰存储的数据个数未知的情况下节省内存.   ...

  3. [USACO 08MAR]土地购买

    Description 题库链接 给你 \(n\) 块不同大小的土地.你可分批购买这些土地,每一批价格为这一批中最大的长乘最大的宽.问你买下所有土地的花费最小为多少. \(1\leq n\leq 50 ...

  4. c语言中“#if 0 / #if 1 ... #endif”的作用

    原帖地址:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=2028608&bbs_page_no=1005&bbs_id=9999 1. ...

  5. 思科 ASA 系列防火墙 官方文档下载指南

    思科 ASA 系列命令参考 思科 ASA 系列命令参考,A 至 H 命令 思科 ASA 系列命令参考, I 至 R 命令 思科 ASA 系列命令参考,S 命令 思科 ASA 系列命令参考, ASASM ...

  6. Python 数据的输入

    一.单个输入 a=input("输入提示语句")#默认a的类型是字符串 b=input() 二.一行输入两个/三个数据,数据之间用空格间隔开 #a,b的数据类型都是整数 a,b=m ...

  7. jwt 认证

    目录 jwt 认证示意图 jwt 认证算法:签发与检验 drf 项目的 jwt 认证开发流程(重点) drf-jwt 框架基本使用 token 刷新机制(了解) jwt 认证示意图 jwt 优势 1 ...

  8. mysql设置timpstamp的默认值为 '0000-00-00 00:00:00' 时报错

    问题:mysql设置timpstamp的默认值为 '0000-00-00 00:00:00' 时报错: ERROR 1067 (42000): Invalid default value for 'u ...

  9. 奇异值分解(SVD)和主成分分析(PCA)

    参考: 奇异值分解:https://www.cnblogs.com/endlesscoding/p/10033527.html 主成分分析:https://blog.csdn.net/program_ ...

  10. 070、Java面向对象之深入贯彻对象引用传递

    01.代码如下: package TIANPAN; class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 public ...