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

    MySQL 的数据类型包括:

    • 数字类型(Numeric Type)
    • 日期和时间类型(Date and Time Type)
    • 字符串类型(String Type)

    一、 数字类型(Numeric Type)

    我们用 M 表示整数类型的最大显示宽度,最大的显示宽度是255,显示宽度与数据类型能表示的范围无关。

    数字类型允许 UNSIGNED(无符号,大于等于0) 和 SIGNED(有符号,默认) 的属性。

    SERIAL 是  BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 的别名,你可以这样创建表:

    create table b(a serial);
    
    show create table b;
    +-------+--------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                                         |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------+
    | b     | CREATE TABLE `b` (
      `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      UNIQUE KEY `a` (`a`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------+

    BIT(M):M 取值  1到64,默认为1 。以二进制格式插入:

    > insert into bit values (b'110000');
    > select bin(a),a+0,a from bit;
    +--------+------+------+
    | bin(a) | a+0  | a    |
    +--------+------+------+
    | 110000 |   48 | 0    |
    +--------+------+------+

    注:bit(8) 占用空间比 tinyint 少,但 bit 不能存储负数。

    TINYINT[(M)]  [UNSIGNED]  [ZEROFILL],signed 取值:-128到127,unsigned 取值:0到255 。

    BOOL, BOOLEAN:布尔类型,此类型跟 TINYINT(1)的同义。 值为0被认为是错误的,非0值被认为是正确的。TRUE=1 and FALSE=0,其他值既不等于true也不等于false。

    SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

    MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

    INT[(M)] [UNSIGNED] [ZEROFILL]

    INTEGER[(M)] [UNSIGNED] [ZEROFILL]

    BIGINT[(M)] [UNSIGNED] [ZEROFILL]

    DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

    FLOAT(p) [UNSIGNED] [ZEROFILL]

    二、 日期和时间类型(Date and Time Type)

    DATE  The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format.

    DATETIME[(fsp)]    fsp:fractional seconds part 秒的小数部分。The supported range is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'. MySQL displays DATETIME values in 'YYYY-MM-DD HH:MM:SS[.fraction]' format 

    TIMESTAMP[(fsp)]    A timestamp. The range is '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC.

    TIME[(fsp)]    The range is '-838:59:59.000000' to '838:59:59.000000'. MySQL displays TIME values in 'HH:MM:SS[.fraction]' format

    YEAR[(4)]     MySQL displays YEAR values in YYYY format,Values display as 1901 to 2155, and 0000.

    三、 字符串类型(String Type)

    [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]  固定长度的字符串,存储时用空格填充。 The range of M is 0 to 255. If M is omitted, the length is 1.  M 表示可以存储的字符的个数(M represents the column length in characters),在utf8mb4字符集下,一个汉字是一个字符,即char(4) 可以存储4个字符或4个汉字。

    一个汉字占多少长度与编码有关:

    • UTF8:一个汉字=3个字节
    • GBK:一个汉字=2个字节

    [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]    一个可变长度的字符串。 M代表以字符计算的最大列长度。 M的范围是0到65,535。 VARCHAR的有效最大长度取决于最大行大小(65,535字节,在所有列中共享)和使用的字符集。 例如,utf8字符每个字符最多可能需要三个字节,因此使用utf8字符集的VARCHAR列可以声明为最多21,844个字符。varchar(n) 表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别。

    BINARY(M)    BINARY类型与CHAR类型相似,但存储二进制字节字符串而不是非二进制字符串。 M表示以字节为单位的列长度。如 binary(2) ,utf8 字符集,不能存储 1 个汉字,因为utf8字符集下一个汉字需要3个字节。

    VARBINARY(M)    VARBINARY类型类似于VARCHAR类型,但是存储二进制字节字符串而不是非二进制字符串。 M表示以字节为单位的最大列长度。

    TINYBLOB 最大存储255个字节,每个TINYBLOB值都使用一个1字节长度的前缀来存储该值所占的字节数。

    TINYTEXT 最大存储255个字符,每个TINYTEXT值都使用一个1字节长度的前缀来存储该值所占的字节数。

    BLOB[(M)] 最大存储65,535(2^16 − 1)个字节,每个BLOB值都使用一个2字节长度的前缀来存储该值所占的字节数。

    TEXT[(M)] 最大存储65535(2^16 − 1)个字符,每个TEXT值都使用一个2字节长度的前缀来存储该值所占的字节数。

    MEDIUMBLOB 最大存储16,777,215(2^24 − 1)个字节,每个BLOB值都使用一个3字节长度的前缀来存储该值所占的字节数。

    MEDIUMTEXT 最大存储16,777,215(2^24 − 1)个字符,每个TEXT值都使用一个3字节长度的前缀来存储该值所占的字节数。

    LONGBLOB 最大存储4GB(2^32 − 1)个字节,每个BLOB值都使用一个4字节长度的前缀来存储该值所占的字节数。

    LONGTEXT 最大存储4GB(2^32 − 1)个字符,每个TEXT值都使用一个4字节长度的前缀来存储该值所占的字节数。

    ENUM('value1','value2',...)   枚举类型,只能从列表中选一个值。如 info enum('6','男','34','女'),只能在 info 列插入 '6','男','34','女' 这4个值,也可以用数组方式插入,如values(1)表示values('6'),values(4)表示values('女'),values(5)则会报错。

    SET('value1','value2',...)   集合,可以有0个或多个值(最多64的不同的members),必须从列表中('value1','value2',...)选择。

    参考: 《 refman-5.7 》Chapter 12 Data Types

  • 相关阅读:
    超详细从零记录Hadoop2.7.3完全分布式集群部署过程
    hadoop学习之hadoop完全分布式集群安装
    Fine-tune with Pretrained Models
    Module
    Symbol API
    Gluon parameters 和 Blocks 命名
    mxnet 数据读取
    Adversarial Latent Autoencoders
    A New Meta-Baseline for Few-Shot Learning
    Deploy a plain HTTP registry
  • 原文地址:https://www.cnblogs.com/waynechou/p/mysql_datatype.html
Copyright © 2011-2022 走看看