MySQL中数据类型及运算符
MySQL支持的数据类型
主要包括数值类型、字符串类型、日期和时间类型。不同版本可能稍有不同。
1. 数值类型
| 整数类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| TINYINT | 1 | 有符号 -128 无符号 0 | 有符号 127 无符号 255 |
| SMALLINT | 2 | 有符号 -32768 无符号 0 | 有符号 32767 无符号 65535 |
| MEDIUMINT | 3 | 有符号 -8388608 无符号 0 | 有符号 8388607 无符号 1677215 |
| INT | 4 | 有符号 -2147483648 无符号 0 | 有符号 2147483647 无符号 4294967295 |
| BIGINT | 8 | 有符号 -263 无符号 0 | 有符号 263-1 无符号 264 |
| 浮点数类型 | 字节 | 最小值 | 最大值 |
| FLOAT | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
| DOUBLE | 8 | ±2.2250738585072014E-308 | ±1.797693134862315E+308 |
| 定点数类型 | 字节 | 描述 | |
| DECIMAL(M,D) | M+2 | 最大取值范围与double相同, | 给定的范围由M和D决定 |
| 位类型 | 字节 | 最小值 | 最大值 |
| BIT(M) | 1~8 | BIT(1) | BIT(64) |
整型可以通过在定义时加入ZEROFILL约束条件来将数值左边空缺位数用0补齐;
整型还有一个AUTO_INCREMENT约束条件,用来产生顺序值,一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列应该定义为NOT NULL,并定义为PRIMARY KEY或定义为UNIQUE键;
FLOAT(3, 2):表示总长度为3,小数点后长度为2;
浮点数存在精度丢失问题,若涉及小数运算,尽量不要用浮点型;
DECIMAL(M, D):M是总位数,D是小数点后的位数。M最大为65,D最大为30;M和D又称为精度和标度。
定点数类型在存储小数时也会存在精度丢失的问题。
对于BIT类型需要使用函数读取,bin()显示为二进制,hex()显示为十六进制;
2. 日期和时间类型
| 日期和时间类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| DATE | 4 | 1000-01-01 | 9999-12-31 |
| DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
| TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
| TIME | 3 | -838:59:59 | 838:59:59 |
| YEAR | 1 | 1901 | 2155 |
TIMESTAMP值返回后显示为"YYYY-MM-DD HH:MM:SS"格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应该在TIMESTAMP列加+0。
TIMESTAMP列和时区相关,当插入日期时,会先转换为本地时区后存放;从数据库中取出时,有也同样需要将日期转换为本地时区后显示。
由于TIMESTAMP最大值到2038年的某一天,所以不适合存放较久远的日期。
3. 字符串类型
| 字符串类型 | 字节 | 描述及存储需求 |
|---|---|---|
| CHAR(M) | M | M为0~255之间的整数 |
| VARCHAR(M) | M为0~65535之间的整数,值的成都+1个字节 | |
| TINYBLOB | 允许长度0~255字节,值的长度+1个字节 | |
| BLOB | 允许长度0~65535字节,值的长度+2个字节 | |
| MEDIUMBLOB | 允许长度0~167772150字节,值的长度+3个字节 | |
| LONGBLOB | 允许长度0~4294967295字节,值的长度+4个字节 | |
| TINYTEXT | 允许长度0~255字节,值的长度+2个字节 | |
| TEXT | 允许长度0~2=65535字节,值的长度+2个字节 | |
| MEDIUMTEXT | 允许的长度0~167772150字节,值的长度+3个字节 | |
| LONGTEXT | 允许的长度0~4294967295字节,值的长度+4个字节 | |
| VARBINARY(M) | 允许长度0~M个字节的变长字节字符串,值的长度+1个字节 | |
| BINARY(M) | M | 允许长度0~M个字节的定长字节字符串 |
CHAR的长度固定为创建表时声明的长度,VARCHAR是可变长的。
BINARY和VARBINARY类似于CHAR和VARCHAR,当保存BINARY值的时候,在值的最后通过填充“0x00”以达到指定的字段定义长度。
ENUM类型(枚举类型)它的值需要在创建表时通过枚举方式显示指定,对1~255个成员的枚举需要一个字节存储,对255 ~ 65535个成员需要2字节存储。
ENUM类型只允许从值集合中选取单个值,而不能一次取多个值。
SET类型与ENUM类型非常相似,也是一个字符串对象,不同的是SET类型一次可以选取多个成员。
MySQL中的运算符
-
算术运算符:加、减、乘、除,取余
-
比较运算符:
#除常见的外还有 <> #表示不等于 <=> #表示NULL安全的等于 BETWEEN min AND max #表示存在于指定范围 IN #表示存在于指定集合 IS NULL #表示为NULL IS NOT NULL #表示不为NULL LIKE #表示用通配符匹配 REGEXP或RLIKE #表示正则表达式匹配 -
逻辑运算符
NOT 或 ! #逻辑非 AND 或 && #逻辑与 OR 或 || #逻辑或 XOR #逻辑异或 -
位运算符
& #位与 | #位或 ^ #位异或 ~ #位取反 >> #位右移 << #位左移 -
运算符的优先级:
由于运算符较多,记住不太可能,所有使用"()"来将需要优先进行的操作括起来,既能保证优先运算,又易读。
本文详细介绍了MySQL中的数据类型,包括数值类型、日期和时间类型、字符串类型,以及各种类型的字节大小、取值范围。同时,还介绍了MySQL支持的运算符,如算术运算符、比较运算符、逻辑运算符等。

31

被折叠的 条评论
为什么被折叠?



