首页 > 代码库 > 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-数据类型