数据类型和运算符
有两大内容
一、MySQL数据类型
MySQL是具有丰富的数据类型,在建表和存储过程中都需要指定数据类型
常有的数据类型有以上几个
(一)数值类型
整数类型
类型名称 | 说明 | 存储需求 |
tinyint | 很小的整数 | 1个字节 |
smallint | 小的整数 | 2个字节 |
mediumint | 中等大小的整数 | 3个字节 |
int | 普通大小的整数 | 4个字节 |
bigint | 大整数 | 8个字节 |
MySQL主要提供的整数类型有:tinyint、smallint、mediumint、int、bigint
create table tmp
(
x tinyint,
y smallint,
z mediumint,
m int,
n bigint
);
浮点类型与定点类型
类型名称 | 说明 | 存储需求 |
float | 单精度浮点型 | 4个字节 |
double | 双精度浮点型 | 8个字节 |
decimal(M,D) | 压缩的“严格”定点数 | M+2个字节 |
单精度float和双精度double
定点类型只有一种:decimal
create table tmp2
(
x float(5,1),
y double(5,1),
z decimal(5,1)
);
(二)字符类型
类型 | 描述 |
CHAR(M) | 存储固定长度字符串 |
VARCHAR(M) | 存储可变长度字符串 |
ENUM | 枚举类型 |
SET | 集合类型(集合中最多有64个成员) |
BLOB | 存储二进制大对象 |
TEXT | 存储文本大对象 |
CHAR和VARCHAR类型
CHAR(M)为固定长度字符串,在定义时指定字符串列长。在保存时在右侧填充空格以达到指定的长度。M表示列长度,M的范围是0~255个字符
VARCHAR(M)是长度可变的字符串,M表示最大列长度。M的范围是0~65535。
(三)日期和时间类型
日期和时间类型
类型 | 描述 | 存储需求 | 范围 |
DATETIME | 格式为YYYY-MM-DD HH:MM:SS | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 |
DATE | 格式为YYYY-MM-DD | 3 | 1000-01-01~9999-12-31 |
TIMESTAMP | 格式为YYYY-MM-DD HH:MM:SS | 4 | 1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 |
TIME | HH:MM:SS | 3 | -838:59:59~838:59:59 |
YEAR | YYYY | 1 | 1901-2155 |
Year类型表示年,可以使用各种格式指定year的值
以4位字符串或者4位数字格式表示year,取值范围’1901’~‘2155’,输入格式为‘YYYY’或者YYYY,例如:输入’2010’或2010。
以2位字符串格式表示的year,范围’00‘~’99‘。’00‘~’69‘和’70‘~’99‘范围的值分别被转换成2000-2069和1970-1999范围的year的值。
TIME类型用在只需要时间信息的值,在插入数据时要注意,因为可以采用非严格语法,所以可支持
DATE类型是用在仅需要日期值时,没有时间部分,在插入遵循 YYYY-MM-DD、 YY-MM-DD、 YYYYMMDD、 YYMMDD都可以,并且允许非严格语法
- 使用current_date或者now(),插入当前系统日期。
DATATIME类型用在需要同时包括日期和时间信息的值
- 格式为‘YYYY-MM-DD HH:MM:SS’、‘YYYYMMDDHHMMSS’、 ‘YY-MM-DD HH:MM:SS’、‘YYMMDDHHMMSS’、 YYYYMMDDHHMMSS、 YYMMDDHHMMSS
TIMESTAMP类型
- TIMESTAMP的显示格式与DATETIME相同,但TIMESTAMP的取值范围小于DATETIME的取值范围,为‘1970-01-01 00:00:01’
- UTC~‘2038-01-19 03:14:07’ UTC,其中UTC为世界标准时间,在插入数据时,要保证在合法的取值范围内。
如何选择数据类型
- 为了优化存储,提高数据库性能,在任何情况下均应使用最精确的类型。
- 如果不需要小数部分,使用整数类型,否则使用float,double
- 如果经常用于计算,精度要求高的用decimal
- 如果日期存储范围大时使用datatime
- 通常采用varchar类型,如果要提供处理速度,则采用char类型
二、MySQL运算符
- 算数运算符
- 比较运算符
- 逻辑运算符
- 位运算符
(一)算数运算符
运算符 | 作用 |
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,如果除数为0,返回null |
% | 求余运算 |
(二)比较运算符
运算符 | 作用 |
= | 等于 |
<=> | 安全的等于(和=一样用来做比较,但可以区分NULL) |
<> (!=) | 不等于(不能和NULL做比较) |
<= | 小于等于(不能和NULL做比较) |
>= | 大于等于(不能和NULL做比较) |
> | 大于(不能和NULL做比较) |
< | 小于(不能和NULL做比较) |
IS NULL | 判断一个值是否为NULL |
IS NOT NULL | 判断一个值是否不为NULL |
LEAST | 有2个或多个参数时,返回最小值 |
GREATEST | 有2个或多个参数时,返回最大值 |
BETWEEN AND | 判断一个值是否在两个值之间 |
IN | 判断一个值是IN列中的任意一个值 |
NOT IN | 判断一个值不是IN列中的任意一个值 |
LIKE | 通配符匹配(%、_) |
REGEXP | 正则表达式匹配(^、$、.、[….]、*) |
(三)逻辑运算符
运算符 | 作用 |
NOT或者! | 逻辑非 |
AND或者&& | 逻辑与 |
OR或者|| | 逻辑或 |
XOR | 逻辑异或 |
(四)位运算符
运算符 | 作用 |
| | 位或 |
& | 位与 |
^ | 位异或 |
~ | 位取反 |
<< | 位左移 |
>> | 位右移 |
同时MySQL中使用的特殊字符
字符 | 作用 |
单引号‘ | 字符串用标识,如单独使用需用转义字符\’ |
双引号“ | 如单独使用,需要转义字符\” |
反斜杠\ | 转义字符 |
\r | 回车符 |
\n | 换行符 |
\tab | 制表符 |
\b | 退格符 |
所以,最后的概括就是:
MySQL数据类型:数值型、字符型、日期时间型
MySQL运算符:算术运算符、比较运算符、逻辑运算符、位运算符