四、MySQL的数据类型和运算符
4.1、MySQL数据类型介绍
MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型。
数值数据类型: 包括整数类型 TINYINT、SMALLINT、MEDIUMINT、INT、BIFINT、 浮点小数据类型 FLOAT、DOUBLE 定点小数类型 DECIMAL 日期/时间类型: YEAR、TIME、DATE、DATETIME、TIMESTAMP 字符串类型: CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET |
整数类
MySQL中的整数型数据类型
类型名称 | 说明 | 存储需求 |
TINYINT | 很小的整数 | 1个字节 |
SMALLINT | 小的整数 | 2个字节 |
MEDIUMINT | 中等大小的整数 | 3个字节 |
INT | 普通大小的整数 | 4个字节 |
BIGINT | 大整数 | 5个字节 |
不同整数类型的取值范围
数据类型 | 有符号 | 无符号 |
TINYINT | -128~127 | 0-255 |
SMALLINT | -32768~32767 | 0~65535 |
MEDIUMINT | -8388608~8388607 | 0~16777215 |
INT | -2147483648~2147483647 | 0~4294967295 |
BIGINT | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
mysql> CREATE TABLE tmp1(x TINYINT,y SMALLINT,z MEDIUMINT,m INT,n BIGINT);
Query OK, 0 rows affected (0.05 sec)
mysql> DESC tmp1;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| x | tinyint(4) | YES | | NULL | |
| y | smallint(6) | YES | | NULL | |
| z | mediumint(9) | YES | | NULL | |
| m | int(11) | YES | | NULL | |
| n | bigint(20) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
浮点数类型和定点数类型
数据类型 | 说明 | 存储需求 |
FLOAT | 单精度浮点数 | 4个字节 |
DOUBLE | 双精度浮点数 | 8个字节 |
DECIMAL(M,D) | 压缩的"严格"定点数 | M+2个字节 |
mysql> CREATE TABLE tmp2 (x FLOAT(5,1), y DOUBLE(5,1),z DECIMAL(5,1));
Query OK, 0 rows affected (0.02 sec)
mysql> DESC tmp2;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| x | float(5,1) | YES | | NULL | |
| y | double(5,1) | YES | | NULL | |
| z | decimal(5,1) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
日期与时间类型
类型名称 | 日期格式 | 日期范围 | 存储需求 |
YEAR | YYYY | 1901~2155 | 1字节 |
TIME | HH:MM:SS | -838:59:59~838:59:59 | 3字节 |
DATE | YYYY-MM-DD | 1000-01-01~9999-12-31 | 3字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00~ 9999-12-31 23:59:59 | 8字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 utc~ 2038-01-19 03:14:07 utc | 4字节 |
文本字符串类型
类型名称 | 说明 | 存储需求 |
CHAR(M) | 固定长度非二进制字符串 | M字节, 1<=M<=255 |
VARCHAR(M) | 变长非二进制字符串 | L+1字节,L<=M和 1<=M<=255 |
TINYTEXT | 非常小的非二进制字符串 | L+1字节,L<2^8 |
TEXT | 小的非二进制字符串 | L+2字节,L<2^16 |
MEDIUMTEXT | 中等大小的二进制字符串 | L+3字节,L<2^24 |
LONGTEXT | 大的非二进制字符串 | L+4字节,L<2^32 |
ENUM | 枚举类型,只能有一个枚举字符串值 | 1或2个字节,取决于枚举值的数目(最大值65535) |
SET | 一个设置,字符串对象可以有零个或 多个SET成员 | 1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员) |
二进制字符串类型
类型名称 | 说明 | 存储需求 |
BIT(M) | 位字段类型 | 大约(M+7)/8个字节 |
BINARY(M) | 固定长度二进制字符串 | M个字节 |
VARBINARY(M) | 可变长度二进制字符串 | M+1个字节 |
TINYBLOB(M) | 非常小的BLOB | L+1字节,L<2^8 |
BLOB(M) | 小BLOB | L+2字节,L<2^16 |
MEDIUMBLOB(M) | 中等大小的BLOB | L+3字节,L<2^24 |
LONGBLOB(M) | 非常大的BLOB | L+4字节,L<2^32 |
4.2、常见运算符介绍
运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。运用运算符可以更加灵活地使用表中的数据,常见的运算符类型有:算术运算符、比较运算符、逻辑运算符、位运算符。
算术运算符
算术运算符是SQL中最基本的运算符,包括加、减、乘、除、求余。
运算符 | 作用 |
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
mysql> CREATE TABLE tmp14 (num INT);
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO tmp14 value(64);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT num,num+10,num-3+5,num+36.5 FROM tmp14;
+------+--------+---------+----------+
| num | num+10 | num-3+5 | num+36.5 |
+------+--------+---------+----------+
| 64 | 74 | 66 | 100.5 |
+------+--------+---------+----------+
1 row in set (0.00 sec)
mysql> SELECT num,num/0,num%0 FROM tmp14;
+------+-------+-------+
| num | num/0 | num%0 |
+------+-------+-------+
| 64 | NULL | NULL |
+------+-------+-------+
1 row in set (0.00 sec)
比较运算符
运算符 | 作用 |
= | 等于 |
<=> | 安全的等于 |
<>(!=) | 不等于 |
<= | 小于等于 |
>= | 大于等于 |
> | 大于 |
IS NULL | 判断一个值是否为NULL |
IS NOT NULL | 判断一个值是否不为NULL |
LEAST | 有两个或多个参数时,返回最小值 |
GREATEST | 两个或多个参数时,返回最大值 |
BETWEEN AND | 判断一个值是否落在两个值之间 |
ISNULL | 与IS NULL 作用相同 |
IN | 判断一个值是IN列表中任意一个值 |
NOT IN | 判断一个值不是IN列表中任意一个值 |
LIKE | 通配符匹配 |
REGEXP | 正则表达式匹配 |
逻辑运算符
运算符 | 作用 |
NOT或者| | 逻辑非 |
AND或者&& | 逻辑与 |
OR 或者|| | 逻辑或 |
XOR | 逻辑异或 |
位运算符
运算符 | 作用 |
| | 位或 |
& | 位与 |
^ | 位异或 |
<< | 位左移 |
>> | 位右移 |
~ | 位取反,反转所有位 |
运算符的优先级
优先级 | 运算符 |
最低 | =(赋值运算),:= |
||,OR XOR &&,AND NOT BETWEEN,CASE,WHEN,THEN,ELSE =(比较运算),<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN | & <<,>> -,+ *,/(DIV),%(MOD) ^ -(符号),~(位反转) | |
最高 | ! |
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341