欢迎光临
我们一直在努力

四、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)

^

-(符号),~(位反转)

最高

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。