Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2484687
  • 博文数量: 609
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-25 08:30
文章分类

全部博文(609)

文章存档

2010年(13)

2009年(39)

2008年(558)

我的朋友

分类: Mysql/postgreSQL

2008-09-02 09:09:47

Mysql入门系列:MySQL的列类型(1)

  数据库中的每个表都是由一个或多个列构成的。在用CREATE TABLE 语句创建一个表时,要为每列指定一个类型。列的类型比数据类型更为特殊,它仅仅是如“数”或“串”这样的通用类型。列的类型精确地描述了给定表列可能包含的值的种类,如SMALLINT 或VARCHAR( 3 2 )。

  MySQL的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的值,这又决定了MySQL怎样处理这些值。例如,数值值既可用数值也可用串的列类型来存放,但是根据存放这些值的类型, MySQL对它们的处理将会有些不同。每种列类型都有几个特性如下:

  ■ 其中可以存放什么类型的值。

  ■ 值要占据多少空间,以及该值是否是定长的(所有值占相同数量的空间)或可变长的(所占空间量依赖于所存储的值)。

  ■ 该类型的值怎样比较和存储。

  ■ 此类型是否允许NULL 值。

  ■ 此类型是否可以索引。

  我们将简要地考察一下MySQL列类型以获得一个总的概念,然后更详细地讨论描述每种列类型的属性。

  2.2.1列类型概述

  MySQL为除NULL 值以外的所有通用数据类型的值都提供了列类型。在列是否能够包含NULL 值被视为一种类型属性的意义上,可认为所有类型都包含NULL属性。MySQL有整数和浮点数值的列类型,如表2 - 2所示。整数列类型可以有符号也可无符号。有一种特殊的属性允许整数列值自动生成,这对需要唯一序列或标识号的应用系统来说是非常有用的。


  MySQL串列类型如表2 - 3所示。串可以存放任何内容,即使是像图像或声音这样的绝对二进制数据也可以存放。串在进行比较时可以设定是否区分大小写。此外,可对串进行模式匹配(实 际上,在MySQL中可以在任意列类型上进行模式匹配,但最经常进行模式匹配还是在串类型上)


  日期与时间列类型在表2 - 4中示出。对于临时值, MySQL提供了日期(有或没有时间)、时间和时间戳(一种允许跟踪对记录何时进行最后更改的特殊类型)的类型。而且还提供了一种在不需要完整的日期时有效地表示年份的类型。


  要创建一个表,应使用CREATE TABLE 语句并指定构成表列的列表。每个列都有一个名字和类型,以及与每个类型相关的各种属性。下面是创建具有三个分别名为f、c 和i 的列的表my_table 的例子:



 定义一个列的语法如下:


  其中列名由col_name 给出。列名可最多包含64 个字符,字符包括字母、数字、下划线及美元符号。列名可以名字中合法的任何符号(包括数字)开头。但列名不能完全由数字组成,因为那样可能使其与数据分不 开。MySQL保留诸如S E L E C T、DELETE 和CREATE 这样的词,这些词不能用做列名。但是函数名(如POS 和M I N)是可以使用的。

  列类型col_type 表示列可存储的特定值。列类型说明符还能表示存放在列中的值的最大长度。对于某些类型,可用一个数值明确地说明其长度。而另外一些值,其长度由类型名蕴 含。例如,CHAR(10) 明确指定了10 个字符的长度。而TINYBLOB 值隐含最大长度为2 5 5个字符。有的类型说明符允许指定最大的显示宽度(即显示值时使用多少个字符)。浮点类型允许指定小数位数,所以能控制浮点数的精度值为多少。


   可以在列类型之后指定可选的类型说明属性,以及指定更多的常见属性。属性起修饰类型的作用,并更改其处理列值的方式,属性有以下类型:

  ■ 专用属性用于指定列。例如,UNSIGNED 属性只针对整型,而B I N A RY 属性只用于CHAR 和VARCHAR。

  ■ 通用属性除少数列之外可用于任意列。可以指定NULL 或NOT NULL 以表示某个列是否能够存放NULL。还可以用D E FA U LT def_value 来表示在创建一个新行但未明确给出该列的值时,该列可赋予值d e f _ v a l ue。def_value 必须为一个常量;它不能是表达式,也不能引用其他列。不能对BLOB 或TEXT 列指定缺省值。

   如果想给出多个列的专用属性,可按任意顺序指定它们,只要它们跟在列类型之后、通用属性之前即可。类似地,如果需要给出多个通用属性,也可按任意顺序给出它们,只要将它们放在列类型和可能给出的列专用属性之后即可。本节其余部分讨论每个MySQL的列类型,给出定义类型和描述它们的属性的语法,诸如取值范围和存储需求等。类型说明如在CREATE TABLE 语句中那样给出。可选的信息由方括号([ ])给出。如,语MEDIUMINT[(M)] 表示最大显示宽度(指定为M)是可选的。另一方面,对于CHAR( M ),无方括号表示的(M) 是必须的。

  2.2.2 数值列类型

  MySQL的数值列类型有两种:

  ■ 整型。用于无小数部分的数,如1、4 3、- 3、0 或- 7 9 8 4 3 2。可对正数表示的数据使用整数列,如磅的近似数、英寸的近似数,银河系行星的数目、家族人数或一个盘子里的细菌数等。

  ■ 浮点数。用于可能具有小数部分的数,如3 . 14 15 9、- . 0 0 27 3、- 4 . 7 8、或3 9 . 3 E + 4。可将浮点数列类型用于有小数点部分或极大、极小的数。可能会表示为浮点数的值有农作物平均产量、距离、钱数(如物品价格或工资)、失业率或股票价格等等。整型值也可

阅读(1084) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~