(DiaoSiID)在我们建立表前 ,我们先要了解DB2中都有哪些数据类型,以便我们这些屌丝以后快速创建表。
DB2 提供了一套丰富且灵活的数据类型。DB2 附带 INTEGER、CHAR 和 DATE 等基本数据类型。它还提供了创建用户定义的数据类型(UDT)的工具,使用户能够创建复杂的非传统的数据类型,从而适应当今复杂的编程环境。在给定的情况下,选用哪种数据类型取决于列中存储的信息的类型和范围。
内置的数据类型分为四类:数字、字符串、日期时间和 XML。
用户定义的数据类型分为:单值类型、结构化类型和引用类型。
数字数据类型
如上图所示,数字数据类型又可分为三类。这些类型在可以存储的数字数据的范围和精度方面有所差异。
- 整数:SMALLINT、INTEGER 和 BIGINT 用来存储整数。例如,库存数量可以定义为 INTEGER。SMALLINT 可以在 2 个字节中存储从
-32,768 到 32,767 的整数。INTEGER 可以在 4 个字节中存储从
-2,147,483,648 到 2,147,483,647 的整数。BIGINT 可以在 8 个字节中存储从
-9,223,372,036,854,775,808 到
9,223,372,036,854,775,807 的整数。
- 小数:DECIMAL 用来存储有小数部分的数字。要定义这个数据类型,需要指定精度 (p,表示总的位数)和小数位
(s,表示小数点右边的位数)。定义为 DECIMAL(10,2) 的列可以保存的金额最高可为 99999999.99。数据库中需要的存储空间依赖于精度,按照公式
p/2 +1 计算。所以 DECIMAL(10,2) 需要
10/2 + 1 (即 6)字节。
- 浮点数:REAL 和 DOUBLE 用来存储数字的近似值。例如,非常小或非常大的科学计量值可以定义为 REAL。REAL 可以定义为具有 1 到 24 位之间的长度,需要 4 字节的存储空间。DOUBLE 可以定义为具有 25 到 53 位之间的长度,需要 8 字节的存储空间。FLOAT 可以视为 REAL 或 DOUBLE 的同义词。
字符串数据类型
如上图所示,DB2 为存储字符数据或字符串提供了几种数据类型。根据要存储的字符串的大小和字符串中的数据来选择数据类型。
下面的数据类型用来存储单字节字符串:
- CHAR 或 CHARACTER 用来存储最多 254 字节的固定长度的字符串。例如,制造商可以给零件分配一个 8
字符长度的标识符,因此这些标识符在数据库中存储为 CHAR(8) 类型的列。
- VARCHAR 用来存储可变长度的字符串。例如,制造商用不同长度的标识符表示大量零件,因此这些标识符存储为 VARCHAR(100) 类型的列。VARCHAR 列的最大长度为
32,672 字节。在数据库中,VARCHAR 数据只占用恰好所需的空间。
下面的数据类型用来存储双字节字符串:
- GRAPHIC 用来存储固定长度的双字节字符串。GRAPHIC 列的最大长度是
127 个字符。
VARGRAPHIC 用来存储可变长度的双字节字符串。VARGRAPHIC 列的最大长度是 16,336 个字符。
DB2 还提供了存储非常长的字符串数据的数据类型。所有长字符串数据类型都具有相似的特征。首先,在数据库中此数据在物理上并没有与行数据存储在一起,这意味着需要进行额外处理才能访问此数据。长数据类型的长度最大可以定义为 2GB。但是,需要的空间只是实际使用的空间。长数据类型有:
- LONG VARCHAR
- CLOB(字符大对象)
- LONG VARGRAPHIC
- DBCLOB(双字节字符大对象)
- BLOB(二进制大对象)
日期时间数据类型
DB2 提供了三种存储日期和时间的数据类型:
这些数据类型的值在数据库中存储为一种内部格式;但是应用程序可以将其作为字符串操纵。在检索这些数据类型之一时,它被表示为字符串。在更新这些数据类型时,将值包围在引号中。
DB2 提供了操纵日期时间值的内置函数。例如,可以使用 DAYOFWEEK 或 DAYNAME 函数判断一个日期值是星期几。使用 DAYS 函数计算两个日期之间相差多少天。DB2 还提供了特殊寄存器以根据时间-日期时钟生成当前日期、时间或时间戳。例如,CURRENT DATE 返回一个表示系统上的当前日期的字符串。
日期和时间值的格式取决于在创建数据库时指定的数据库国家编码。有几种可用的格式:ISO、USA、EUR 和 JIS。例如,如果数据库使用 USA 格式,那么日期值的格式是 mm/dd/yyyy。在创建应用程序时,可以使用 BIND 命令的 DATETIME 选项改变格式。
TIMESTAMP 数据类型只有一种格式。字符串表示是 yyyy-mm-dd-hh.mm.ss.nnnnnn。
XML 数据类型
DB2 提供了 XML 数据类型来存储格式良好的 XML 文档。
XML 列中的值存储为与字符串数据类型不同的内部表示。要在 XML 数据类型的列中存储 XML 数据,需要使用 XMLPARSE 函数对数据进行转换。可以使用 XMLSERIALIZE 函数将 XML 数据类型的值转换为 XML 文档的串行化字符串值。DB2
还提供了许多其他的内置函数来操纵 XML 数据类型。
用户定义的数据类型
DB2 允许用户定义适合自己应用程序的数据类型。有三种用户定义的数据类型:
- 用户定义的单值类型:基于内置类型定义新的数据类型。这个新类型具有该内置类型相同的功能,但可以使用它确保只比较相同类型的值。例如,可以基于
DECIMAL(10,2) 定义一个加元类型(CANDOL)和一个美元类型(USADOL)。这两种类型都基于同一种内置类型,但除非应用转换函数,否则无法比较它们。下面是创建
CANDOL 和 USADOL UDT 的 CREATE
TYPE 语句:
CREATE DISTINCT TYPE CANDOL AS
DECIMAL(10,2) WITH COMPARISONS
CREATE DISTINCT TYPE USADOL AS
DECIMAL(10,2) WITH COMPARISONS
|
DB2 自动生成函数来执行基本类型和单值类型之间的强制转换,还自动生成用于比较单值类型实例的比较操作符。下列语句显示了如何创建带有
CANDOL 类型列的表,以及如何使用 CANDAL 强制转换函数向表中插入数据:
CREATE TABLE ITEMs (ITEMID CHAR(5), PRICE
CANDOL )
INSERT INTO ITEMs
VALUES('ABC11',CANDOL(30.50) )
|
XML 数据类型
DB2 提供了 XML 数据类型来存储格式良好的 XML 文档。
XML 列中的值存储为与字符串数据类型不同的内部表示。要在 XML 数据类型的列中存储 XML 数据,需要使用 XMLPARSE 函数对数据进行转换。可以使用 XMLSERIALIZE 函数将 XML 数据类型的值转换为 XML 文档的串行化字符串值。DB2
还提供了许多其他的内置函数来操纵 XML 数据类型。
用户定义的数据类型
DB2 允许用户定义适合自己应用程序的数据类型。有三种用户定义的数据类型:
- 用户定义的单值类型:基于内置类型定义新的数据类型。这个新类型具有该内置类型相同的功能,但可以使用它确保只比较相同类型的值。例如,可以基于
DECIMAL(10,2) 定义一个加元类型(CANDOL)和一个美元类型(USADOL)。这两种类型都基于同一种内置类型,但除非应用转换函数,否则无法比较它们。下面是创建
CANDOL 和 USADOL UDT 的 CREATE
TYPE 语句:
CREATE DISTINCT TYPE CANDOL AS
DECIMAL(10,2) WITH COMPARISONS
CREATE DISTINCT TYPE USADOL AS
DECIMAL(10,2) WITH COMPARISONS
|
DB2 自动生成函数来执行基本类型和单值类型之间的强制转换,还自动生成用于比较单值类型实例的比较操作符。下列语句显示了如何创建带有
CANDOL 类型列的表,以及如何使用 CANDAL 强制转换函数向表中插入数据:
CREATE TABLE ITEMs (ITEMID CHAR(5), PRICE
CANDOL )
INSERT INTO ITEMs
VALUES('ABC11',CANDOL(30.50) )
|
- 用户定义的结构化类型:创建由几个内置类型列组成的类型。然后,可以在创建表时使用这个结构化类型。例如,可以创建一种名为 ADDRESS 的结构化类型,它包含表示街道号码、街道名、城市之类的数据。然后在定义其他表(如职工表或者供应商表)时使用这种类型,因为这些表也需要同样的数据。另外,结构化类型还可以在层次结构中有子类型。这就允许将属于某一层次结构的对象存储在数据库中。
- 用户定义的引用类型:在使用结构化类型时,可以使用引用类型定义对另一个表中行的引用。这些引用看起来与参照约束相似,然而,它们不强制表间有关系。表中的引用允许用不同的方法指定查询。
用户定义的结构化和引用类型是高级主题;这里的信息只作为对这些类型的介绍。
OK 屌丝大哥精心为你准备的DB2数据类型 怎么样 还满意吧 用户定义类型 确实很给力 不过用到时候较少
下来屌丝大哥为大家带来表的逆袭
首先 屌丝大哥带领众屌丝连接DB2
首先 启动DB2
db2start
db2
connect to DiaoSi user diaosi using diaosipassword
有些屌丝可能不明白怎么连接 哥来解释
db2 connect to 数据库名称 user 用户名称 using 密码
表
所有数据都存储在数据库的表中。表 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。
表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。
每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在
SYSCAT.COLUMNS 中都有相应的一行。可以用
SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERT、UPDATE 或 DELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。
创建表
使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:
CREATE TABLE Diaosi ( DiaoSiID INTEGER,
Diaosi NAME VARCHAR(100), muer CHAR(10) ) |
还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:
CREATE TABLE MYmuer LIKE BalckMUer |
这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。
有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。
创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。
在数据库中存储表
表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。
在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 DiaoSiS
表放在 DiaoSiINFO 表空间内:
CREATE TABLE DiaoSiS( DiaoSiID INTEGER, Diaosi NAME VARCHAR(100), muer CHAR(10) )
IN DiaoSiINFO
|
修改表
可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:
- 列
- 主键
- 一个或多个惟一性或参照约束
- 一个或多个检查约束
下面的语句向 DiaoSi 表中添加一个列 DiaoSiTYPE :
ALTER TABLE DiaoSi ADD DiaoSiTYPE CHAR(1) |