好文档 - 专业文书写作范文服务资料分享网站

MySqlOracleSqlServer三大数据库的数据类型列表汇编

天下 分享 时间: 加入收藏 我要投稿 点赞

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

MySql数据类型

数据类型 SMALLINT INT BIGINT FLOAT DOUBLE DECIMAL CHAR VARCHAR 描述 整数,从-32000到 字节 2 推荐使用 存储相对比较小的整数。 比如: 年纪,数量 存储中等整数 例如: 距离 存储超大的整数 例如: 科学/数学数据 存储小数数据 例如:测量,温度 需要双精度存储的小数数据 例如:科学数据 以特别高的精度存储小数数据。例如:货币数额,科学数据 +32000范围 整数,从-2000000000 4 到 +2000000000 范围 不能用SMALLINT 或 8 INT描述的超大整数。 单精度浮点型数据 双精度浮点型数据 用户自定义精度的浮点型数据 固定长度的字符串 具有最大限制的可变长度的字符串 没有最大长度限制的可变长度的字符串 二进制字符串 以 yyyy-mm-dd格式的日期 4 8 变量;取决于精度与长度 特定字符串长度存储通常包含预定义字符串的变量 例如: (高达255字符) 定期航线,国家或邮编 变量; 1 + 实际存储不同长度的字符串值(高达一个特定的最字符串长度 (高大限度). 例如:名字,密码,短文标签 达 255 字符) Variable; 2 +存储大型文本数据 聽 actual 例如: 新闻故事,产品描述 string length 变量;2 + 实际存储二进制数据 字符串长度 例如:图片,附件,二进制文档 3 存储日期 例如:生日,产品满期 存储时间或时间间隔 例如:报警声,两时间之间的间隔,任务开始/结束时间 存储包含日期和时间的数据 例如:提醒的人,事件 4 1 1或 2个字节 从1到8字节;取决于设置的大小 记录即时时间 例如:事件提醒器,“最后进入”的时间标记 存储年份 例如:毕业年,出生年 存储字符属性,只能从中选择之一 例如:布尔量选择,如性别 存储字符属性,可从中选择多个字符的联合。例如:多选项选择,比如业余爱好和兴趣。 TEXT BLOB DATE TIME DATETIME TIMESTAMP YEAR ENUM SET 以 hh:mm:ss格式的时间 3 yyyy-mm-ddhh:mm:ss格式结合日期和时间 yyyy-mm-ddhh:mm:ss格式结合日期和时间 以 yyyy格式的年份 一组数据,用户可从中选择其中一个 一组数据,用户可从中选择其中0,1或更多。 8

Oracle数据类型

一、概述

在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。 二、标量(SCALAR)

合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。

数字,它有三种基本类型--NUMBER、PLS_INTEGER和BINARY_INTENER。NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。

NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84...127间取值。例如:NUMBER(5,2)可以用来存储表示-999.99...999.99间的数值。P、S可以在定义是省略,例如: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),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大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。 固定长度的 Unicode 数据,最大长度为 4000 个字符。默认长度 = 1。存储大小(以字节计)是输入的字符数的两倍。 可变长度的 Unicode 数据,长度值范围为从 1 到 4000 个字符。默认长度 = 1。存储大小(以字节计)是输入的字符数的两倍。 固定长度的二进制数据,最大长度为 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) = 增量值 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的String对象来代表他,如果实际的字符个数不足’n’,系统会自动为String对象补上空格。当向数据库管理系统写入的数据类型应该是CHAR(n)时,JDBC也会将该String对象的末尾补上相应数量的空格。

一般情况下,CHAR, VARCHAR, LONGVARCHAR和String之间可以无差错的进行转换。但非常值得注意的是LONGVARCHAR,这种SQL的数据类型有时在数据库中代表的数据可能有几兆字节的大小,超过了String对象的承受范围。JDBC解决的办法是用Java的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) BIT

代表一个二进制位的BIT类型被JDBC影射为boolean型。

(5) TINYINT, SMALLINT, INTEGER, 和 BIGINT

SQL语言的TINYINT, SMALLINT, INTEGER, 和 BIGINT分别代表8位、16位、32位、64位的数据。他们分别被影射为Java的byte, short, int, 和 long

(6) REAL, FLOAT, 和 DOUBLE

SQL定义了REAL, FLOAT, DOUBLE来支持浮点数。JDBC将REAL影射到Java的float,将FLOAT,DOUBLE影射到java的double。

(7) DATE, TIME, 和 TIMESTAMP

SQL定义了三种和日期相关的数据类型。 DATE代表年、月、日,TIME代表时、分、秒,TIMESTAMP结合了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中的三个日期数据类型相对应。

MySqlOracleSqlServer三大数据库的数据类型列表汇编

MySqlOracleSqlServer三大数据库的数据类型列表MySql数据类型数据类型SMALLINTINTBIGINTFLOATDOUBLEDECIMALCHARVARCHAR描述整数,从-32000到字节2推荐使用存储相对比较小的整数。比如:年纪,数量存储中等整数
推荐度:
点击下载文档文档为doc格式
5ll5h3ef9h1qw0b8cvba7dd7d92whi01ap8
领取福利

微信扫码领取福利

微信扫码分享