数据类型 2019/2/7
1.常量
1.1十六进制值:-默认字符串:
mysql> SELECT x'4D7953514C';#'MySQL'
mysql> SELECT 0xa+0; #10 作为数字用CAST(...AS UNSIGNED):mysql> SELECT 0x41,CAST(0x41 AS UNSIGNED);#65#A HEX()函数将字符串或数字转换为十六进制格式字符串:mysql> SELECT HEX('cat');#'636174'mysql> SELECT 0x636174;#'cat'
1.2. 布尔值:常量TRUE等于1,常量FALSE等于0。常量名可以写成大写或小写
mysql> SELECT TRUE,true,FALSE,false;
-> 1,1,0,0
1.3. 位字段值:b'value'符号写位字段值:
mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11101101';
1.4. NULL值:
NULL值表示“没有数据”大小写。null用序列\n表示
1.5字符串:
字符串指用单引号或双引号引起来的字符序列。SQL服务器模式启用NSI_QUOTES用单引号引用字符串。
用双引号引用识别符。字符串可以有一个可选字符集引介词和COLLATE子句:
[_charset_name]'string' [COLLATE collation_name]SELECT _latin1'string';
SELECT _latin1'string' COLLATE latin1_danish_ci;
转义字符:
\0 ASCII 0(NUL)字符;\'单引号(‘'’);\"双引号(‘"’);\b 退格符;\n换行符;\r回车符;
\t tab字符;\\ 反斜线(‘\’)字符;\% ‘%’字符;\_ ‘_’字符;\Z ASCII 26(控制(Ctrl)-Z),该字符可以编码为‘\Z’
字符串列内插入二进制数据(如BLOB),必须通过转义序列表示下面的字符:
NUL ,反斜线,单引号,双引号
实例:字符串中包括引号
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
| hello | "hello" | ""hello"" | hel'lo | 'hello |
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
| hello | 'hello' | ''hello'' | hel"lo | "hello |
2.数据类型:
分类 | 类型 | 字节 | 说明 | 备注 | 用途 |
整数 | TINYINT | 1 | (-128,127) | | 最小整数 |
整数 | BIT | 1 | (-128,127) | | 最小整数 |
整数 | BOOL | 1 | (-128,127) | 值0视为false非0值为真 | 最小整数 |
整数 | SMALLINT | 2 | (-32 768,32 767) | | 小整数值 |
整数 | MEDIUMINT | 3 | (-8 388 608,8 388 607) | | 中整数值 |
整数 | INT | 4 | (-2 147 483 648,2 147 483 647) | | 标准整数 |
整数 | BIGINT | 8 | (+-9,223,372,036,854,775,807) | | 大整数值 |
整数 | FLOAT | 4 | +-3.402 823 466e+38 | | 单精度 |
整数 | DOUBLE | 8 | (+-1.797 693 134 862 315 7 E+308, | | 双精度 |
整数 | | | +-2.225 073 858 507 201 4 E-308) | | |
整数 | DECIMAL | 可变 | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 精确值 | 一般整数 |
日期 | DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
日期 | TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
日期 | YEAR | 1 | 1901/2155 | YYYY | 年份值 |
日期 | DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
日期 | TIMESTAMP | 4 | 1970/1/1 0:00:00-2038-1-19 03:14:07 | YYYYMMDD HHMMSS | 时间戳 |
字符 | CHAR | 255 | char(m)[binary|ascii|unicode] | | 定长字符串 |
字符 | VARCHAR | 255 | char,varchar在存储或检索过程中不进行大小写转换 | | 变长字符串 |
字符 | TINYBLOB | 255 | utf8一个汉字3字节GBK2字节 | 变长 | 二进制字符串 |
字符 | TINYTEXT | 255 | | 变长 | 短文本字符串 |
字符 | BLOB | 65535 | | 变长 | 二进制文本 |
字符 | TEXT | 65535 | | 变长 | 文本数据 |
字符 | MEDIUMBLOB | 2^24-1 | | 变长 | 二进制中文本 |
字符 | MEDIUMTEXT | 2^24-1 | | 变长 | 中文本 |
字符 | LONGBLOB | 2^32-1 | | 变长 | 二进制大文本 |
字符 | LONGTEXT | 2^32-1 | | 变长 | 大文本 |
| | | | | |
说明:char(n) 若字符数小于n以空格补其后,查询时再去掉。char字符串末尾不能有空格,varchar 不限于此。 |