注册
登录

您现在的位置是:首页 > 学无止境

MySQL数据类型

木木彡82 2010-04-07 12:02:00 709人围观
转载自:http://www.cn-cuckoo.com/2009/11/07/mysql-data-type-1230.htmlMySQL跟其他主流数据库一样,能够存储任何类型的数据,比如字符、数值和日期。而且,大多数应用程序中只会用到这3种数据。1. 字符数据1.1 字符数据分为字符型和文本型...

转载自:http://www.cn-cuckoo.com/2009/11/07/mysql-data-type-1230.html

MySQL跟其他主流数据库一样,能够存储任何类型的数据,比如字符、数值和日期。而且,大多数应用程序中只会用到这3种数据。

1. 字符数据

1.1 字符数据分为字符型和文本型。字符型又分为两种,一是固定长度字符型(char ),存储空间为255字 节,不足空间以空格填充;另一种是可变长度字符型(varchar ),存储空间为65 535字节,不足空间不用空格填充。在为表列定义字符类型时,必须指定最大字符数(英文每个字母占一个字节,汉字每个字占两个字节),不能超过相应类型的 字节上限,例如:

char(40) /* 固定长度字符列,最多可以保存40个英文字母或20个汉字 */
char(280) /* 无效,超过了255字节 */
varchar(280) /* 可变长度字符列,最多可以保存280个英文字母或140个汉字 */

1.2 另外,在为表列指定数据类型的同时,可以同时指定列的字符集,例如:

varchar(20) character set utf8 /* UTF-8字符集,可以用于保存汉字等多字节字符 */

甚至,在创建数据库时也可以直接指定默认的字符集,例如:

create database myblog character set utf8;

1.3 对于要求存储空间大于64KB(64×1024=65 535字节)的列,就需要声明为文本型了。文本型又分为四种:短文本型(tinytext /255)、 文本型(text /65 535)、中长文本型(mediumtext /16 777 215)和长文本型(longtext /4 294 967 295)。

由于MySQL提供了65 535字节长的可变长度字符型(varchar ),因此短文本型(tinytext ) 和文本型(text )并不常用。

关于文本型数据,有以下说明:
(1)如果实际文本超出相应类型指定的最大长度,则多余文本将被截掉;
(2)如果实际文本不足相应类型指定的最大长度,则不会删除后面空格;

2. 数值数据

数值数据分为整数和浮点数(带小数点的数,有符号),而整数又分有符号数和无符号数(用于区分正负数)。MySQL中有5种整数数值类型:

较小整数(tinyint /-128~127或0~255);
小整数(smallint /-32 768~32 767或0~65 535);
中长整数(mediumint /-8 388 608~8 388 607或0~16 777 215);
整数(int /-2 147 483 648~2 147 483 647或0~4 294 967 295);
大整数(bigint /-9 223 372 036 854 775 808~9 223 372 036 854 775 807或0~18 446 744 073 709 551 615)。

声明整数类型列时,必须指定该列是有符号(signed)还是无符号(unsigned),例如:

smallint unsigned  /* 表示只保存正整数 */

有两种浮点数值类型:单精度浮点数,float(p,s)和双精度浮点数,double(p,s)。其中,p表示精度(小数点左右两侧的数字位数 和),s表示至少保留几位小数。

3.时间数据

时间数据可以是日期、时间、日期加时间。MySQL有5种时间数据类型:

日期型:date YYYY-MM-DD 1000-01-01~9999-12-31
日期时间型:datetime YYYY-MM-DD HH:MI:SS 1000-01-01 00:00:00~9999-12-31 23:59:59
时间戳型:timestamp YYYY-MM-DD HH:MI:SS 1970-01-01 00:00:00 to 2037-12-31 23:59:59
年型:year YYYY 1901 to 2155
时间型:time HHH:MI:SS -838:59:59 to 838:59:59

其中,HHH:MI:SS中的HHH表示已经过去的小时数,而其他日期时间组件YYYY(年)、MM(月)、DD(日)的含义是可以一目了然的。

如果只想在某列中保存日期(年月日),则date即可满足需要;如果想保存日期和时间(年月日时分秒),则要使用datetimetimestampdatatime 的 区别除表示的时间范围不同之外,是它的值可以在记录增加或被更新时自动生成。

 

补充
首先,在GBK内码的情况下,一个汉字占两个字节,但是在UTF-8内码的情况下,一个汉字需要占用三个字节
其次,在MySQL 5.x版本中,varchar(n)中的n是以“字符”为单位的,因此varchar(10)的列可以容纳10个中文字符

上一篇:IE中的条件注释

下一篇:javascript 小测试

文章评论

  • 登录后评论

点击排行