Mysql-6-数据类型和运算符

1.mysql数据类型

(1)数值数据类型:包括整数类型tinyint、smallint、mediumint、int、bigint,浮点小数类型float和double,定点小数类型decimal。

(2)日期/时间类型:包括year、time、date、datetime和timestamp。

(3)字符串类型:包括char、varchar、binary、varbinary、blob、text、enum和set等

(4)二进制类型:包括bit、binary、varbinary、tinyblob、blob、mediumblob和longblob。

2.整数类型

类型名称

说明

存储类型

tinytin

很小的整数

1个字节

smallint

小的整数

2个字节

mediumint

中等大小的整数

3个字节

int

普通大小的整数

4个字节

bigint

大整数

8个字节

3.浮点数类型和定点数类型(表示小数)

类型名称

说明

存储需求

float

单精度浮点数

4个字节

double

双精度浮点数

8个字节

decimal

压缩的“严格”定点数

M+2个字节

decimal不同于float和double,其是以字符串存储的。

例:mysql> create table ex2(a float(4,1),b double(4,1),c decimal(4,1));
mysql> insert into ex2 values(4.23,4.26,4.234);
mysql> select * from ex2;
+------+------+------+
| a    | b    | c    |
+------+------+------+
|  4.2 |  4.3 |  4.2 |
+------+------+------+
1 row in set (0.02 sec)
M成为精度:表示总共的位数;D成为标度:表示小数的位数。

4.日期与时间类型

类型名称

日期格式

日期范围

存储需求

year

yyyy

1901-2155

1个字节

time

hh:mm:ss

-838:59:59

3个字节

date

yyyy-mm-dd

3个字节

datetime

yyyy-mm-dd hh:mm:ss

8个字节

timestamp

yyyy-mm-dd hh:mm:ss

4个字节

insert into ex4 values (now());表示现在的时间。

5.字符串类型

类型名称

说明

存储需求

char

固定长度非二进制字符串

M字节,1<=m<=255

varchar

变长非二进制字符串

L+1字节,在此L<=M且1<=m<=255

tinytext

非常小的非二进制字符串

L+1字节,在此L<28

text

小的非二进制字符串

L+2字节,L<28

mediumtext

longtext

longtext

枚举类型,只能有一个枚举字符串值

1或2个字节

set

一个集合,字符串对象可以有零个或多个

6.二进制类型

类型名称

说明

bit

位字段类型

binary

固定长度的二进制字符集

varbinary

可变长度的二进制字符串

tinyblob

非常小的blob

blob

小blob

mediumblob

中等大小的blob

longblob

非常大的blob

7.如何选择数据类型

(1)整数和浮点数

如果插入的数据不需要小数部分,则用整数类型存储数据;如果需要小数部分,则使用浮点数类型。

(2)浮点数和定点数

浮点数float和double与定点型decimal的不同是,在长度固定的情况下,浮点型能表示的范围更大。对于精确度要求比较高时,要使用定点型decimal来存储。

一定要注意,如果进行数值比较时,最好使用定点型decimal。

(3)日期和时间类型

a.根据实际需要选择能够满足应用的最小存储的日期类型。

b.如果要记录年月日时分秒,并且记录的年代久远,最好使用datetime。

c.如果记录的日期需要让不同时区的用户使用,使用timestamp

(4)char与varchar

char属于固定长度的字符串,而varchar属于可变长度的字符类型。

(5)enum和set

enum只能取单值,它的数据列表时一个枚举类型。set可以取多个值。都是以字符串形式出现的,但在mysql内部,实际是以数值索引的形式存储它们。

(6)blob和text

一般保存少量字符串的时候,可以选择char或者varchar,而在保存大文件时,通常选择使用text或者blob,差别:blob能用来保存二进制数据,如照片、音频信息等;而text只能保存字符数据,如一篇文章或日记。

8.常见运算符

运算符

作用

+

加法运算

-

减法运算

*

乘法运算

/

除法运算,返回商

%

求余运算,返回余数

mysql> insert into tmp14 value(99);
mysql> select num,num+1 from tmp14;
+------+-------+
| num  | num+1 |
+------+-------+
|   99 |   100 |
+------+-------+

9.比较运算符

运算符

作用

=

等于

<=>

安全等于(可以比较null)

<>(!=)

不等于

<=

小于等于

=>

大于等于

<

小于

>

大于

is null

判断一个值是否为null

is not null

判断一个值是否不为null

least

在有两个或多个参数时,返回最小值

createst

当有两个或多个参数时,返回最大值

between and

判断一个值是否落在两个值之间

isnull

与is null相同

in

判断一个值是in列表中的任意一值

not in

判断一个值不是in列表中的任意一值

like

通配符匹配

regexp

正则表达式匹配

例子:

mysql> select 1=2,3=3,4>5,9>2;
+-----+-----+-----+-----+
| 1=2 | 3=3 | 4>5 | 9>2 |
+-----+-----+-----+-----+
|   0 |   1 |   0 |   1 |
+-----+-----+-----+-----+
1 row in set (0.00 sec)

10.逻辑运算

运算符

作用

not或者!

逻辑非

and或者&&

逻辑与

or或者||

逻辑或

xor

逻辑异或

例:mysql> select not 2,not (2-2);
+-------+-----------+
| not 2 | not (2-2) |
+-------+-----------+
|     0 |         1 |
+-------+-----------+

11.位运算符:用来对二进制字节中的位进行测试、位移或者测试处理。

运算符

作用

|

位或

&

位与

^

位异或

<<

位左移

>>

位右移

~

位取反,反转所有比特

例:mysql> select 10|15,9|4|2;
+-------+-------+
| 10|15 | 9|4|2 |
+-------+-------+
|    15 |    15 |
+-------+-------+
1 row in set (0.00 sec)

12.运算符的优先级:决定了不同运算符在表达式中计算的先后顺序。

优先级

运算符

最低

=赋值运算

||,or

xor

&&,and

not

between and,case,when,then,else

=比较运算,<=>,,,,,is like regexp in

|

&

<<,>>

-,+

*,/,%

^

~

最高

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

关于如何来构造一个String类

  今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实...

3745
来自专栏小樱的经验随笔

C/C++中substr函数的应用(简单讲解)

substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个...

2834
来自专栏python学习指南

python正则表达式

本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某...

2556
来自专栏机器学习从入门到成神

关于Java中==与equals的解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

730
来自专栏Alice

正则表达式的学习1基础学习

正则表达式的学习 1.什么是正则表达式?正则表达式是使用单个字符串,匹配一系列符合某个句法规则的字符串。 1.正则表达式中的一些特殊代码,也叫元字符。 \b  ...

1818
来自专栏黑泽君的专栏

java基础学习_常用类02_Scanner类和String类_day12总结

============================================================================= ==...

831
来自专栏Pythonista

re 正则模块

就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译...

791
来自专栏和蔼的张星的图像处理专栏

64. 合并排序数组 II 三指针+从后向前

合并两个排序的整数数组A和B变成一个新的数组。 注意事项 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。 样例 给出A =...

1231
来自专栏柠檬先生

Java 基础标识符

标识符: 程序员为自己定义的类,方法或者变量等起的名称。     标识符由大写字母,数字,下划线(_)和美元符号组成,但不能以数字开头。 Java 语言中严格区...

2145
来自专栏欧阳大哥的轮子

C++运算符重载详解

C++语言的一个很有意思的特性就是除了支持函数重载外还支持运算符重载,原因就是在C++看来运算符也算是一种函数。比如一个 a + b 的加法表达式也可以用函数的...

2803

扫码关注云+社区

领取腾讯云代金券