Home  >  Article  >  Database  >  mysql数据类型与存储

mysql数据类型与存储

WBOY
WBOYOriginal
2016-06-07 16:41:541081browse

http://dev.mysql.com/doc/refman/5.5/en/data-types.html 最近在做oceanbase与mysql的数据类型兼容工作,仔细看了下mysql的数据类型 mysql支持的数据类型分类: 1)numeric 2)date and time 3)string(character and byte) 4)spatial 1.numeric 1)Intege

http://dev.mysql.com/doc/refman/5.5/en/data-types.html

最近在做oceanbase与mysql的数据类型兼容工作,仔细看了下mysql的数据类型

mysql支持的数据类型分类:

1)numeric

2)date and time

3)string(character and byte)

4)spatial

1.numeric

1)Integer Types(exact value)—INTERGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT

    TINYINT[(M)] [UNSIGNED] [ZEROFILL] 

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

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

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

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

UNSIGNED:无符号类型,默认为SIGNED

ZEROFILL:数字长度不够的数据前面填充0,如果设置了,则默认为UNSIGNED类型。

SERIAL:BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE

    M:显示宽度

    mysql数据类型与存储1

2)Fixed-Point Types (Exact Value) – DECIMAL, NUMERIC

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

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

    NUMERIC是通过DECIMAL实现的

    DECIMAL(precision,scale)

    precision:有效数字位数

    scale:小数点后的位数

    DECIMAL(M)相当于DECIMAL(M,0)

    DECIMAL相当于DECIMAL(M)

    M默认为10,M最大值为65

    D默认为0,最大值为30

3)Floating-Point Types (Approximate Value) – FLOAT, DOUBLE

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

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

    FLOAT使用4个字节

    DOUBLE使用8个字节

    M表示最多可以存多少个数字,D表示小数点后的位数

4)Bit-Value Type – BIT

BIT[(M)]

    M表示存储的位数

    M的范围是1~64

    实例:b'110001'

    转换:b'101' BIT(6) b'000101'

    BOOL,BOOLEAN

    等同于TINYINT(1)

    0表示false,非0值表示true

5)存储字节数

    mysql数据类型与存储2

2.date and time

1)DATE, DATETIME, TIMESTAMP

    ->DATE

        日期格式

        范围:'1000-01-01' to '9999-12-31'

        显示格式:'YYYY-MM-DD'

        允许strings或number格式转换成DATE类型

    ->DATETIME

        日期+时间

        范围:'1000-01-01 00:00:00' to '9999-12-31 23:59:59'

        显示格式:'YYYY-MM-DD HH:MM:SS'

    ->TIMESTAMP

        时间戳

        范围:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC

        存储格式为从'1970-01-01 00:00:01'开始的秒数

2)TIME

    时间

    范围:'-838:59:59' to '838:59:59'

    显示格式:'HH:MM:SS'

3)YEAR[(2|4)]

    2个数字或4个数字

    2个数字范围:70~69

    4个数字范围:1970~2069

    显示格式:YYYY or YY

4)存储字节数

    3

3.string

    CHARACTER:字符集

    COLLATE:校验算法

    ASCII:CHARACTER SET latin1.

    UNICODE:CHARACTER SET ucs2.

1)CHAR,VARCHAR

    [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

    [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

    charM范围:0~255,默认为1

    varcharM范围:0~65535

2)BINARY,VARBINARY

    BINARY(M)

VARBINARY(M)

    同CHAR,VARCHAR,但是存储的是二进制类型

3)BLOB,TEST

TINYBLOB 二进制类型,最多支持255个字节,每个value用一个字节前缀表示字节数

BLOB[(M)] 二进制类型,最多支持65535个字节,每个value用两个字节前缀表示字节数

    MEDIUMBLOB 二进制类型,最多支持16777215个字节(2^24-1)字节,用3个三字表示字节数

    LONGBLOB 二进制类型,最多支持 4,294,967,295个字节(2^32-1)字节,用4个三字表示字节数

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

文本类型,最多支持255个字节,每个value用一个字节前缀表示字节数

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

文本类型,最多支持65535个字节,每个value用两个字节前缀表示字节数

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

文本类型,最多支持16777215个字节(2^24-1)字节,用3个三字表示字节数

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

文本类型,最多支持 4,294,967,295个字节(2^32-1)字节,用4个三字表示字节数

4)ENUM

ENUM('value1','value2',…) [CHARACTER SET charset_name] [COLLATE collation_name]

枚举类型,在内部是以整数实现的。最多支持65535个元素

5)SET

    SET('value1','value2',…) [CHARACTER SET charset_name] [COLLATE collation_name]

可以有0个或多个值,在内部是以整数实现的。

6)存储字节数

mysql数据类型与存储4

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn