`
lovnet
  • 浏览: 6709461 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

MySql数据类型

数据类型

描述

字节

推荐使用

SMALLINT

整数,从-32000 +32000范围

2

存储相对比较小的整数。         比如: 年纪,数量

INT

整数,从-2000000000 +2000000000 范围

4

存储中等整数             例如: 距离

BIGINT

不能用SMALLINT INT描述的超大整数。

8

存储超大的整数             例如: 科学/数学数据

FLOAT

单精度浮点型数据

4

存储小数数据 例如:测量,温度

DOUBLE

双精度浮点型数据

8

需要双精度存储的小数数据 例如:科学数据

DECIMAL

用户自定义精度的浮点型数据

变量;取决于精度与长度

以特别高的精度存储小数数据。例如:货币数额,科学数据

CHAR

固定长度的字符串

特定字符串长度(高达255字符)

存储通常包含预定义字符串的变量 例如: 定期航线,国家或邮编

VARCHAR

具有最大限制的可变长度的字符串

变量; 1 + 实际字符串长度 (高达 255 字符)

存储不同长度的字符串值(高达一个特定的最大限度). 例如:名字,密码,短文标签

TEXT

没有最大长度限制的可变长度的字符串

Variable; 2 + actual string length

存储大型文本数据             例如: 新闻故事,产品描述

BLOB

二进制字符串

变量;2 + 实际字符串长度

存储二进制数据            例如:图片,附件,二进制文档

DATE

yyyy-mm-dd格式的日期

3

存储日期              例如:生日,产品满期

TIME

hh:mm:ss格式的时间

3

存储时间或时间间隔 例如:报警声,两时间之间的间隔,任务开始/结束时间

DATETIME

yyyy-mm-ddhh:mm:ss格式结合日期和时间

8

存储包含日期和时间的数据        例如:提醒的人,事件

TIMESTAMP

yyyy-mm-ddhh:mm:ss格式结合日期和时间

4

记录即时时间              例如:事件提醒器,最后进入的时间标记

YEAR

yyyy格式的年份

1

存储年份   例如:毕业年,出生年

ENUM

一组数据,用户可从中选择其中一个

1 2个字节

存储字符属性,只能从中选择之一     例如:布尔量选择,如性别

SET

一组数据,用户可从中选择其中01或更多。

18字节;取决于设置的大小

存储字符属性,可从中选择多个字符的联合。例如:多选项选择,比如业余爱好和兴趣。

Oracle数据类型

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

二、标量(SCALAR
  合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。
  数字,它有三种基本类型--NUMBERPLS_INTEGERBINARY_INTENERNUMBER可以描述整数或实数,而PLS_INTEGERBINARY_INTENER只能描述整数。
  NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBERPS),P是精度,最大38位,S是刻度范围,可在-84...127间取值。例如:NUMBER52)可以用来存储表示-999.99...999.99间的数值。PS可以在定义是省略,例如:NUMBER5)、NUMBER等;
  BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种类型。
  PLS_INTEGERBINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。
  字符,包括CHARVARCHAR2VARCHAR)、LONGNCHARNVARCHAR2几种类型。
  CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHARL),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000
  VARCHAR2VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2200)的数据列可以保存200个英文字符或者100个汉字字符。
  LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。
  NCHARNVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHARVARCHAR2相同。
  ,包括RAWLONG RAW两种类型。用来存储二进制数据,不会在字符集间转换。
  RAW,类似于CHAR,声明方式RAWL),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
  LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。
  日期,只有一种类型--DATE,用来存储时间信息,站用7个字节(从世纪到秒),绝对没有千年虫问题。
  行标识,只有一种类型--ROWID,用来存储行标识符,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。
  布尔,只有一种类型--BOOLEAN,仅仅可以表示TRUEFALSE或者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是一种标量类型的类型声明。引用时也必须定义相关的变量。表和数组不同,表有两列,KEYVALUEKEY就是定义时声明的BINARY_INTENERVALUE就是定义时声明的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模式下的常规数据库应用所需了,后续的类型说实话,我玩了5ORACLE,都很少用到。
  附:参考书《ORACLE8 PL/SQL程序设计》(《ORACLE8 PL/SQL PROGRAMMING》) ORACLE技术系列丛书 机械工业出版社
  注:本文所列举的是PL/SQL当中可以定义的数据类型,并不是所有的类型都可以在建表时指定为列的数据类型

SqlServer数据类型

数据类型

说明

bigint

整数数据,从 –2^63 (–9,223,372,036,854,775,808) 2^63–1 (9,223,372,036,854,775,807)。存储大小为 8字节。

integer

整数数据,从 –2^31 (-2,147,483,648) 2^31–1 (2,147,483,647)

存储大小为 4字节。

smallint

整数数据,从 –32,768 32,767。存储大小为 2字节。

tinyint

整数数据,从 0 255。存储大小为 1字节。

bit

整数数据,值为 1 0

存储大小为 1位。

numeric (p, s)

固定精度和小数的数字数据,取值范围从 –10^38+1 10^38–1p 变量指定精度,取值范围从 1 38s 变量指定小数位数,取值范围从 0 p

存储大小为 19字节。

money

货币数据值,从 (–2^63/10000) (–922,337,203,685,477.5808) 2^63–1 (922,337,203,685,477.5807),准确度为货币单位的万分之一。存储大小为 8字节。

float

浮点数数据,从 –1.79E +308 1.79E+308

存储大小为 8字节。

real

浮点精度数字数据,从 –3.40E+38 3.40E+38

存储大小为 4字节。

datetime

日期和时间数据,从 1753 1 1 日到 9999 12 31 日,准确度为三百分之一秒或 3.33 毫秒。值被圆整到 .000.003 .007 毫秒增量。

存储为两个 4 字节整数。前 4个字节存储早于或晚于基日期 1900 1 1 日的天数。基日期是系统的参照日期。不允许 datetime 的值早于 1753 1 1 日。后 4个字节存储一天之中的具体时间,被表示为从午夜算起的毫秒数。秒数的有效范围是 0–59

national character(n)

Synonym:nchar(n)

固定长度的 Unicode 数据,最大长度为 4000 个字符。默认长度 = 1。存储大小(以字节计)是输入的字符数的两倍。

national character varying(n)

Synonym:nvarchar(n)

可变长度的 Unicode 数据,长度值范围为从 1 4000 个字符。默认长度 = 1。存储大小(以字节计)是输入的字符数的两倍。

ntext

可变长度的 Unicode 数据,最大长度为 (2^30–2)/2 (536,870,911) 个字符。存储大小(以字节计)是输入的字符数的两倍。

注意:

字符串函数中不再支持 ntext

binary(n)

固定长度的二进制数据,最大长度为 8000字节。默认长度 = 1

存储大小是固定的,是在类型中声明的以字节为单位的长度。

varbinary(n)

可变长度的二进制数据,最大长度为 8000字节。默认长度 = 1

存储大小可变。它表示值的长度(以字节为单位)。

image

可变长度的二进制数据,最大长度为 2^30–1 (1,073,741,823) 字节。

存储大小是值的以字节为单位的长度。

uniqueidentifier

全局唯一标识符 (GUID)。存储大小为 16字节。

IDENTITY [(s, i)]

这是数据列的一个属性,而不是一个独特的数据类型。

只有整数数据类型的数据列可用于标识列。一个表只能有一个标识列。可以指定种子和增量,但不能更新列。

s (seed) = 起始值

i(increment) = 增量值

ROWGUIDCOL

这是数据列的一个属性,而不是一个独特的数据类型。它是一个表中使用 uniqueidentifier 数据类型定义的列。一个表只能有一个 ROWGUIDCOL

SQLJava数据类型影射表

SQL 数据类型

JAVA数据类型

CHAR

String

VARCHAR

String

LONGVARCHAR

String

NUMERIC

java.math.BigDecimal

DECIMAL

java.math.BigDecimal

BIT

Boolean

TINYINT

Byte

SMALLINT

Short

INTEGER

Int

BIGINT

Long

REAL

Float

FLOAT

Double

DOUBLE

Double

BINARY

byte[]

VARBINARY

byte[]

LONGVARBINARY

byte[]

DATE

java.sql.Date

TIME

java.sql.Time

TIMESTAMP

java.sql.Timestamp


JavaSQL数据类型影射表

JAVA数据类型

SQL 数据类型

String

VARCHAR or LONGVARCHAR

java.math.BigDecimal

NUMERIC

Boolean

BIT

Byte

TINYINT

Short

SMALLINT

Int

INTEGER

Long

BIGINT

Float

REAL

Double

DOUBLE

byte[]

VARBINARY or LONGVARBINARY

java.sql.Date

DATE

java.sql.Time

TIME

java.sql.Timestamp

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会为其构造一个长度为nString对象来代表他,如果实际的字符个数不足n,系统会自动为String对象补上空格。当向数据库管理系统写入的数据类型应该是CHAR(n)时,JDBC也会将该String对象的末尾补上相应数量的空格。

一般情况下,CHAR, VARCHAR, LONGVARCHARString之间可以无差错的进行转换。但非常值得注意的是LONGVARCHAR,这种SQL的数据类型有时在数据库中代表的数据可能有几兆字节的大小,超过了String对象的承受范围。JDBC解决的办法是用JavaInput Stream来接受这种类型的数据[以后我们回涉及到]Input Stream不仅支持ASCII,而且支持Unicode,我们可以根据需要进行选择。

2 DECIMAL NUMERIC

SQLDECIMAL NUMERIC通常用来表示需要一定精度的定点数。在Java的简单数据类型中,没有一种类型与之相对应。但从JDK1.1开始,Sun公司在java.math.*包中加入了一个新的类BigDecimal,该类的对象可以与DECIMAL NUMERIC进行转换。

另外,当从数据库管理系统中读取数据时,还可以用getString()方法来获取DECIMAL NUMERIC

3 BINARY, VARBINARY, LONGVARBINARY

在编程时无须精确区分这三种SQL数据类型,JDBC将他们统一影射为byte[]。其中LONGVARBINARYLONGVARCHAR相似,可以代表几兆字节的数据,超出数组的承受范围。解决的办法依然是用Input Stream来接受数据。

4 BIT

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

5 TINYINT, SMALLINT, INTEGER, BIGINT

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

6 REAL, FLOAT, DOUBLE

SQL定义了REAL, FLOAT, DOUBLE来支持浮点数。JDBCREAL影射到Javafloat,FLOAT,DOUBLE影射到javadouble

7 DATE, TIME, TIMESTAMP

SQL定义了三种和日期相关的数据类型。 DATE代表年、月、日,TIME代表时、分、秒,TIMESTAMP结合了DATETIME的全部信息,而且增加了更加精确的时间计量单位。

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics