首页 > 代码库 > 四、MySQL的数据类型和运算符

四、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~1270-255
SMALLINT-32768~327670~65535
MEDIUMINT-8388608~83886070~16777215
INT-2147483648~21474836470~4294967295
BIGINT-9223372036854775808~92233720368547758070~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)

日期与时间类型

类型名称日期格式日期范围存储需求
YEARYYYY1901~21551字节
TIME
HH:MM:SS-838:59:59~838:59:593字节
DATEYYYY-MM-DD1000-01-01~9999-12-313字节
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)
非常小的BLOBL+1字节,L<2^8
BLOB(M)
小BLOBL+2字节,L<2^16
MEDIUMBLOB(M)
中等大小的BLOBL+3字节,L<2^24
LONGBLOB(M)
非常大的BLOBL+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)

^

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


最高


本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1952481

四、MySQL的数据类型和运算符