MySQL数据类型和运算符

MySQL数据类型

MySQL具有丰富的数据类型,在建表和存储过程中都需要指定数据类型
常用的数据类型有:
数值类型
整数类型
MySQL主要提供的整数类型有:tinyint、smallint、mediumint、int、bigint。

create table emp
(
	id int(11),
	name varchar(25),
	deptId int(11),
	salary float
)

id字段的数据类型为int(11),注意后面的数字11,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。
例如:year int(4),该声明指明,在year字段中的数据一般只显示4位数字的宽度。
显示的宽度和数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。
例如:向year字段插入一个数值19999,当使用select查询该列的时候,MySQL显示的将是完整的带有5位数字的19999,而不是4位数字的值。

浮点数类型和定点数类型

MySQL中使用浮点数和定点数来表示小数。浮点类型有两种:单精度float和双精度double。定点类型只有一种:decimal。浮点类型和定点类型都可以用(M,N)来表示,其中M表示精度,表示总共的位数;N表示标度,是表示小数的位数。

字符类型

类型描述
CHAR(M)存储固定长度字符串
VARCHAR(M)存储可变长度字符串
ENUM-枚举类型-
SET集合类型(集合中最多有64个成员)
BLOB存储二进制大对象
TEXT存储文本大对象

CHAR和VARCHAR类型
CHAR(M)为固定长度字符串,在定义时指定字符串列长。在保存时在右侧填充空格以达到指定的长度。M表示列长度,M的范围是0~255个字符。
VARCHAR(M)是长度可变的字符串,M表示最大列长度。M的范围是0~65535。

BIT类型
BIT(M),位字段类型。M表示每个值的位数,范围为1~64。如果M被省略,默认为1.如果为BIT(M)列分配的值的长度小于M位,在值的左边用0填充。例如:为BIT(6)分配一个值b’101,其效果与分配b‘000101相同。
BIT数据类型用来保存位字段值,例如:以二进制的形式保存数据13,13的二进制形式为1101,在这里需要位数至少为4为BIT类型,即可定义列类型为BIT(4)

如何选择数据类型

为了优化存储,提高数据库性能,在任何情况下均应使用最精确的类型
如果不需要小数部分,使用整数类型,否则使用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逻辑异或

特殊字符

字符作用
单引号‘字符串用标识,如单独使用需用转义字符\’
双引号“如单独使用,需要转义字符\”
反斜杠|转义字符
\r回车符
\n换行符
\tab制表符
\b退格符

日期和时间类型

类型描述
DATETIME格式为YYYY-MM-DD HH:MM:SS
DATE格式为YYYY-MM-DD
TIMESTAMP格式为YYYY-MM-DD HH:MM:SS
TIMEHH:MM:SS
YEARYYYY

Year

Year类型表示年,可以使用各种格式指定year的值
以4位字符串或者4位数字格式表示year,取值范围’1901’~‘2155’,输入格式为‘YYYY’或者YYYY,例如:输入’2010’或2010
以2位字符串格式表示的year,范围’00‘’99‘。’00‘’69‘和’70‘~’99‘范围的值分别被转换成2000-2069和1970-1999范围的year的值。
以2位数字表示的year,范围199。169和7099范围的值分别被转换为20012069和1970~1999范围的year值。

TIME

TIME类型用在只需要时间信息的值,在插入数据时要注意,因为可以采用非严格语法,支持

HH:MM:SS 10:05:05 10:05:05
HH:MM 23:23 23:23:00
D HH:MM 2 10:10 58:10:00 242+10:10 D代表天
D HH 3 02 74:00:00 24
3+10 小时部分小于10,前面补0
SS 10 00:00:10
HHMMSS 101112 11:11:12 如果分钟部分大于59,插入的会失败

DATE

**DATE类型用在仅需要日期值时,没有时间部分,在插入遵循 YYYY-MM-DD、 YY-MM-DD、 YYYYMMDD、 YYMMDD都可以,并且允许非严格语法,比如插入98.11.31 98/11/31 98@11@31,任何标点符合都可以做日期、时间的分割符
**
使用current_date或者now(),插入当前系统日期。

DATATIME

**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为世界标准时间,在插入数据时,要保证在合法的取值范围内。
**

总结

MySQL数据类型:数值型、字符型、日期时间型
MySQL运算符:算术运算符、比较运算符、逻辑运算符、位运算符

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值