数据类型和运算符
3.1 MySQL数据类型介绍
3.1.1 整数类型
数值型数据类型主要用来存储数字。
TINYINT、SMALLINT、MEDIUMINT、
INT(INTEGER)、 BIGINT。
3.1.2 浮点数类型和定点数类型
MySQL中使用浮点数和定点数来表示小数。
浮点类型:FLOAT、DOUBLE。
定点类型:DECIMAL。
F:4字节;D:8字节;D:M+2字节;若用户指定的精度超出精度范围,则会四舍五入进行处理
3.1.3 日期与时间类型
DATETIME、DATE、TIMESTAMP、TIME
和YEAR。
3.1.4 字符串类型
字符串类型用来存储字符串数据,除了可以存储字符串数据之外,还可以存储其它数据,比如图片和声音的二进制数据。
CHAR、VARCHAR、BINARY、VARBINARY
BLOB、TEXT、ENUM和SET。
模式匹配查找; CHAR、VARCHAR起码对于我来说还用过,其他的没用过
3.1.5 二进制类型
前面讲解了存储文本的字符串类型,这一节将讲解MySQL中存储二进制数据的数据类型
BIT、BINARY、VARBINARY、TINYBLOB、
BLOB、MEDIUMBLOB、LONGBLOB,
3.2 如何选择数据类型
整数和浮点数
浮点数和定点数
日期与时间类型
只需要记录年份使用year类型,只需要记录时间使用time类型。存储范围较大的日期(时间和年份)可以使用DATETIME(timestamp也可记录日期,当需要插入当前时间使用它)
CHAR与VARCHAR之间的特点与选择
如果对存储要求不大,在性能上有需求,可以使用char类型;char是固定字节,varchar是可变长字节使用它在某种程度上可以节省空间。
ENUM和SET
ENUM只能去单个值,他的数据类型是一个枚举集合,他的合法取值列表最多允许有65535个成员。
SET可以去多个值,他的合法取值列表最多有64个成员。
BLOB和TEXT
3.3 常见运算符介绍
算术运算符
算术运算符是SQL中最基本的运算符。
+、 -、 *、 /、 %
比较运算符
一个比较运算符的结果总是1,0或者是NULL。
=、<=>、<> (!=)、<=、>=、>、IS NULL
IS NOT NULL、LEAST、GREATEST、
BETWEEN . . . AND. . . 、ISNULL、IN、NOT
IN、LIKE、REGEXP
<=>安全等于运算符;<> 不等于运算符;LEAST、GREATEST分别为有两个或多个参数时,返回最小值、最大值
LIKE :
可使用% 匹配任何数目的字符,甚至包括零字符
_只能匹配一个字符
REGEXP
正则表达式的匹配运算符
运算符的通用使用模式(编写)
均是以SELECT开头,执行多个字符匹配可以使用逗号(,)分隔开来
select 'ss' like'%','sqsa' regexp 'p$','rrrr' regexp '.*r'
逻辑运算符
逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。
NOT 或者 !
AND 或者 &&
OR 或者 ||
XOR
位操作运算符
位运算符是用来对二进制字节中的位进行测试、移位或者测试处理。
位或(|)
位与(&)
位异或(^ )
位左移(<<)
位右移(<<)
位取反(~)
运算的优先级决定了不同的运算符在表达式中计算的先后顺序。
级别高的运算符先进行计算,如果级别相同,MySQL按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级。
优先级 运算符
(最高) !
3 -(负号),~(按位取反)
4 ^(按位异或)
5 *,/(DIV),%(MOD)
6 +,-
7 >>,<<
8 &
9 |
10 =(比较运算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP
11 BETWEEN AND,CASE,WHEN,THEN,ELSE
12 NOT
13 &&,AND
14 XOR
15 ||,OR(最低) =(赋值运算),:=