1,Tinyint

在Mysql中有许多衍生的int类型,比如Tinyint就是其中一个,他的最小值是-128 最大值是127

那么为什么Mysql中要对这些数据做如此详细的处理?是为了让程序员对数据的合法插入,数据类型本身也是一种约束。

可以看到,一旦插入数据超过范围,就会报错。

说明:

在MySQL中类型分为无符号和有符号,默认是有符号;

可以通过unsigened来某个字段是无符号的;

例子:

可以看到,该类型就不可插入带符号数字。

int类型衍生中还有:smallint 最小值是-32768,最大值是32767;

mediumint,最小值是-8388608,最大值是8388607;

还有int,bigint。

2,bit类型/字节类型(位类型)

name  bit(1);  只能插入0和1,只在二进制位上开了一位,所以取值范围是0和1;

3,浮点类型

1,float

用法:float(m,d);其中m表示显示长度,d表示精度,占用空间四个字节

如果用unsigend定义,那么float的取值范围就是0-99.99,double用法也是一样的就不多说了。

2,decimal

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

decimal(5,2) 表示的范围是 -999.99 ~ 999.99

decimal(5,2) unsigned 表示的范围 0 ~ 999.99

decimal和float很像,但是有区别: float和decimal表示的精度不一样

可以看到,decimal的精度比float的进度要高,当插入精度大的数字时可以选用decimal。

4,字符串类型

1,char

固定长度字符串

用法:char(L);L表示字符串的长度,该类型字符串的最大长度位255:

该字符为固定长度,就是在表中定义了多少空间他就给你开多少固定的空间;

从图中可以看到,2并不是开了两个字节的长度,而是可以存两个字符,可以是汉字或英文。

2,varchar

用法:varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节(注意是字节)

用法和char类似:

其中,与char不一样的是,如果给varchar开了长20的长度,但是只给里面塞一个字符,这个时候varchar的长度是1,而不是20.这就是变长字符的优势;其中,大小为65535跟字节,但是要用三个字节来存字符的长度等内容,实际长度是65532,而最长的字符数是21844字符:

5,日期和时间类型

date :日期 'yyyy-mm-dd' ,占用三字节

datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节

可以看到timestamp它显示的是时事的时间,每次跟新表的时候t3会跟着变

6,enum 和 set类型

语法: enum:枚举,“单选”类型;

enum('选项1','选项2','选项3',...);

set:集合,“多选”类型;

set('选项值1','选项值2','选项值3', ...);

以下是调用方法之一:

当然enum可以使用下标来指代(注意不能使用零下标):

set可以指定多个内容进行写入,具体操作如下:

enum和set只能插入在建表之前定好的量,定义其他会报错。

set还可以使用数字标下标,但是set是以位来当下标,要注意:

可以看到,set并不以数字为下标:

1-->00001;

2-->00010;

7-->00111;

31-->11111;

案例:

set也可插入零号位,但是插入时就不是null而是‘’,代表插入过的意思。

7,enum 和 set类型查找

操作:

enum:

set:

可以看到,set用where查找时,时按严格匹配来查找,那些含有羽毛球的多个集合里不会被查找出来。

我们可以用关键字 find_in_set 可以看元素集合

方法:

可以用and的方式组合多个查询条件:

希望可以对你们有帮助.

更多推荐