db2与mysql+字段大小,oralce, DB2 , sql server , mysql各数据库字段总结

oracle

数据类型

取值范围

描述

备注

Char(n)

n=1 to 2000字节

存储固定长度的字符串。默认长度为1。

Varchar2(n)

n=1 to 4000字节

可变长的字符串,具体定义时指明最大长度n,

这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。

如果数据长度没有达到最大值n,Oracle 会根据数据大小自动调节字段长度,

如果你的数据前后有空格,Oracle 8会自动将其删去。VARCHAR2是最常用的数据类型。

可做索引的最大长度3209。Varchar2类型的字段长度可以达到4000字节,Varchar2类型的变量长度可以达到32676字节。

节省表空间:一个空的varchar2(2000)字段和一个空的varchar2(2)字段所占用的空间是一样的。

Nchar(n)

n=1 to 2000字节

Unicode数据类型,只能存储utf-16和utf-8的数据。存储固定长度的字符串。

Nvarchar2(n)

n=1 to 4000字节

Unicode数据类型,只能存储utf-16和utf-8的数据。存储变长字符串。

Long

最大2G

可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。

long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

在不同系统间移动需要进行转换。

Clob

最大4G

存储单字节字符型数据。适用于存储超长文本。

Nclob

最大4G

存储多字节国家字符型数据。适用于存储超长文本。

Blob

最大4G

存储二进制数据。适用于存储图像、视频、音频等。

Bfile

最大长度是4GB

在数据库外部保存的大型二进制对象文件,最大长度是4GB。这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。

Oracle 可以读取、查询BFILE,但是不能写入,不参与事务。

Number(m,n)

m=1 to 38

n=-84 to 127

存储整数或浮点数。可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。

如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。

如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。

如:number(3,0),输入575.316,真正保存的数据是575。

Date

数据类型用来存储日期和时间格式的数据。默认格式:DD-MON-YYYY。从公元前4712年1月1日到公元4712年12月31日的所有合法日期

Row(n)

n=1 to 2000

可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle

用这种格式来保存较小的图形文件或带格式的文本文件,如Miceosoft Word文档。

raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

LongRow

最大长度是2GB。

可变长二进制数据,最大长度是2GB。Oracle

用这种格式来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件。

在同一张表中不能同时有long类型和long raw类型,long

raw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

Rowid

数据类型是ORACLE数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。

注:

1. Number的数据声明如下:

表示 作用 说明

Number(p, s) 声明一个定点数

p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127

Number(p) 声明一个整数 相当于Number(p, 0)

Number

声明一个浮点数其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:

 当一个数的整数部分的长度 > p-s 时,Oracle就会报错

 当一个数的小数部分的长度 > s 时,Oracle就会舍入。

 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。

 当s > p 时,

p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入

2.Char、Varchar、Varchar2区别

①.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR

(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2

(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。

②CHAR的效率比VARCHAR2的效率稍高。

③目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

何时该用CHAR,何时该用varchar2?

CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.

VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row

Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

④varchar 是 ANSI 标准

varchar2 是 oracle 标准

实际上本质目前是一样的,可以看做oracle搞出来的,oracle说:

ANSI标准可能随着 SQL-92 / SQl-99/ SQL -NNN 等发生变化

但是oracle保证varchar2 永远兼容……

Sql sever

数据类型

类型

描 述

bit

整型

bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes

或No、True 或Fa lse 、On 或Off

int

整型

int 数据类型可以存储从-

231(-2147483648)到231 (2147483

647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节

smallint

整型

smallint 数据类型可以存储从-

215(-32768)到215(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2

字节空间

tinyint

整型

tinyint 数据类型能存储从0到255

之间的整数。它在你只打算存储有限数目的数值时很有用。这种数据类型在数据库中占用1 个字节

numeric

精确数值型

numeric数据类型与decimal 型相同

decimal

精确数值型

decimal

数据类型能用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数

money

货币型

money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220

亿之间的数据,精确到货币单位的万分之一

smallmoney

货币型

smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648

到214748.3647 之间的数据,精确到货币单位的万分之一

float

近似数值型

float

数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308

之间的任意数

real

近似数值型

real

数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数

datetime

日期时间型

datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3

1日间所有的日期和时间数据, 精确到三百分之一秒或3.33毫秒

Smalldatetime

日期时间型

smalldatetime

数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟

cursor

特殊数据型

cursor

数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用

timestamp

特殊数据型

timestamp

数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”,但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的

Uniqueidentifier

特殊数据型

Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID

函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列

char

字符型

char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000

个字符

varchar

字符型

varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char

型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度

text

字符型

text

数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符

nchar

统一编码字符型

nchar

数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍

nvarchar

统一编码字符型

nvarchar

数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍

ntext

统一编码字符型

ntext

数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储230

-1或将近10亿个字符,且使用的字节空间增加了一倍

binary

二进制数据类型

binary数据类型用来存储可达8000

字节长的定长的二进制数据。当输入表的内容接近相同的长度时,你应该使用这种数据类型

varbinary

二进制数据类型

varbinary 数据类型用来存储可达8000

字节长的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型

image

二进制数据类型

image

数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节

Mysql

数值类型

类型

说明

TINYINT

非常小的整数

SMALLINT

较小整数

MEDIUMINT

中等大小整数

INT

标准整数

BIGINT

较大整数

FLOAT

单精度浮点数

DOUBLE

双精度浮点数

DECIMAL

一个串的浮点数

类型说明

取值范围

TINYINT[(M)]

有符号值:-128 到127(- 27 到27 - 1)

无符号值:0到255(0 到28 - 1)

SMALLINT[(M)]

有符号值:-32768 到32767(- 215 到215 - 1)

无符号值:0到65535(0 到21 6 - 1)

MEDIUMINT[(M)]

有符号值:-8388608 到8388607(- 22 3 到22 3 - 1 )

无符号值:0到16777215(0 到22 4 - 1)

INT[(M)]

有符号值:-2147683648 到2147683647(- 231 到231- 1)

无符号值:0到4294967295(0 到232 - 1)

BIGINT[(M)]

有符号值:-9223372036854775808 到9223373036854775807(-

263到263-1)

无符号值:0到18446744073709551615(0到264 – 1)

FLOAT[(M, D)]

最小非零值:±1.175494351E - 38

DOUBLE[(M,D)]

最小非零值:±2.2250738585072014E - 308

DECIMAL (M, D)

可变;其值的范围依赖于M 和D

类型说明

存储需求

TINYINT[(M)]

1字节

SMALLINT[(M)]

2字节

MEDIUMINT[(M)]

3字节

INT[(M)]

4字节

BIGINT[(M)]

8字节

FLOAT[(M, D)]

4字节

DOUBLE[(M, D)]

8字节

DECIMAL (M, D)

M字节(MySQL < 3.23),M+2字节(MySQL

> 3.23 )

字符串类型

类型名

说明

CHAR

定长字符串

VARCHAR

可变长字符串

TINYBLOB

非常小的BLOB(二进制大对象)

BLOB

小BLOB

MEDIUMBLOB

中等的BLOB

LONGBLOB

大BLOB

TINYTEXT

非常小的文本串

TEXT

小文本串

MEDIUMTEXT

中等文本串

LONGTEXT

大文本串

ENUM

枚举;列可赋予某个枚举成员

SET

集合;列可赋予多个集合成员

类型说明

最大尺寸

存储需求

CHAR( M)

M 字节

M 字节

VARCHAR(M)

M 字节

L + 1字节

TINYBLOB, TINYTEXT

28- 1字节

L + 1字节

BLOB, TEXT

216 - 1 字节

L + 2字节

MEDIUMBLOB, MEDIUMTEXT

224- 1字节

L + 3字节

LONGBLOB, LONGTEXT

232- 1字节

L + 4字节

ENUM(“value1”, “value2”, ...)

65535 个成员

1 或2字节

SET (“value1”, “value2”, ...)

64个成员

1、2、3、4 或8字节

日期类型

类型名

说明

DATE

“YYYY-MM-DD”格式表示的日期值

TIME

“hh:mm:ss”格式表示的时间值

DATETIME

“YYYY-MM-DD hh:mm:ss”格式

TIMESTAMP

“YYYYMMDDhhmmss”格式表示的时间戳值

YEAR

“YYYY”格式的年份值

类型名

取值范围

存储需求

DATE

“1000-01-01”到“9999-12-31”

3字节

TIME

“-838:59:59”到“838:59:59”

3字节

DATETIME

“1000-01-01 00:00:00” 到“9999-12-31 23:59:59”

8字节

TIMESTAMP

19700101000000 到2037 年的某个时刻

4字节

YEAR

1901 到2155

1字节

DB2

DB2数据库的内置数据类型主要分成数值型(numeric)、字符串型(character

string)、图形字符串(graphic string)、二进制字符串型(binary

string)或日期时间型(datetime)。还有一种叫做 DATALINK 的特殊数据类型。DATALINK

值包含了对存储在数据库以外的文件的逻辑引用。

数值型数据类型包括 SMALLINT、INTEGER、BIGINT、DECIMAL(p,s)、REAL 和

DOUBLE。所有数值都有符号和精度。精度是指除符号以外的二进制或十进制的位数。如果数字的值大于等于零,就认为符号为正。

*小整型,SMALLINT:小整型是两个字节的整数,精度为 5 位。小整型的范围从 -32,768 到 32,767。

*大整型,INTEGER 或 INT:大整型是四个字节的整数,精度为 10 位。大整型的范围从 -2,147,483,648 到

2,147,483,647。

*巨整型,BIGINT:巨整型是八个字节的整数,精度为 19 位。巨整型的范围从

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

*小数型,DECIMAL(p,s)、DEC(p,s)、NUMERIC(p,s) 或

NUM(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded

decimal,BCD)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。最大精度是

31 位。小数型的范围从 -10**31+1 到 10**31-1。

*单精度浮点数(Single-precision floating-point),REAL:单精度浮点数是实数的 32

位近似值。数字可以为零,或者在从 -3.402E+38 到 -1.175E-37 或从 1.175E-37 到 3.402E+38

的范围内。

*双精度浮点数(Double-precision floating-point),DOUBLE,DOUBLE PRECISION

或 FLOAT:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -1.79769E+308 到 -2.225E-307

或从 2.225E-307 到 1.79769E+308 的范围内。

字符串是字节序列。字符串包括 CHAR(n) 类型的定长字符串和 VARCHAR(n)、LONG VARCHAR 或

CLOB(n) 类型的变长字符串。字符串的长度就是序列中的字节数。

*定长字符串,CHARACTER(n) 或 CHAR(n):定长字符串的长度介于 1 到 254

字节之间。如果没有指定长度,那么就认为是 1 个字节。

*变长字符串,VARCHAR(n)、CHARACTER VARYING(n) 或 CHAR

VARYING(n):VARCHAR(n) 类型的字符串是变长字符串,最长可达 32,672 字节。

*LONG VARCHAR:LONG VARCHAR 类型的字符串是变长字符串,最长可达 32,700 字节。

*字符大对象字符串(Character Large Object String),CLOB(n[K M G]):CLOB

是变长字符串,最长可以达到 2,147,483,647 字节。如果只指定了 n,那么 n 的值就是最大长度。如果指定了

nK,那么最大长度就是 n*1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是

n*1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n

的最大值是 2)。CLOB 用于存储基于大单字节字符集(single-byte character

set,SBCS)字符的数据或基于混合(多字节字符集(MBCS)和

SBCS)字符的数据。图形字符串是表示双字节字符数据的字节序列。图形字符串包括类型为 GRAPHIC(n) 的定长图形字符串和类型为

VARGRAPHIC(n)、LONG VARGRAPHIC 和 DBCLOB(n)

的变长图形字符串。字符串的长度就是序列中双字节字符的数目。

*定长图形字符串,GRAPHIC(n):定长图形字符串的长度介于 1 到 127 个双字节字符之间。如果没有指定长度,就认为是 1

个双字节字符。

*变长图形字符串,VARGRAPHIC(n):VARGRAPHIC(n) 类型的字符串是变长图形字符串,最大长度可达 16,336

个双字节字符。

*LONG VARGRAPHIC:LONG VARGRAPHIC 类型的字符串是变长图形字符串,最大长度可达 16,350

个双字节字符。

*双字节字符大对象字符串,DBCLOB(n[K M G]):双字节字符大对象是变长双字节字符图形字符串,最长可达

1,073,741,823 个字符。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n*1,024(n

的最大值为 1,048,576)。如果指定了 nM,那么最大长度就是 n*1,048,576(n 的最大值为 1,024)。如果指定了

nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 1)。DBCLOB 用于存储基于大

DBCS(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序列。二进制字符串包括

BLOB(n)

类型的变长字符串,它用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。

* 二进制大对象,BLOB(n[K M G]):二进制大对象是变长字符串,最长可达 2,147,483,647 字节。如果只指定了

n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n*1,024(n 的最大值为 2,097,152)。如果指定了

nM,那么最大长度就是 n*1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是

n*1,073,741,824(n 的最大值是 2)。

日期时间型数据类型包括 DATE、TIME 和

TIMESTAMP。日期时间值可在某些算术和字符串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。

*DATE:DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到

12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。DATE 列长 10 个字节。

*TIME:TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到

59。如果小时为 24,分钟和秒的值都是 0。TIME 列长 8 个字节。

*TIMESTAMP:TIMESTAMP 是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从 0001

到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。小时部分的范围是从 0 到

24。分钟和秒部分的范围都是从 0 到 59。微秒部分的范围是从 000000 到 999999。如果小时是

24,那么分钟值、秒的值和微秒的值都是 0。TIMESTAMP 列长 26 个字节。日期时间值的字符串表示:尽管 DATE、TIME

和 TIMESTAMP 的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,CHAR 标量函数(请参阅 SQL

的“词类(parts of speech)”)可以用于创建日期时间值的字符串表示。

*日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月份和日部分中前面的零可以省略。

*时间值的字符串表示是以数字开头,长度不少于 4

个字符的字符串。时间值的小时部分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0。

*时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时间戳记字符串表示形式为

yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上为零

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值