会员名称:  密码:   验证码:     会员注册  忘记密码? 
设为首页
加入收藏
返回首页
媒体资讯>> 业界资讯 - 会展动态 - 竞赛&活动 - IT互联网  媒体学院>> 图形图像 - 网页制作 - 网络编程 - 数据库 - 服务器 - 网络应用  作品赏析>> 视频音响 - CG动画 - UI设计 - 平面设计 - 网页设计 - 摄影映象 - 三维2D - 其它设计  媒体工作室>> 视频影像 - 音频声响 - 三维2D - 平面视觉 - 软硬技术 - 摄影映象  人物访谈>> 人物访谈 - 华夏新锐  媒体杂志>> 媒体杂志  素材图库>> 丽景佳图 - 设计素材 - 资料图库 - 矢量图库 - 动态动画 - 特色图标  酷站赏析>> 韩国网站 - 国外网站 - 国内网站  会员中心>> 会员注册 - 会员登陆
当前位置:华夏媒体 - > 媒体学院 - > 数据库 - > MYSQL - > MySQL数据库技术(08)
   
   
   
MySQL数据库技术(08) MySQL数据库技...  [MYSQ...]
More... 
   
网络协议X档案全集(十) 网络协议X档案...  [其它...]
不可忽视的BIOS参数设置 不可忽视的BIO...  [其它...]
微软IE浏览器非常规修改全攻略(上) 微软IE浏览器非...  [其它...]
微软IE浏览器非常规修改全攻略(下) 微软IE浏览器非...  [其它...]
网管十招 网管十招  [其它...]
微软安全问题 源自OS和IE中集成RSS 微软安全问题 ...  [其它...]
修改注册表使电脑更安全 修改注册表使电...  [其它...]
利用注册表管理IP地址 利用注册表管理...  [其它...]
有关IIS HACK的一些方法整理 有关IIS HACK的...  [其它...]
More 
MySQL数据库技术(08)
编辑:华夏媒体     作者:未知     来源:网络     时间:2006-07-29     总浏览量:2163
文字大小:[      ]     文字颜色:      双击滚屏/单击停止

[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [下一页] 



    给定的DECIMAL 类型的取值范围取决于MySQL 的版本。对于MySQL 3.23 以前的版本,DECIMAL(M, D) 列的每个值占用M 字节,而符号(如果需要)和小数点包括在M 字节中。因此,类型为DECIMAL(5, 2) 的列,其取值范围为-9.99 到9 9 . 9 9,因为它们覆盖了所有可能的5 个字符的值。
    正如MySQL 3.23 一样,DECIMAL 值是根据ANSI 规范进行处理的, ANSI 规范规定DECIMAL(M, D) 必须能够表示M 位数字及D 位小数的任何值。例如, DECIMAL(5, 2) 必须能够表示从-999.99 到999.99 的所有值。而且必须存储符号和小数点,因此自MySQL 3.23以来DECIMAL 值占M + 2 个字节。对于DECIMAL(5, 2),“最长”的值(- 9 9 9 . 9 9)需要7个字节。在正取值范围的一端,不需要正号,因此MySQL 利用它扩充了取值范围,使其超
过了ANSI 所规范所要求的取值范围。如DECIMAL(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。
    简而言之,在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于更早版本中的DECIMAL(M + 2, D) 的取值范围。在MySQL 的所有版本中,如果某个DECIMAL 列的D 为0,则不存储小数点。这样做的结果是扩充了列的取值范围,因为过去用来存储小数点的字节现在可用来存放其他数字了。
    1. 数值列的类型属性
    可对所有数值类型指定ZEROFILL 属性。它使相应列的显示值用前导零来填充,以达到显示宽度。在希望确定列值总是以给定的数字位数显示时可利用Z E R O F I L L。实际上,更准确地说是“一个给定的最小数目的数字位数”,因为比显示宽度更宽的值可完全显示而未被剪裁。使用下列语句可看到这一点:

    其中SELECT 语句的输出结果如下。请注意最后一行值,它比列的显示宽度更宽,但仍然完全显示出来:

    如下所示两个属性只用于整数列:
    ■ AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可利用AUTO_ INCREMENT属性。A U TO_INCREMENT 值一般从1开始,每行增加1。在插入NULL 到一个A U TO _INCREMENT 列时,MySQL 插入一个比该列中当前最大值大1 的值。一个表中最多只能有一个A U TO_INCREMENT 列。对于任何想要使用A U TO_INCREMENT 的列,应该定义为NOT NULL,并定义为P R I M A RY KEY 或定义为UNIQUE 键。例如, 可按下列任何一种方式定义AUTO_INCREMENT 列:

    A U TO_INCREMENT 的性能将在下一小节“使用序列”中作进一步的介绍。
    ■ U N S I G N E D。此属性禁用负值。将列定义为UNSIGNED 并不改变其基本数据类型的取值范围;它只是前移了取值的范围。考虑下列的表说明:

    itiny 和itiny_u 两列都是T I N Y I N T列,并且都可取2 5 6个值,但是i t i n y的取值范围为-1 2 8 到1 2 7,而itiny_u 的取值范围为0 到2 5 5。UNSIGNED 对不取负值的列是非常有用的,如存入人口统计或出席人数的列。如果用常规的有符号列来存储这样的值,那么就只利用了该列类型取值范围的一半。通过使列为U N S I G N E D,能有效地成倍增加其取值范围。如果将列用于序列号,且将它设为U N S I G N E D,则可取原双倍的值。在指定以上属性之后(它们是专门用于数值列的),可以指定通用属性NULL 或N O TN U L L。如果未指定NULL 或NOT NULL,则缺省为N U L L。也可以用D E FA U LT 属性来指定一个缺省值。如果不指定缺省值,则会自动选择一个。对于所有数值列类型,那些可以包含NULL 的列的缺省将为N U L L,不能包含NULL 的列其缺省为0。下面的样例创建三个INT 列,它们分别具有缺省值-1、1 和N U L L:

    2. 使用序列
    许多应用程序出于标识的目的需要使用唯一的号码。需要唯一值的这种要求在许多场合都会出现,如:会员号、试验样品编号、顾客I D、错误报告或故障标签等等。A U TO_INCREMENT 列可提供唯一编号。这些列可自动生成顺序编号。本节描述A U TO_INCREMENT 列是怎样起作用的,从而使您能够有效地利用它们而不至于出错。另外,还介绍了怎样不用A U TO_INCREMENT 列来产生序列的方法。
    (1) MySQL 3.23 以前的版本中的A U TO _ I N C R E M E N TMySQL 3.23 版以前的A U TO_INCREMENT 列的性能如下:
    ■ 插入NULL 到A U TO_INCREMENT 列,使MySQL 自动地产生下一个序列号并将此序列号自动地插入列中。A U TO_INCREMENT 序列从1 开始,因此插入表中的第一个记录得到为1 的序列值,而后继插入的记录分别得到序列值2、3 等等。一般,每个自动生成的值都比存储在该列中的当前最大值大1。
    ■ 插入0 到A U TO_INCREMENT 与插入NULL 到列中的效果一样。插入一行而不指定A U TO_INCREMENT 列的值也与插入NULL 的效果一样。


[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [下一页] 

打印   收藏   关闭   至顶部  


关于我们 | 联系我们 | 合作伙伴 | 站点地图 | 免责声明 | 版权声明 | 意见建议
版权所有  Copyright © 2005-2006 华夏媒体(Media86.Com). All Rights Reserved .
网站备案号:粤ICP备06055307号