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~18446744073709551615mysql> 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字节
TIMEHH:MM:SS-838:59:59~838:59:593字节
DATEYYYY-MM-DD1000-01-01~9999-12-313字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00~
9999-12-31 23:59:598字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 utc~
2038-01-19 03:14:07 utc4字节
文本字符串类型
类型名称说明存储需求
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)
^
-(符号),~(位反转)
最高!