首頁  >  文章  >  資料庫  >  mysql数据类型与存储

mysql数据类型与存储

WBOY
WBOY原創
2016-06-07 16:41:541082瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn