Mysql和Mssql数据字段类型的讨论

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:10198223
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要讨论了Mysql数据库和Mssql系列数据库提供的几种SQL数据字段类型的不同定义、应用以及如何在不同类型字段之间转化的问题。
  关键词:Mysql;Mssql;数据类型
  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)03-10632-01
  
  1 引言
  
  我们在创建表之前首先要讲一下数据库提供SQL数据字段类型的问题,因为在实际应用中它是建表重要的一项环节。如何真实有地效表示现实世界某实体某一属性;如何尽可能地使用最有效(最小)的类型,来节省存贮空间,如何在不同类型字段之间转化数据等都要求我们对数据库提供字段类型要有的充分了解。但是不同数据库管理系统提供商对自己的数据库字段类型的定义有所不同,但是我们不用担心,基本的是相同。
  存贮在数据库中表的数据字段类型,一般分为数字类型(整形、小数型)、日期和时间类型、字符串(字符)类型,其中常见的类型有整形、字符型、浮点型在过程化语言中大家应该很熟悉了,對日期和时间字段类型,可以看作是整型或字符型的扩展出来的。
  首先介绍一下整形字段类型,在现实世界很多计数类型要整型数据表示,我们要根据实际情况选择适当长度类型。下面表格列出Mysql和Mssql数据库管理系统整形数据的一些情况:
  表1
  说明:在Mysql中可以用UNSIGNED声明整形字段为无符号类型,在Mssql似乎没有这个功能。Mysql数据库中没有bit类型。虽然两个数据库就整形类型表示有所不同,但是其核心内容是一样的。根据上面对整型字段的说明,我们应该明白要表示一个介于1和99999之间值的整数列,在Mysql中最好用 MEDIUMINT UNSIGNED类型比较好。
  
  2 字符类型
  
  在Mysql数据库中的字符类型只有char、varchar、text(Mysql中还有tinytext和bigtext类型,只是在字段长短上不同,Mssql只有一种text类型,具体他们长度区别请参看相关资料),对于Mssql另有nchar、nvarchar、ntext字符类型字段。下面我主要讲一下他们之间主要区别:char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。比如分别向定义char(8)和varchar(8)的字段中插入字符串“abc”,char实际存储空间是8,而varchar实际存储空间是3。显然那些长度比较均匀的字符串最好用char类型存储,因为在索引、查找、比对时定长字符更好些。数据长短相差较多字段使用varchar比较节省空间。char和varchar是可以指定最大存储长度的字符串类型,text可以理解成最大存储长度确定存储比较字符段落的varchar类型。
  nchar、nvarchar、ntext与char、varchar、text的区别主要前者是是非以Unicode数据存储,后者是以Unicode数据存储。那么什么是Unicode呢?它是字符一种编码方式,大家知道在ASCII编码中字符是以一个字节存储的,而汉字是以2个字符存储的,英文与汉字同时存在时容易造成混乱。Unicode字符集就是为了解决字符集这种不兼容的问题,把所有的字符都用两个字节表示,即英文字符也是用两个字节表示。这样看来主要存储汉字为主的字符串用uncode形式存储比较好些。
  
  3 浮点型字段和货币类型字段
  
  一般分为单精度和双精度,被用来标示近似数字的数据类型。小数类型字段NUMERIC和DECIMAL是同义词。货币值的精确表示是一个常见的问题,在Mysql,你应该使用DECIMAL(NUMERIC的一个同义词)类型,它作为一个字符串被存储,是未压缩(unpack)的浮点数字,值的每一位使用一个字符,这样不会发生精确性的损失。如果精确性不是太重要,DOUBLE(双精度)类型也是足够好的。在Mssql中还有money、smallmoney专门表示对精确要求比较高货币值。
  
  4 日期和时间类型
  
  日期和时间类型在实际应用中是经常要碰到一种类型,在Mysql中year、date、time,datetime,timestamp类型,在Mssql中有smalldatetime、datetime和timestamp。在这里我们着重介绍timestamp类型字段。一个timestamp类型的字段在对于插入一个记录或修改这个记录时它自动地被设置为操作的日期和时间。你也可以通过赋给它一个NULL值设置它为当前的日期和时间。这在对于新闻、文章的修改的时间的字段用此类型是非常有用的。由于每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。这样大大加大了系统对表主键和有关索引以及与主键相关的外键的维护。在Mssql中一个表只能有一个 timestamp 列,而在Mysql中可以允许多个timestamp 列,但是insert和update被操作时只有第一列timestamp被更新。在Mysql中timestamp 列允许用指定一个时间值插入,而Mssql中好像只能是当前时间值或者为NULL。smallint(19) UNSIGNED 在这里如果没有接触Mysql的人一定会被搞糊涂了,在Mssql里一般是这样定义的:col_name MEDIUMINT 而不会是像Mysql中这样定义,col_nameTINYINT[(M)] [UNSIGNED]中的19是表示什么。
  在实际应用中正确选择字段类型是很重要的,如何真实表示显示字段属性,如何最有效地使用存储空间,这些都要设计到字段类型的知识。
  比如试着在所有的情况下使用最精确的类型。
  对于同一类型,比如浮点性一般有单精度和双精度之分,在不同的RDBMS他们的存储字节数有所不同,在Mysql数据库中如下:
  表2
  DOUBLE、DOUBLE PRECISION、REAL都是双精度的表示方法。其实同一回事。
  根据所表达的精度不同单精度度和双精度,选择相应长度,你总是能变换到以一个BIGINT存储的定点类型。这允许你用整数做所有的计算,并且仅在必要时将结果转换回浮点值。
  Mysql字段类型中讲到BLOB是一个能保存可变数量的数据的二进制的大对象。一个BLOB是一个能保存可变数量的数据的二进制的大对象。
  那么blob类型是否可以存贮图片等二进制数据?
  其宽度小于列指定宽度的值得左填补显示,但是不限制能在列中被存储的值的范围,也不限制值将被显示的位数对于声明为INT(5) ZEROFILL的列,一个为4的值作为00004被检索。
  参考文献:
  [1]丁宝康. 数据库实用教程[M].北京:清华大学出版社.2003.
  [2]苗雪兰. 数据库系统原理及应用教程[m].北京:机械工业出版社.2004.
  [3](美国)范斯瓦尼著、徐小青等译. MySQL完全手册[M].北京:电子工业出版社.2004.
  [4](美国)吉尔费伦著、王军等译.MySQL4从入门到精通[M].北京:电子工业出版社.2003.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:文章首先针对DICOM3.0标准,对DICOM医学图象的数据结构进行系统的分析,阐述了文件元信息,数据集和数据元素的格式;然后结合DICOM图象显示的各种方法,创建了DICOM图象显示核心类,并简要描述了部分函数的功能。  关键词:DICOM;PACS;显示;传输语法  中图分类号:TP317.4 文献标识码:A文章编号:1009-3044(2007)04-11092-02    1 引言 
期刊
摘要:根据企业对生产线上产品信息的应用需求,论述了一种基于B/S模式的实时数据采集系统的设计方案,并对此系统的体系结构、系统集成平台和网络安全技术进行了研究和设计。 通过研究,此系统可以成功的解决管理层和生产现场的数据同步问题,使企业管理层可以根据生产线的具体情况及时的做出决策,为企业进一步加强管理,提高工作效率,增强企业整体竞争力,发挥了重要的作用。  关键词:数据采集;B/S;ASP.NET;
期刊
摘要:高校机房信息安全已成为维护和管理工作的一个重要环节,而及时更新操作系统补丁,是弥补安全漏洞、防范感染攻击的根本手段。本文叙述了微软补丁更新方案WSUS拓扑结构和具体功能,结合机房维护的实际,详细了阐述了WSUS在服务器端和客户端的具体部署方法。实践表明,该方法对补丁分发、更新进行统一管理,在很大程度上减轻管理人员的压力,有效保证了高校机房信息系统的安全和日常实验教学的实施。  关键词:WSU
期刊
摘要:Windows的任务管理器显示了计算机上运行的程序和进程的详细信息,并提供了有关计算机性能的信息。通过对它的巧妙使用,可以帮助我们解决很多实际应用中的问题,文中介绍了几个应用的方面。  关键词:任务管理器;进程;巧用  中图分类号:TP316文献标识码:A文章编号:1009-3044(2007)04-11151-01    1 任务管理器的启动和打开  Windows2000的任务管理器窗口
期刊
摘要:针对 MATLAB软件在国外高校和工程中的广泛应用,本文结合数字信号处理双语教学改革,将 MATLAB引入双语教学,介绍了其在数字信号处理双语教学中的具体应用,以提高学生的学习效率与学习积极性,培养学生的创新能力。  关键词:MATLAB;数字信号处理;双语教学  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2007)04-11155-03    1 引言  “数字
期刊
摘要:注册表是Windows操作系统中的核心数据库,它包含了应用程序和计算机系统的全部信息,对系统的运行起着至关重要的作用。本文首先阐述了注册表的作用及结构分析,然后列举了注册表损坏的常见症状,最后提出了注册表备份与修复的办法。  关键词:注册表;结构分析;备份与修复  中图分类号:TP316文献标识码:A文章编号:1009-3044(2007)04-11158-02    1 引言  Windo
期刊
摘要:客户关系管理系统(CRM)是提高企业竞争力的有力保障。本文通过分析CRM的特征以及陶瓷企业特性,提出了一种基于工作流的陶瓷企业客户关系管理系统的构建方法。经证明该体系结构能有效地应用于当前陶瓷企业客户关系管理。  关键词:CRM;工作流;体系结构  中图分类号:TP302文献标识码:A文章编号:1009-3044(2007)03-10598-01    1 引言    中国作为陶瓷发源地,有
期刊
摘要:网络虚拟社区是各种动态网站技术的综合应用,集多种休闲娱乐功能于一身,能够提供各种交流和服务手段。ASP、ASP.NET、JSP、PHP等是虚拟社区设计常用的技术,它们各有优缺点。新兴的P2P技术具有网络可伸缩性好、健壮性强、资源的利用率较高、节省投资等优点。本文介绍如何利用基于JXTA平台的P2P技术去构建一个虚拟网络社区,虚拟校园的过程。  关键词:P2P;JXTA;虚拟校园  中图分类号
期刊
摘要:Lucene是一个高性能、纯Java的全文检索引擎工具包,而且开源。Lucene几乎适合于任何需要全文检索的应用,尤其是跨平台的应用。Lucene 可以被看作一个支持全文索引的数据库系统,但又与传统的关系型数据库有很大的不同。  关键词:Lucene,全文检索,关系型数据库  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)03-10615-02  关系型数据库
期刊
摘要:自然灾害每年都给国家带来巨大的经济损失,而且还在以更快的速度增长,严重影响我国的可持续发展。长期以来,单项减灾系统相互独立,管理分散,综合减灾效果差。建立减灾综合系统有利于减灾各部门工作的统一协调,大大提高灾害应急快速反应能力。利用AJAX技术可以让减灾系统更加高效,降低对使用者的技术要求,增强使用者和系统的交互,让减灾综合系统发挥更大作用。AJAX在防灾减灾中的应用,稍加推广,即可应用到各
期刊