字符串
字符串指用单引号(‘'’)或双引号(‘"’)引起来的字符序列
在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:
\0
ASCII 0(NUL)字符。
\'
单引号(‘'’)。
\"
双引号(‘"’)。
\b
退格符。
\n
换行符。
\r
回车符。
\t
tab字符。
\Z
ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。
\\
反斜线(‘\’)字符。
\%
‘%’字符。参见表后面的注解。
\_
‘_’字符。参见表后面的注解。
这些序列对大小写敏感。例如,‘\b’解释为退格,但‘\B’解释为‘B’。
NULL值
NULL值表示“没有数据”。NULL可以写成大写或小写。
请注意NULL值不同于数字类型的0或字符串类型的空字符串。
整数类型
M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关,
如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名。
类型 | 字节 | 最小值 | 最大值 | 格式 |
|
| (带符号的/无符号的) | (带符号的/无符号的) | |
TINYINT
| 1
| -128 | 127 | TINYINT[(M)] [UNSIGNED] [ZEROFILL] |
0 | 255 | |||
SMALLINT
| 2
| -32768 | 32767 | SMALLINT[(M)] [UNSIGNED] [ZEROFILL] |
0 | 65535 | |||
MEDIUMINT
| 3
| -8388608 | 8388607 | MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] |
0 | 16777215 | |||
INT(INTEGER)
| 4
| -2147483648 | 2147483647 | INT[(M)] [UNSIGNED] [ZEROFILL] INTEGER[(M)] [UNSIGNED] [ZEROFILL] |
0 | 4294967295 | |||
BIGINT
| 8
| -9223372036854775808 | 9223372036854775807 | BIGINT[(M)] [UNSIGNED] [ZEROFILL] |
0 | 18446744073709551615 |
浮点型和定点型
M 表示:数据的总长度(不包括小数点); D 表示:小数位;按四舍五入计算
类型 | 字节 | 带符号 | 无符号 | 格式 |
FLOAT
| 4
| -3.402823466E+38~-1.175494351E-38, 0, 1.175494351E-38~ 3.402823466E+38 | 0,1.175494351E-38~3.402823466E+38 | FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] |
DOUBLE
| 2
| -1.7976931348623157E+308~- 2.2250738585072014E-308, 0,2.2250738585072014E-308 ~1.7976931348623157E+308 | 0,2.2250738585072014E-308~1.7976931348623157E+308 | DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] |
DECIMAL
| 如果M>D
| DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL] FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] |
日期与时间类型
类型 | 字节数 | 取值范围 | 零值 | |
YEAR (2)
| 1 | 70~69 表示1970~2069 | 00 | |
YEAR (4)默认 | 1910~2155 | 0000 | ||
DATE | 4 | 1000-01-01~9999-12-31 | '0000-00-00 ' | |
TIME | 3 | -838:59:59~838:59:59 | '00:00:00 ' | |
DATETIME
| 8
| 1000-01-01 | 00:00:00 | '0000-00-00 00:00:00 '
|
~9999-12-31 | 23:59:59 | |||
TIMESTAMP | 4 | 19700101080001~20380119111407 | 00000000000000 | |
|
|
|
|
String类型
许多字符串数据类型的列定义可以包括指定字符集的CHARACTER SET属性,也可能包括校对规则。
CREATE TABLE t(
· c1 CHAR(20) CHARACTER SET utf8,
· c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin);
该表定义创建了一个名为c1的列,具有一个utf8字符集和该字符集的默认 校对规则,和一个名为c2的列以及latin1字符集和该字符集的二元 校对规则。二元校对规则对大小写不敏感。
类型 | 占用空间 | 字符个数 | 格式 | 说明 |
CHAR | M个字节,0 <= M <= 255 | 0~255 | [NATIONAL] CHAR(M) [BINARY| ASCII | UNICODE] | 固定长度字符串 BINARY属性是指定列字符集的二元 校对规则的简写。排序和比较基于数值字符值。 列类型CHAR BYTE是CHAR BINARY的一个别名。这是为了保证兼容性。 可以为CHAR指定ASCII属性。它分配latin1字符集。 可以为CHAR指定UNICODE属性。它分配ucs2字符集。
|
VARCHAR | L+1个字节,其中L <= M 且0 <= M <= 65535 | 0-65535 | [NATIONAL] VARCHAR(M) [BINARY] | 可变长度字符串 |
TINYTEXT | L+1个字节,其中L < 28 | 0~255 | ||
TEXT | L+2个字节,其中L < 216 | 0~65535 | TEXT[(M)] | 大文本(,TEXT,,) |
MEDIUMTEXT | L+3个字节,其中L < 224 | 0~16777215 | ||
LONGTEXT | L+4个字节,其中L < 232 | 0~4,294,967,295 | ||
ENUM ('value1','value2',...) | 1或2个字节,取决于枚举值的个数 | 65,535个 | 枚举类型(只能取一个元素) | |
SET ('value1','value2',...) | 1、2、3、4或者8个字节,取决于set成员的数目 | 64个成员 | 集合类型(能取多个元素) |
二进制类型
类型 | 占用空间 | 字节个数 | 说明 | |
BINARY(M) | M个字节,0 <= M <= 255 | 0~255 | 字节数为 M,允许长度为 0~M 的定长二进制字符串 | |
VARBINARY(M) | L+1个字节,其中L <= M 且0 <= M <= 255 | 0~65535 | 允许长度为 0~M 的变长二进制字符串,字节数为值的长度加 1 | |
BIT(M) | 大约(M+7)/8个字节 | 255 | BIT[(M)] | M表示每个值的位数,范围为从1到64。如果M被省略, 默认为1。 |
TINYBLOB | L+1个字节,其中L < 28 | 0~255 | 可变长二进制数据,最多 255 个字节 | |
BLOB | L+2个字节,其中L < 216 | 0~65535 | BLOB[(M)] | 可变长二进制数据,最多(216-1)个字节 |
MEDIUMBLOB | L+3个字节,其中L < 224 | 0~16777215 | 可变长二进制数据,最多(224-1)个字节 | |
LONGBLOB | L+4个字节,其中L < 232 | 0~4,294,967,295 | 可变长二进制数据,最多(232-1)个字节 |
特殊的NULL类型
NULL 不是假,也不是真,而是"空"
任何运算符,判断符碰到NULL,都得NULL
NULL的判断只能用is null,is not null
NULL 影响查询速度,一般避免使值为NULL
使用来自其他数据库引擎的列类型
为了使用由其它卖方编写的SQL执行代码,MySQL按照下表所示对列类型进行映射。通过这些映射,可以很容易地从其它数据库引擎将表定义导入到MySQL中:
其它卖方类型 | MySQL类型 |
BOOL, | TINYINT |
BOOLEAN | TINYINT |
CHAR VARYING(M) | VARCHAR(M) |
DEC | DECIMAL |
FIXED | DECIMAL |
FLOAT4 | FLOAT |
FLOAT8 | DOUBLE |
INT1 | TINYINT |
INT2 | SMALLINT |
INT3 | MEDIUMINT |
INT4 | INT |
INT8 | BIGINT |
LONG VARBINARY | MEDIUMBLOB |
LONG VARCHAR | MEDIUMTEXT |
LONG | MEDIUMTEXT |
MIDDLEINT | MEDIUMINT |
NUMERIC | DECIMAL |