MySql数据类型

  MySql使用多种不同的数据类型,这些数据类型可以划分为3类:数字类型,日期和时间类型,以及字符串类型。请密切注意它们,因为定义数据类型比表创建过程中的任何其他部分更为重要。

一、数字数据类型

  MySql使用所有的标准的ANSI Sql数字数据类型,因此如果我们从其他的数据库系统中转到MySql,这些定义对你来说会很熟悉。如下列表给出常用的数字数据类型以及说明。

 提示:数字数据类型的列表中将用到有符号或者无符号这样的术语。一个有符号的整数可以是一个正整数或者一个负数,而一个无符号的整数总是一个非负整数。

  • INT---------一个常规大小的整数,可以是有符号的或者无符号的。如果是有符号的,允许的范围-2147483648到2147483647。如果是无符号的,允许范围从0到4292967295。我们可以指定最大11位的宽度。
  • TINYINT------一个小的整数,可以是有符号的或者无符号的。如果是有符号的,允许的范围冲-128到127.如果是无符号的,允许的范围从0到255.我们可以指定最大4位的宽度。
  • SMALLINT-----一个小的整数,可以是有符号的或者无符号的。如果是有符号的,允许的范围从-32768到32767.如果是无符号的,允许的范围从0到65535.我们可以指定最大5位的宽度。
  • MEDIUMINT----一个中等大小的整数,可以是有符号的或者无符号的。如果是有符号的,允许的范围从-8388608到8388608.如果是无符号的,允许的范围冲0到16777215.我们可以指定最大9位的长度。
  • BIGINT----------一个较大的整数,可以是有符号的或者无符号的。如果是有符号的,允许的范围冲-9223372036854775808到9223372036854775807。如果是无符号的,允许的范围从0到18446744073709551615。我们可以指定最大11位的宽度。
  • Float(M,D)----一个浮点数,不能是无符号的。我们可以定义显示长度(M)和小数长度(D)。但这不是臂训的,默认值为10,2,其中2是小数位数,而10是总位数(包括小数位)。一个float的小数精度可以达到24位。
  • Double(M,D)-----一个双精度浮点数,不能是无符号的。我们可以指定显示长度(M)和小数位长度(D)。但这不是必须的,默认值为16,4 ,其中4为小数位数。一个Double的小数位精度可以达到53位。REAL是Double的同义词。
  • Decimal(M,D)-----一个未打包的双精度浮点数,不能是无符号的。在未打包的小数中,每个小数对应一个字节。定义显示长度(M)和小数位长度(D)是必须的Numeric是Decimal的同义词。
在MySQl中数字数据类型中,最经常用的是Int。

二、日期和时间类型
  MySql的日期和时间类的灵活性也意味着,日期检查的职责落到了应用程序开发者的肩上。MySQL只检查两个元素的有效性:月份是否在0到12之间,以及日期在0到31之间。MySql不会自动自动验证2月的30号是否是有效的日期。因此,应用程序内所要任何日期验证,都应该在PHP代码中进行,而且试图用假的日期向数据库表中添加一条记录之前就进行验证。
  • DATE-----------YYYY-MM-DD格式的一个日期,在1000-01-01到9999-12-31之间。例如,1973年12月30日,将存储为1973-12-30.
  • DATETIME-----YYYY-MM-DD HH:MM:SS 格式的一个日期和时间组合,在1000-01-01 00:00:00 到 9999-12-31 23:59:59 之间。例如,1973年12月30日下午3:30将存储为1973-12-30 15:30:00.
  • TimeStamp-----1970年1月1日午夜和2037年某个时间之间的一个时间戳。我们可以为TimeStamp定义多个长度,这直接和其中存储的内容相关。TimeStamp缺省的长度是14,其中存储了YYYYMMDDHHMMSS。这看上去和前面的DateTime格式类似,只是在数字之间没有连接符号。1973年12月30日下午3:30 ,将存储为19731230153000 。TimeStamp的其他定义是12(YYMMDDHHMMSS)、8(YYYYMMDD)和6(YYMMDD)。
  • Time-----是以HH:MMSS 格式存储的时间
  • Year(M)----是2位或4位的格式存储的年份。如果长度指定为2(例如 Year(2)),Year可以是1970到2069 (70到69)。如果长度指定为4,Year可以是1901到2155,。默认长度是4.
Datetime或Date比其他的日期和时间相关的数据类型更为常用。
三、字符串类型
  尽管数字和时间类型很有趣,但我们存储的大多数数据将是字符串格式的。这里列出了MySql中常用的字符串类型。

  • Char(M) ------一个定长的字符串,长度在1到255个字符之间,例如 Char(5)、存储的时候,右边使用空白填充到指定的长度,定义时长度不是必须的,但默认为1.
  • Varchar(M)-----一个变长的字符串,长度在1到255个字符之间,例如varchar(25)。在创建一个varchar字段的时候,必须顶一个长度。
  • Blob或Text------最大长度为65535个字符的字段。Blob表示“Binary Large Objects”(二进制大对象),并且用来存储大容量的二进制数据,例如图像或其他类型的文件。定义为Text的字段也存储大量的数据。二者的不同在于,对于存储的数据的排序和比较,在Blob上是区分大小写的,而在Text字段上不是不区分大小写的。我们部队Blob或Text指定长度。
  • TinyBlob或TinyText----最大长度为255个字符的一个Blob或Text。我们不对TinyBlob或TinyText指定一个长度。
  • MediumBlob或MediumText----最大长度为16777215个字符的一个Blob或Text。我们不对他们指定一个长度。
  • LongBlog或LongText---最大长度为42944967295个字符的一个Blob或Text。不对他们指定一个长度。
  • Enum----------一个枚举类型,即指定项目的一个列表。当定义一个Enum的时候,我们创建了一个项目的列表,值必须从这个列表中选定或者为Null,例如,如果希望自己的字段包括“A”或“B”或“C”,我们可以定义Enum为Enum('A','B','C'),则只有这些值或者Null可以填入到这个字段。Enum可以有65535个不同的值。Enum使用一个索引来存储项目。
提示:Set类型和Enum类型类似,因为它定义了一个列表。然而,Set类型存储为一个完整的值,而不是像Enum那样,存储为一个值的索引。
Varchar和Text字段比其他字段类型更为常用,而Enum也很常用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值