首页 > 代码库 > MySQL数据库操作4-数据类型

MySQL数据库操作4-数据类型

整型数据:


1.tinyint,

2.smallint,

3.mediumint,

4.int,

5.bigint。

 

建表声明的时候我们发现有这样声明:

create table main_t (    tiny_id tinyint(12),    small_id smallint(12),    meidum_id mediumint(12),    int_id int(12),    big_t bigint(12));

 

里面括号中的12是限制数据的宽度,但是不影响显示,主要限制在:

1.显示宽度是在终端下数据显示的宽度,但是如果数据没超过类型表示范围而超过了显示宽度,仍然可以完全显示出来。

2.不影响内存,就是宽度无论是多少,内存分配永远不变,譬如Int是4个字节,即使用了100个显示宽度,也是4个字节。

 

外注意在不指定显示宽度的时候系统会使用默认宽度。

 

浮点数和定点数:


1.float,

2.double,

3.decimal。

 

此处decimal是定点数类型,声明的时候需要声明精度M和标度D(小数位数),存储字节数与M有关,是M+2个字节。定点数默认是(10,0),浮点数可以不用括号来声明精度等。

下面声明:

create table float_t(    n1 float(5,1),    n2 double(5,1),    n3 decimal(5,1));

 

插入数据:

insert into float_t values(5.12,5.12,5.123);

此时会发现在插入decimal数据的时候出现警告。

 

因是:

在浮点数据插入时,如果精度不满足会自动进行4舍5入,

在定点数插入时,如果精度不满足而进行类型转换会产生警告,(只是警告,不是错误)。

注意:

1.一般浮点数容易产生精度问题,在需要精密存储的数据上最好使用定点数,如货币,科学数据,

2.浮点是计算也容易产生精度问题,一般不用浮点数做减法和进行比较。

 

日期和时间:


1.datetime(YYYY-MM-DD HH:MM:SS),

2.date(YYYY-MM-DD),

3.timestamp(YYYY-MM-DD HH:MM:SS),

4.time(HH:MM:SS),

5.year(YYYY)。

 

括号内的是日期和时间的格式。

注意:

year以四位字符串或是4位数字表示1901-2155,2位字符串或数字表示,00-69表示2000-2069,70-99表示1970-1999,一个字节保存。

time表示的时候如果输入无意义的时间会自动转换为00:00:00。

使用NOW()函数可以将系统时间插入数据中:

效果:

捕获

同样可以看出的是,时间戳的默认值就是当前系统时间。

关于时间的使用介绍起来很复杂,我还是选择根据用途了解。

 

字符串:


char(M)   ,固定长度非二进制字符串,M在1-255之前,占用M字节,

varchar(M) , 变长字符串,L+1字节,L<M,

tinytext,极小字符串 ,L+1字节,

text,小字符串,L+2,

mediumtext ,中小字符串,L+3,

longtext,大字符串,L+4,

以上L不尽相同。

enum,枚举,

set,集合。

 

于定长字符串char,在右侧的空格被忽略,

变长字符串varchar,会在字符串后加结束字符,

text用于保存大段文本,譬如文章和评论,

 

enum需要提供枚举值,如:

字段 enum(值1,值2,…),

从1开始编号方便访问,因此插入时可以使用编号访问这些字符串值,

 

set需要提供一系列值,在插入的时候会对不在这些值中的值进行错误警告,且会合并插入中重复的值,还会按照提供的值的顺序排列插入值。

 

二进制类型:


1.bit,

2.binary,

3.varbinary,

4.tinybinary,

5.blob,

6.mediumblob,

7.longblob。

 

bit(M)会按照M位存储,

binary和varbinary保存二进制字符串,

blob等用来存储大型二进制数据。同样可以存储二进制字符串,不含字符集。一般用于存储图片,音频信息等二进制文件。

 

于类型选择优化方面有讲,应当有一个比较常用的标准,今后使用的时候可以自己体会,或是找一些项目看看。

MySQL数据库操作4-数据类型