文档视界 最新最全的文档下载
当前位置:文档视界 › MySql Oracle SqlServer三大数据库的数据类型列表

MySql Oracle SqlServer三大数据库的数据类型列表

本文由eneve520贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
MySql Oracle SqlServer 三大数据库的数据类型列表
MySql 数据类型
数据类型 SMALLINT INT BIGINT FLOAT DOUBLE DECIMAL CHAR VARCHAR 描述 整数,从-32000 到 +32000 范围 整 数 , 从 -2000000000 到 +2000000000 范围 不 能 用 SMALLINT 或 INT 描述的超大整数. 单精度浮点型数据 双精度浮点型数据 用户自定义精度的浮点型 数据 固定长度的字符串 具有最大限制的可变长度 的字符串 没有最大长度限制的可变 长度的字符串 二进制字符串 以 yyyy-mm-dd 格式的 日期 以 hh:mm:ss 格式的时间 yyyy-mm-ddhh:mm:ss 格式结合日期和时间 yyyy-mm-ddhh:mm:ss 格式结合日期和时间 以 yyyy 格式的年份 一组数据, 用户可从中选择 其中一个 SET 一组数据, 用户可从中选择 其中 0,1 或更多. 从 1 到 8 字节; 取决于设置的大 小 字节 2 4 8 4 8 变 量 ;取 决于 精 度与长度 特定字符串长度 (高达 255 字符) 变量; 1 + 实际 字符串长度 (高 达 255 字符) Variable; 2 + 听 actual string length 变量;2 + 实际 字符串长度 3 3 8 4 1 1 或 2 个字节 推荐使用 存储相对比较小的整数. 比如: 年纪,数量 存储中等整数 例如: 距离 存储超大的整数 例如: 科学/数学数据 存储小数数据 例如:测量,温度 例如:科学数据 需要双精度存储的小数数据 额,科学数据 存储通常包含预定义字符串的变量 定期航线,国家或邮编 存储不同长度的字符串值(高达一个特定的最 大限度). 例如:名字,密码,短文标签 存储大型文本数据 例如: 新闻故事,产品描述 存储二进制数据 例如:图片,附件,二进制文档 存储日期 例如:生日,产品满期 存储时间或时间间隔 例如:报警声,两时间 之间的间隔,任务开始/结束时间 DATETIME TIMESTAMP YEAR ENUM 存储包含日期和时间的数据 例如:提醒的人,事件 记录即时时间 例如:事件提醒器,"最后进入"的时间标记 存储年份 例如:毕业年,出生年 存储字符属性,只能从中选择之一 例如:布尔量选择,如性别 存储字符属性,可从中选择多个字符的联合. 例如:多选项选择,比如业余爱好和兴趣. 例如:
以特别高的精度存储小数数据.例如:货币数
TEXT
BLOB DATE TIME
Oracle 数据类型
一,概述 在 ORACLE8 中定义了:标量(SCALAR) ,复合(COMPOSITE) ,引用(REFERENCE)和 LOB 四种数据类型,下面 详细介绍它们的特性. 标量( 二,标量(SCALAR) ) 合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展.它又分为七个组:数字,字符,行, 日期,行标识,布尔和可信. 数字,它有三种基本类型--NUMBER,PLS_INTEGER 和 BINARY_INTENER.NUMBER 可以描述整数或实数,而 PLS_INTEGER 和 BINARY_INTENER 只能描述整数.

NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行 运算的.它的定义方式是 NUMBER(P,S) 是精度,最大 38 位,S 是刻度范围,可在-84……127 间取值.例如: ,P NUMBER (5, 可以用来存储表示-999.99……999.99 间的数值. S 可以在定义是省略, 2) P, 例如: NUMBER (5) NUMBER , 等; BINARY_INTENER 用来描述不存储在数据库中, 但是需要用来计算的带符号的整数值. 它以 2 的补码二进制形式 表述.循环计数器经常使用这种类型. PLS_INTEGER 和 BINARY_INTENER 唯一区别是在计算当中发生溢出时,BINARY_INTENER 型的变量会被自动指派 给一个 NUMBER 型而不会出错,PLS_INTEGER 型的变量将会发生错误. 字符,包括 CHAR,VARCHAR2(VARCHAR) ,LONG,NCHAR 和 NVARCHAR2 几种类型. CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充.它的声明方式如下 CHAR(L) ,L 为字符串长度,缺省为 1,作为变量最大 32767 个字符,作为数据存储在 ORACLE8 中最大为 2000. VARCHAR2(VARCHAR) ,描述变长字符串.它的声明方式如下 VARCHAR2(L) 为字符串长度,没有缺省值, ,L 作为变量最大 32767 个字节,作为数据存储在 ORACLE8 中最大为 4000.在多字节语言环境中,实际存储的字符个 数可能小于 L 值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个 VARCHAR2(200)的 数据列可以保存 200 个英文字符或者 100 个汉字字符. LONG,在数据库存储中可以用来保存高达 2G 的数据,作为变量,可以表示一个最大长度为 32760 字节的可变 字符串. NCHAR,NVARCHAR2,国家字符集,与环境变量 NLS 指定的语言集密切相关,使用方法和 CHAR,VARCHAR2 相 同. 行,包括 RAW 和 LONG RAW 两种类型.用来存储二进制数据,不会在字符集间转换. RAW,类似于 CHAR,声明方式 RAW(L) 为长度,以字节为单位,作为数据库列最大 2000,作为变量最大 ,L 32767 字节. LONG RAW,类似于 LONG,作为数据库列最大存储 2G 字节的数据,作为变量最大 32760 字节. 日期,只有一种类型--DATE,用来存储时间信息,站用 7 个字节(从世纪到秒) ,绝对没有"千年虫"问题. 行标识, 只有一种类型--ROWID, 用来存储"行标识符", 可以利用 ROWIDTOCHAR 函数来将行标识转换成为字符. 布尔,只有一种类型--BOOLEAN,仅仅可以表示 TRUE,FALSE 或者 NULL. 可信,只有一种类型--MLSLABEL,可以在 TRUSTED ORACLE 中用来保存可变长度的二进制标签.在标准 ORACLE 中,只能存储 NULL 值. 复合( 三,复合(COMPOSITE) ) 标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型.主要有记录,表. 记录,可以看作是一组标量的组合结构,它的声明方式如下: TYPE record_type_name IS RECORD ( filed1 type1 [NOT NULL] [:=expr1] …… filedn typen [NOT NULL] [:=exprn] ) 其中, record_type_name 是记录类型的

名字. (是不是看着象 CREATE TABLE?……) 引用时必须定义相关的变量, 记录只是 TYPE,不是 VARIABLE. 表,不是物理存储数据的表,在这里是一种变量类型,也称为 PL/SQL 表,它类似于 C 语言中的数组,在处理 方式上也相似.它的声明方式如下:
TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER; 其中, table_type_name 是类型的名字, scalar_type 是一种标量类型的类型声明. 引用时也必须定义相关的变量. 表和数组不同,表有两列,KEY 和 VALUE,KEY 就是定义时声明的 BINARY_INTENER,VALUE 就是定义时声明的 scalar_type. 除了记录和表之外,还有对象类型,集合(嵌套表和 VARRAYS)等类型,这些将专门讲解. 引用( 四,引用(REFERENCE) ) 在 PL/SQL8.0 之前,只有一种类型--REF CURSOR,也就是游标.它的定义较为简单, CURSOR cursor_name IS select ……from……; 在 PL/SQL8.0 之后,引入了 REF 类型,它指向一个对象.这种类型将单独讲解. (等我弄明白再说,免得在高人 面前……) 五,LOB 型 LOB 变量主要是用来存储大量数据的数据库字段,最大可以存储 4G 字节的内容(这么大,存 VCD?,浪费!. ) 主要有: CLOB:和 ORACLE7 中的 LONG 类型相似,存储单字节字符数据. (别用来存中文喔.. .) NCLOB:用来存储定宽多字节字符数据. (例如:存《啸傲江湖》就挺好) BLOB:和 LONG RAW 相似,用来存储无结构的二进制数据. BFILE:它用来允许 ORACLE 对数据库外存储的大型二进制文本进行只读形式的访问. 六,其他 其实在完成对标量变量的理解之后, 基本上可以应付 C/S 模式下的常规数据库应用所需了, 后续的类型说实话, 我玩了 5 年 ORACLE,都很少用到. 附:参考书《ORACLE8 PL/SQL 程序设计》《ORACLE8 PL/SQL PROGRAMMING》 ORACLE 技术系列丛书 机械工 ( ) 业出版社 注:本文所列举的是 PL/SQL 当中可以定义的数据类型,并不是所有的类型都可以在建表时指定为列的数据类 型
SqlServer 数据类型
数据类型 bigint 存储大小为 8 字节. 整数数据,从 –2^31 (-2,147,483,648) 到 2^31–1 (2,147,483,647). integer 存储大小为 4 字节. smallint tinyint 整数数据,从 –32,768 到 32,767.存储大小为 2 字节. 整数数据,从 0 到 255.存储大小为 1 字节. 整数数据,值为 1 或 0. bit 存储大小为 1 位. 固定精度和小数的数字数据, 取值范围从 –10^38+1 到 10^38–1. 变量指定精度, p 取值范围从 1 到 numeric (p, s) 38.s 变量指定小数位数,取值范围从 0 到 p. 存储大小为 19 字节. 货币数据值,从 (–2^63/10000) (–922,337,203,685,477.5808) 到 2^63–1 (922,337,203,685,477.5807),准确度为货币单位的万分之一.存储大小为 8 字节. 说明 整数数据,从 –2^63 (–9,223,372,036,854,775,808) 到 2^63–1 (9,223,372,036,854,775,807).
money
浮点数数据,从 –1.79E +308 到 1.79E+308 float 存储大小为 8

字节. 浮点精度数字数据,从 –3.40E+38 到 3.40E+38. real 存储大小为 4 字节. 日期和时间数据, 1753 年 1 月 1 日到 9999 年 12 月 31 日, 从 准确度为三百分之一秒或 3.33 毫 秒.值被圆整到 .000,.003 或 .007 毫秒增量. datetime 存储为两个 4 字节整数.前 4 个字节存储早于或晚于基日期 1900 年 1 月 1 日的天数.基日期是系 统的参照日期.不允许 datetime 的值早于 1753 年 1 月 1 日.后 4 个字节存储一天之中的具体时 间,被表示为从午夜算起的毫秒数.秒数的有效范围是 0–59. national character(n) Synonym:nchar(n) national character varying(n) Synonym:nvarchar(n) 可变长度的 Unicode 数据,最大长度为 (2^30–2)/2 (536,870,911) 个字符.存储大小(以字节计) ntext 是输入的字符数的两倍. 注意: 字符串函数中不再支持 ntext. 固定长度的二进制数据,最大长度为 8000 字节.默认长度 = 1. binary(n) 存储大小是固定的,是在类型中声明的以字节为单位的长度. 可变长度的二进制数据,最大长度为 8000 字节.默认长度 = 1. varbinary(n) 存储大小可变.它表示值的长度(以字节为单位). 可变长度的二进制数据,最大长度为 2^30–1 (1,073,741,823) 字节. image 存储大小是值的以字节为单位的长度. uniqueidentifier 全局唯一标识符 (GUID).存储大小为 16 字节. 这是数据列的一个属性,而不是一个独特的数据类型. 只有整数数据类型的数据列可用于标识列.一个表只能有一个标识列.可以指定种子和增量,但不能更新 IDENTITY [(s, i)] 列. s (seed) = 起始值 i(increment) = 增量值 可变长度的 Unicode 数据,长度值范围为从 1 到 4000 个字符.默认长度 = 1.存储大小(以字节计) 是输入的字符数的两倍.
固定长度的 Unicode 数据,最大长度为 4000 个字符.默认长度 = 1.存储大小(以字节计)是输入 的字符数的两倍.
ROWGUIDCOL
这是数据列的一个属性,而不是一个独特的数据类型.它是一个表中使用 uniqueidentifier 数据类型定 义的列.一个表只能有一个 ROWGUIDCOL 列
表 SQL 到 Java 数据类型影射表 SQL 数据类型
CHAR VARCHAR LONGVARCHAR NUMERIC DECIMAL BIT TINYINT SMALLINT INTEGER BIGINT REAL FLOAT DOUBLE BINARY VARBINARY LONGVARBINARY DATE TIME TIMESTAMP
JAVA 数据类型
String String String java.math.BigDecimal java.math.BigDecimal Boolean Byte Short Int Long Float Double Double byte[] byte[] byte[] java.sql.Date java.sql.Time java.sql.Timestamp
Java 到 SQL 数据类型影射表 JAVA 数据类型
String java.math.BigDecimal Boolean Byte
SQL 数据类型
VARCHAR or LONGVARCHAR NUMERIC BIT TINYINT
Short Int Long Float Double byte[] java.sql.Date java.sql.Time java.sql.Timestamp
SMALLINT INTEGER BIGINT REAL DOUBLE VARBINARY or LONGVARBINARY DATE TIME TIMESTAMP
这里,大伙要注意了,并不是所有的数据类型在各

种数据库管理系统中都被支持.下面,就几种常用的数据类型之间的转化进行说明:
(1) )
CHAR, VARCHAR, 和 LONGVARCHAR
在 SQL 语言中,有三种分别表示不同长度的字符类型 CHAR, VARCHAR, 和 LONGVARCHAR,在 Java/Jsp 中并没有相应的三种 不同的数据类型与之一一对应,JDBC 的处理方法是将其与 String 或者 char[]对应起来.在实际编程中不必对着三种 SQL 数据类型进 行区分,全部将他们转化为 Sting 或者 char[]就可以了.而且通常使用应用的非常普遍的 String 类型.我们还可以利用 String 类提供 的方法将一个 String 对象转化为 char[],或者用 char[]为参数构造一个 Stirng 对象. 对于定长度的 SQL 数据类型 CHAR(n),当从数据库管理系统中获得的结果集提取该类型的数据时,JDBC 会为其构造一个长度为 n 的 St ring 对象来代表他,如果实际的字符个数不足'n',系统会自动为 String 对象补上空格.当向数据库管理系统写入的数据类型应该 是 CHAR(n)时,JDBC 也会将该 String 对象的末尾补上相应数量的空格. 一般情况下,CHAR, VARCHAR, LONGVARCHAR 和 String 之间可以无差错的进行转换.但非常值得注意的是 LONGVARCHAR, 这种 SQL 的数据类型有时在数据库中代表的数据可能有几兆字节的大小,超过了 String 对象的承受范围.JDBC 解决的办法是用 Jav a 的 Input Stream 来接受这种类型的数据[以后我们回涉及到].Input Stream 不仅支持 ASCII,而且支持 Unicode,我们可以根据需要 进行选择.
(2) )
DECIMAL 和 NUMERIC
SQL 的 DECIMAL 和 NUMERIC 通常用来表示需要一定精度的定点数.在 Java 的简单数据类型中,没有一种类型与之相对应.但从 JDK1.1 开始,Sun 公司在 java.math.*包中加入了一个新的类 BigDecimal,该类的对象可以与 DECIMAL ,NUMERIC 进行转换. 另外,当从数据库管理系统中读取数据时,还可以用 getString()方法来获取 DECIMAL 和 NUMERIC.
(3) )
BINARY, VARBINARY, 和 LONGVARBINARY
在编程时无须精确区分这三种 SQL 数据类型,JDBC 将他们统一影射为 byte[].其中 LONGVARBINARY 和 LONGVARCHAR 相似,可以代表 几兆字节的数据,超出数组的承受范围.解决的办法依然是用 Input Stream 来接受数据.
(4) ) (5) )
BIT TINYINT, SMALLINT, INTEGER, 和 BIGINT
代表一个二进制位的 BIT 类型被 JDBC 影射为 boolean 型. SQL 语言的 TINYINT, SMALLINT, INTEGER, 和 BIGINT 分别代表 8 位,16 位,32 位,64 位的数据.他们分别被影射为 Java 的 byte, short, int, 和 long
(6) )
ble.
REAL, FLOAT, 和 DOUBLE
DOUBLE 来支持浮点数.JDBC 将 REAL 影射到 Java 的 float,将 FLOAT,DOUBLE 影射到 java 的 dou
SQL 定义了 REAL, FLOAT,
(7) )
DATE, TIME, 和 TIMESTAMP
SQL 定义了三种和日期相关的数据类型. DATE 代表年,月,日,TIME 代表时,分,秒,TIM

ESTAMP 结合了 DATE 和 TIME 的全 部信息,而且增加了更加精确的时间计量单位. 在 java 的标准类库中,java.util.*包中的 Date 类用来表示日期和时间.但是该类和 SQL 中的 DATE, TIME, 和 TIMESTAMP 直接影 射关系并不清晰.并且,该类也不支持 TIMESTAMP 的精确时间计量单位.因此,Sun 公司在 java.sql.*中为 java.util.Date 增加了三 个子类:java.sql.Date,java.sql.Time ,java.sql.Timestamp,分别与 SQL 中的三个日期数据类型相对应.

相关文档
相关文档 最新文档