oralce, DB2 , sql server , mysql各数据库字段总结
Oralce
字段 | 注意事项 |
Date |
|
Varchar2 ( n ) | N<=4000 |
Long | N<=2G |
Row & long row | N<=255 |
Blob | N<=4G |
Clob | N<=4G |
Nclob | N<=4G |
Number |
|
DB2
字段 | 注意事项 |
DATE TIME TIMESTAMPl | 如果只使用 MM/DD/YYY, 那么使用 DATE 类型。 如果只使用 HH:MM:SS, 那么使用 TIME 类型。 如果要使用日期和时间,则使用时间戳类型( TIMESTAMP ) 可以使用 Oracle 中的 TO_CHAR() 函数来取 DATE 的字串来分别与 DB2/400 的 DATE 、 TIME 相匹配。 |
CHAR(n) VARCHAR(n) | 若 n<=32766, 则使用 DB2/400 中的 CHAR 类型、 VARCHAR |
VARCHAR(n) CLOB(n) | 若 n<=32K, 则使用 DB2/400 中的 CHAR 类型、 VARCHAR 。 若 32K=< n <=2GB ,则使用 CLOB |
CHAR(n) FOR BIT DATA VARCHAR(n) FOR BIT DATA BLOB(n) | 若 n<=32K, 则使用 CHAR(n) FOR BIT DATA 或 VARCHAR(n) FOR BIT DATA 若 n<=2GB, 则使用 BLOB(n) |
BLOB(n) | 若 n<=2GB, 则使用 BLOB(n) |
CLOB(n) | 若 n<=2GB, 则使用 CLOB(n) |
DBCLOB(n) | 若 n<=2GB, 则使用 DBCLOB(n/2) |
SMALLINT/INTEGER/BIGINT DECIMAL(p,s)/NUMBER(p,s) Float(n)/ REAL/DOUBLE | 若 Oracle 中定义 NUMBER(p) 或 NUMBER(p,s), 则使用 SAMLLINT/INTEGER/BIGINT 若 Oracle 中定义 NUMBER(p,s), 则使用 DECIMAL(p,s) 若 Oracle 中定义 NUMBER, 则使用 FLOAT(n)/REAL/DOUBLE |
NUMBER
Oracle 中的 NUMBER 类型可以对应 DB2/400 中的很多类型,这种对应关系要依赖于 Oracle 中 number 将用于保存何种类型的数据,是整型还是带有小数位的实型数据,另外还要考虑类型所占用的存储空间,例如 :SAMLLINT 占 2 byte, INTEGER 占 4 byte; BIGINT 占 8 byte;Oracle 中的 NUMBER 类型所占用的存储空间要根据它的定义而定,例如缺省精度下的 NUMBER 有 38 个数字长,占用 20 byte 的空间。具体的对应关系请参照上表。
ROW and LOB 类型
DB2/400 提供 VARCHAR 和 CLOB 与 ORACLE 中的 RAW 和 LONG RAW 相对应。 ORACLE 也支持大对象 :BLOB 、 CLOB 、 CLOB 和 NCLOB, ORACLE 中的 BLOB 和 CLOB 可以提供 4GB 的空间,而 DB2/400 中的 BLOB 和 CLOB 只能存放 2GB 的数据 ;DB2/400 中的 DBCLOB 与 ORACLE 中的 NCLOB 2GB 相对应。 Oracle 中的 BFILE 数据类型用于管理数据库以外的二进制数据,数据库中的表将指向数据库外部的存放的 BFILE 文件, DB2/400 也提供一个类似的数据类型 DATALINK 相对应。
ROWID
Oracle ROWIND 虚拟列用于对表中的某一列进行唯一标示, DB2/400 中也有这样的数据类型 ROWID ,它与 ORACLE 中的 ROWID 的功能相似。 DB2/400 中的 ROWID 可以存放 40 byte 的数据用来唯一标示表中的每一行,它没有 ccsid 属性,这些信息中没有关于 datafile 、 block 或 row 的信息。
例如 :
CREATE TABLE LIBRARYNAME/ORDERS2 (ORDERNO ROWID, SHIPPED_TO VARCHAR (36) , ORDER_DATE DATE) ORDERNO 的数据类型为 ROWID ,用于存放订单号,每当插入一行时,系统自动生成一个值,存放进这个字段。可以用 OPERATION NAVIGATOR 查看它的内容。
Character type
DB2/400 的 CHAR 、 VARCHAR 类型与 ORACLE 中的 VARCHAR2(n) 类型相对应,但是 ORACLE 中的 VARCHAR2(n) 类型仅用于存放较小的字符串,这里的 n 小于 4000 ,因此在这种情况下,最好用定长的 CHAR(N) 类型与 ORACLE 的 VARCHAR2(n) 相对应,这样不仅可以提高效率,还可以节省存储空间,若使用 VARCHAR(n) 类型最好用 ALLOCATE 参数,这样可以提高数据库的性能 , 它可以减少内存和硬盘之间的输入 / 输出操作。
要注意 DB2/400 中的字符串中文输入问题,要想在 DB2/400 上输入中文应用这样的 SQL 创建表,这里的 CCSID 935, 代表简体中文。
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 ) |
SMALLINT[(M)] | 有符号值: -32768 到 32767 ( - 215 到 215 - 1 ) |
MEDIUMINT[(M)] | 有符号值: -8388608 到 8388607 ( - 22 3 到 22 3 - 1 ) |
INT[(M)] | 有符号值: -2147683648 到 2147683647 ( - 231 到 231- 1 ) |
BIGINT[(M)] | 有符号值: -9223372036854775808 到 9223373036854775807 ( - 263 到 263-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 | 2 8 - 1 字节 | L + 1 字节 |
BLOB, TEXT | 2 16 - 1 字节 | L + 2 字节 |
MEDIUMBLOB, MEDIUMTEXT | 2 24 - 1 字节 | L + 3 字节 |
LONGBLOB, LONGTEXT | 2 32 - 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 字节 |
日期类型