ITPub博客

首页 > 数据库 > 数据库开发技术 > DB2傻瓜1000问(二)

DB2傻瓜1000问(二)

原创 数据库开发技术 作者:litterbaby 时间:2007-04-01 20:43:13 0 删除 编辑
DB2傻瓜1000问(二)[@more@]

101、 什么是数据库分区组?
数据库分区组是一个或者多个数据库分区的集合。通过数据库分区的分组,能够在一个分区组的级别进行数据库操作,而不是在单一的分区进行。这样能够使得操作更为简便。

102、 如何建立数据库分区组?
CREATE DATABASE PARTITION GROUP

103、 默认添加的分区组都是那些?
在建立数据库的时候,有三个分区组被默认添加:
IBMCATGROUP
IBMTEMPGROUP
IBMDEFAULTGROUP

104、 IBMCATGROUP分区组是什么?
这个分区组只是DB2的目录表空间SYSCATSPACE在里面。只是含有一个分区,这个分区就是执行CREATE DATABASE命令的分区上。

105、 IBMTEMPGROUP分区组是什么?
所有分区的系统临时表空间的分区组。

106、 IBMDEFAULTGROUP分区组是什么?
所有分区的用户表空间的分区组。

107、 表空间是如何管理分类的?
在V8有两种表空间的分类:
系统管理表空间
数据库管理表空间
在V9新添加了一种管理方式:DMS 的自动存储(Automatic Storage With DMS)

108、 什么是系统管理的空间(System-Managed Space,SMS)?
由操作系统的文件系统管理器分配和管理空间。在 DB2 9 之前,如果不带任何参数创建数据库或表空间,就会导致所有表空间作为 SMS 对象创建。就是说V8中这种类型是默认模式。

109、 什么是数据库管理表空间Database-Managed Space,DMS?
由数据库管理程序控制存储空间。这种表空间本质上是一种特殊用途的文件系统实现,可以最好地满足数据库管理程序的需要。

110、 什么是DMS 的自动存储(Automatic Storage With DMS)?
自动存储实际上不是一种单独的表空间类型,而是一种处理 DMS 存储的不同方式。DMS 容器需要比较多的维护(见后面的一节),在 DB2 V8.2.2 中引入了自动存储,作为简化空间管理的方式。

111、 三种各有什么特点?
特性 SMS DMS 自动存储
是否分段(Striping)? 是 是 是
默认类型 Version 8 无 Version 9
对象管理 操作系统 DB2 DB2
空间分配 按需增长/收缩 预先分配;大小可以收缩和增长,但是需要 DBA 干预。 预先分配;可以自动增长。
管理的简便性 最好;很少需要调优,甚至不需要 好,但是需要一些调优(例如, EXTENTSIZE PREFETCHSIZE) 最好;很少需要调优,甚至不需要
性能 非常好 最好;可通过利用原始容器多获得 5% 到 10% 的收益 最好;但是,可以不使用原始容器
表空间最大大小 64GB(4K 页面) 2TB(4K 页面) 2TB(4K 页面)


112、 基于数据类型表空间是如何分类的?
有三类:
regular
large
temparory
其中临时有两种:系统临时和用户临时

113、 添加表空间的页的大小?
页的大小可以是4K、8K、16K、32K

114、 添加数据库的时候默认添加的表空间是那些?
SYSCATSPACE
TEMPSPACE1
USERSPACE1

115、 添加数据库的时候默认添加的缓存池名叫什么?
IBMDEFAULTBP

116、 DB2数据库数据类型是如何分类的?
内置数据类型和用户定义类型

117、 内置数据库数据类型有那些?
数值型
字符型
日期时间
数据连接型

118、 数值型如何分类的?
Small integer (SMALLINT)
2 个字节 -32,768 到 32,767的整数

Integer (INT or INTEGER)
4 个字节 -2,147,483,648 到 2,147,483,647的整数

Big integer (BIGINT)
8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的整数

DECIMAL/NUMERIC
需要指定精度 (p,表示总的位数)和小数位 (s,表示小数点右边的位数)
数据库中需要的存储空间依赖于精度,按照公式 p/2 +1 计算。所以 DECIMAL(10,2) 需要 10/2 + 1 (即 6)字节。

REAL/FLOAT
DOUBLE/FLOAT
REAL 和 DOUBLE 用来存储数字的近似值。例如,非常小或非常大的科学计量值可以定义为 REAL。REAL 可以定义为具有 1 到 24 位之间的长度,需要 4 字节的存储空间。DOUBLE 可以定义为具有 25 到 53 位之间的长度,需要 8 字节的存储空间。FLOAT 可以视为 REAL 或 DOUBLE 的同义词。

119、 字符串数据类型是如何分类的?
Character (CHAR)
CHAR 或 CHARACTER 用来存储最多 254 字节的固定长度的字符串

Variable character (VARCHAR)
用来存储可变长度的字符串。 VARCHAR 列的最大长度为 32,672 字节。在数据库中,VARCHAR 数据只占用恰好所需的空间。

Long variable character (LONG VARCHAR)
Character large object (CLOB)
GRAPHIC
用来存储固定长度的双字节字符串。GRAPHIC 列的最大长度是 127 个字符。

VARGRAPHIC
用来存储可变长度的双字节字符串。VARGRAPHIC 列的最大长度是 16,336 个字符。

LONG VARGRAPHIC
Double-byte character large object (DBCLOB)
长数据类型的长度最大可以定义为 2GB。但是,需要的空间只是实际使用的空间。

120、 日期时间数据类型是如何分类的?
DB2 提供了三种存储日期和时间的数据类型:

DATE
TIME
TIMESTAMP

121、 用户定义数据类型是如何分类的?
有三种用户自定义的数据类型:
1) 用户定义的单值类型
2) 用户定义的结构化类型
3) 用户定义的引用类型

122、 什么是用户定义的单值类型?
基于内置类型定义新的数据类型。这个新类型具有该内置类型相同的功能,但可以使用它确保只比较相同类型的值。

123、 如何添加用户定义的单值类型?
CREATE DISTINCT TYPE
例如
CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH COMPARISONS
CREATE DISTINCT TYPE USADOL AS DECIMAL(10,2) WITH COMPARISONS

124、 什么是用户定义的结构化类型?
创建由几个内置类型列组成的类型。然后,可以在创建表时使用这个结构化类型。例如,可以创建一种名为 ADDRESS 的结构化类型,它包含表示街道号码、街道名、城市之类的数据。然后在定义其他表(如职工表或者供应商表)时使用这种类型,因为这些表也需要同样的数据。另外,结构化类型还可以在层次结构中有子类型。这就允许将属于某一层次结构的对象存储在数据库中。

125、 如何添加用户定义的结构化类型?
CREATE STRUCTURE TYPE

126、 什么是用户定义的引用类型?
在使用结构化类型时,可以使用引用类型定义对另一个表中行的引用。这些引用看起来与参照约束相似,然而,它们不强制表间有关系。表中的引用允许用不同的方法指定查询。

127、 如何添加用户定义的引用类型?
CREATE REFERENCE TYPE

128、 DB2数据库上表是如何分类的?
DB2数据库上表有永久表和临时表之分:
永久表包括:
系统目录表
用户表

临时表包括:
系统表
用户表

129、 系统目录表存放的内容是那些?
1) 所有数据库对象的定义
2) 表和视图列的数据类型
3) 约束定义
4) 对象权限
5) 对象的依赖

130、 SYSIBM模式存放的内容是那些?
用于基础系统目录表

131、 SYSCAT模式存放的内容是那些?
用于系统目录表视图的定义

132、 SYSSTAT模式存放的内容是那些?
用于存放关于数据库统计信息的视图

133、 缺省情况下表存放的缺省表空间的选择是如何选择的?
按照以下的顺序来选择:
1) IBMDEFAULTGROUP表空间是否存在
2) 有没有用户添加的表空间
3) 表空间USERSPACE1是否存在
4) 如果上面的都没有的话,就会返回一个错误

134、 如何基于一个已经存在的表定义一个新表?
CREATE TABLE clone like tablename
或者
CREATE TABLE clone AS (SELECT * FROM tablename) DEFINITION ONLY

135、 如何添加一个表?
CREATE TABLE myemployees (
empID INT NOT NULL PRIMARY KEY,
empname VARCHAR(30) NOT NULL,
mngrID INT NOT NULL,
history CLOB)
IN datadms
INDEX IN indexdms
LONG IN largedms
最后三行是指定存放表空间的位置。

136、 如何添加一个新列?
ALTER TABLE myemployees ADD COLUMN address CHAR(45)

137、 如何删除表?
DROP TABLE myemployees

138、 如何在表上设置缺省值?
使用DEFAULT字句
CREATE TABLE company (
companyID INTEGER,
companyName VARCHAR(30),
city VARCHAR(20) DEFAULT 'TORONTO'
)

139、 如何如何使用缺省值插入表?
有两种方式,可以得到同样的结果:
(1)INSERT INTO company (companyID, companyName, city)
VALUES ( 111 , 'cityOne' , DEFAULT)
(2)INSERT INTO company (companyID, companyName)
VALUES ( 111, 'cityOne' )

140、 如何在表上自动生成连续的数字?
使用CREATE TABLE语句中的GENERATED子句:
CREATE TABLE product (
productno INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 200 INCREMENT BY 1),
description VARCHAR(50) )
这时不能插入其他的值。因为使用了ALWAYS
如果使用GENERATED BY DEFAULT就可以自己主动插入值。
同时还可以这样使用:
CREATE TABLE income (
empno INTEGER,
salary INTEGER,
taxRate DECIMAL(5,2),
netSalary DECIMAL(7,2) GENERATED ALWAYS AS (salary * (1 - taxRate))
)

INSERT INTO income (empno, salary, taxRate) VALUES (111, 50000, 0.3)

EMPNO SALARY TAXRATE NETSALARY
----------- ----------- ------- ---------
111 50000 0.30 35000.00

141、 如何使用唯一约束?
使用UNIQUE 或者 PRIMARY KEY
CREATE TABLE employ (
empID INT NOT NULL PRIMARY KEY,
name CHAR(30) ,
deptID INT NOT NULL UNIQUE
)

142、 如何添加检查约束?
CREATE TABLE student (
student_ID INT NOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
sex CHAR(1) NOT NULL
CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))
)
或者
ALTER TABLE student
ADD CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))

143、 如何关闭数据一致性?
SET INTEGRITY FOR student OFF

144、 使用索引的主要原因是什么?
1、 提高查询速度。
2、 在定义为唯一的时候,保证唯一性。

145、 视图的分类?
可删除视图
可更新视图
可插入视图
只读视图

146、 如何添加数据库分区组?
CREATE DATABASE PARTITION DROUP name ON DBPARTITIONNUMS( )

147、 如何修改数据库分区组?
ALTER DATABASE PARTITION GROUP name ADD DBPARTITIONNUM ()

148、 如何列出数据库分区组?
LIST DATABASE PARTITION GROUPS
LIST DATABASE PARTITION GROUPS SHOW DETAIL

149、 如何删除数据库分区组?
DROP DATABASE PARTITION GROUP name

数据库安全
150、 数据库安全应该如何定义?
1) 允许谁访问实例和/或数据库
2) 在哪里以及如何检验用户的密码
3) 用户被授予的权限级别
4) 允许用户运行的命令
5) 允许用户读取和/或修改的数据
6) 允许用户创建、修改和/或删除的数据库对象

151、 DB2的安全机制有哪几种?
DB2 中有三种主要的安全机制:
身份验证(authentication)
授权(authorization)
特权(privilege)

152、 什么是身份验证?
身份验证是用户在尝试访问 DB2 实例或数据库时遇到的第一种安全特性。DB2 身份验证与底层操作系统的安全特性紧密协作来检验用户 ID 和密码。DB2 还可以利用 Kerberos 这样的安全协议对用户进行身份验证。

153、 什么是授权?
授权决定用户和/或用户组可以执行的操作以及他们可以访问的数据对象。用户执行高级数据库和实例管理操作的能力由指派给他们的权限决定。在 DB2 中有 5 种不同的权限级别:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。

154、 什么是特权?
特权的粒度比授权要细,可以分配给用户和/或用户组。特权定义用户可以创建或删除的对象。它们还定义用户可以用来访问对象(比如表、视图、索引和包)的命令。DB2 9 中新增的一个概念是基于标签的访问控制(LBAC),它允许以更细的粒度控制谁有权访问单独的行和/或列。

155、 DB2身份验证类型是那些?
SERVER
身份验证在服务器上进行。

SERVER_ENCRYPT
身份验证在服务器上进行。密码在客户机上进行加密,然后再发送到服务器。

CLIENT
身份验证在客户机上进行(例外情况见 处理不可信的客户机)。

*KERBEROS
由 Kerberos 安全软件执行身份验证。

*KRB_SERVER_ENCRYPT
如果客户机设置是 KERBEROS,那么由 Kerberos 安全软件执行身份验证。否则使用 SERVER_ENCRYPT。

DATA_ENCRYPT
身份验证在服务器上进行。服务器接受加密的用户 ID 和密码,并对数据进行加密。这个选项的操作方式与 SERVER_ENCRYPT 相同,但是数据也要加密。

DATA_ENCRYPT_CMP
身份验证方式与 DATA_ENCRYPT 相同,但是允许不支持 DATA_ENCRYPT 的老式客户机使用 SERVER_ENCRYPT 身份验证进行连接。在这种情况下,数据不进行加密。如果进行连接的客户机支持 DATA_ENCRYPT,就会进行数据加密,而不能降级到 SERVER_ENCRYPT 身份验证。这个身份验证类型只在服务器的数据库管理程序配置文件中是有效的,而且在客户机或网关实例上使用 CATALOG DATABASE 时是无效的。

GSSPLUGIN
身份验证方式由一个外部 GSS-API 插件决定。

GSS_SERVER_ENCRYPT
身份验证方式由一个外部 GSS-API 插件决定。在客户机不支持服务器的 GSS-API 插件之一的情况下,使用 SERVER_ENCRYPT 身份验证。

156、 如何在服务器上设置身份验证?
在数据库服务器上,在数据库管理程序配置(DBM CFG)文件中使用 AUTHENTICATION 参数设置身份验证。请记住,DBM CFG 文件是一个实例级配置文件。因此,AUTHENTICATION 参数影响这个实例中的所有数据库。
db2 update dbm cfg using authentication server_encrypt
db2stop
db2start

157、 如何在网关上设置身份验证?
使用 catalog database 命令在网关上设置身份验证。
db2 catalog database myhostdb at node nd1 authentication SERVER
db2 terminate

158、 如何在客户机上设置身份验证?
连接服务器数据库的客户机
db2 catalog database sample at node nd1 authentication SERVER
连接主机数据库的客户机
db2 catalog database myhostdb at node nd1 authentication SERVER

159、 什么是SYSADM权限?
DB2 中的 SYSADM 权限是最高权限。对一个 DB2 实例拥有 SYSADM 权限的用户能够对这个实例、这个实例中的任何数据库以及这些数据库中的任何对象发出任何 DB2 命令。

160、 如何设置SYSADM权限?
SYSADM 权限由 DBM CFG 文件中的 SYSADM_GROUP 参数控制。可以将这个权限授予某个组
db2 update dbm cfg using SYSADM_GROUP db2grp1

161、 什么是SYSCRL权限?
SYSCTRL 只是对实例执行所有的管理和维护命令,但是不能访问数据库中的任何数据。用户可以对实例中的任何数据库执行的命令示例如下:
db2start/db2stop
db2 create/drop database
db2 create/drop tablespace
db2 backup/restore/rollforward database
db2 runstats(针对任何表)
db2 update db cfg for database dbname

162、 如何获得SYSCTRL权限?
db2 update dbm cfg using SYSCTRL_GROUP group name

163、 什么是SYSMAINT权限?
SYSMAINT 用户只能执行与维护相关的任务,比如:
db2start/db2stop
db2 backup/restore/rollforward database
db2 runstats(针对任何表)
db2 update db cfg for database dbname

164、 如何获得SYSMAINT权限?
db2 update dbm cfg using SYSMAINT_GROUP group name

165、 什么是DBADM权限?
DBADM 权限是一个数据库级权限,而不是实例级权限。
drop database
drop/create tablespace
backup/restore database
update db cfg for database db name
db2 create/drop table
db2 grant/revoke(任何特权)
db2 runstats(任何表)

166、 如何获得DBADM权限?
有三种:
1、db2 create database test
这个命令将数据库 test 上的 DBADM 权限隐式地授予发出此命令的用户。
2、db2 connect to sample
db2 grant dbadm on database to user tst1
这个命令只能由 SYSADM 用户发出;它向用户 tst1 授予示例数据库上的 DBADM 权限。注意,在授予 DBADM 权限之前,发出这个命令的用户必须连接到示例数据库。
3、db2 grant dbadm on database to group db2grp1
这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。

167、 什么是LOAD权限?
LOAD 权限是一个数据库级权限,所以它可以被分配给用户和用户组。顾名思义,LOAD 权限允许用户对表发出 LOAD 命令。当用大量数据填充表时,LOAD 命令通常用来替代插入或导入命令,它的速度更快。根据您希望执行的 LOAD 操作类型,仅仅拥有 LOAD 权限可能还不够。可能还需要表上的特定特权。
拥有 LOAD 权限的用户可以运行以下命令:
db2 quiesce tablespaces for table
db2 list tablespaces
db2 runstats(任何表)
db2 load insert(必须有表上的插入特权)
db2 load restart/terminate after load insert(必须有表上的插入特权)
db2 load replace(必须有表上的插入和删除特权)
db2 load restart/terminate after load replace(必须有表上的插入和删除特权)

168、 如何获得LOAD权限?
只有拥有 SYSADM 或 DBADM 权限的用户能够对用户或用户组授予或撤消 LOAD 权限。以下示例演示 LOAD 权限如何允许我们的用户使用 LOAD 命令将数据装载进 sales 表中。假设已经发出了命令 db2 connect to sample。
1、
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
有了 LOAD 权限和插入特权,tst1 就可以对 sales 表发出 LOAD INSERT 或 LOAD RESTART,或者在 LOAD INSERT 之后发出 TERMINATE。
2、
db2 grant load on database to group grp1
db2 grant delete on table sales to group grp1
db2 grant insert on table sales to group grp1
有了 LOAD 权限以及删除和插入特权,grp1 的任何成员就可以对 sales 表发出 LOAD REPLACE 或 LOAD RESTART,或者在 LOAD REPLACE 之后发出 TERMINATE。

169、 特权是如何分类的?
特权分成两类:
数据库级特权(针对数据库中的所有对象)
对象级特权(与特定的对象相关联)。

170、 什么是数据库级特权?
1) CREATETAB: 用户可以在数据库中创建表。
2) BINDADD: 用户可以使用 BIND 命令在数据库中创建包。
3) CONNECT: 用户可以连接数据库。
4) CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。
5) IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。
6) LOAD: 用户可以将数据装载进表中。
7) QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。
8) CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。

171、 对象级权限总结?
特权名称 相关对象 描述
CONTROL 表、视图、索引、包、别名、不同的类型、用户定义函数、序列 提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。
DELETE 表、视图 允许用户从对象中删除记录。
INSERT 表、视图 允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。
SELECT 表、视图 提供使用选择语句来查看对象内容的能力。
UPDATE 表、视图 允许用户使用更新语句修改对象中的记录。
ALTER 表 允许用户使用更改语句更改对象定义。
INDEX 表 允许用户使用创建索引语句在对象上创建索引。
REFERENCES 表 提供在对象上创建或删除外键约束的能力。
BIND 包 允许用户重新绑定现有的包。
EXECUTE 包、过程、函数、方法 允许用户执行包和例程。
ALTERIN 模式 允许用户修改模式中的对象定义。
CREATEIN 模式 允许用户在模式中创建对象。
DROPIN 模式 允许用户删除模式中的对象。

172、 模式特权是什么?
1) CREATEIN 允许用户在模式内创建对象。
2) ALTERIN 允许用户更改模式内的对象。
3) DROPIN 允许用户删除模式内的对象。

173、 什么是表空间特权?
USE OF TABLESPACE
允许用户在特定表空间内创建表。这一特权无法用于 SYSCATSPACE 或任何系统临时表空间。

174、 什么是索引特权?
CONTROL
允许用户删除索引。

175、 什么是例程特权?
EXECUTE
允许用户执行用户定义的函数。

176、 什么是顺序特权?
USAGE
允许用户为顺序对象使用 NEXTVAL 和 PREVVAL 表达式。

177、 列出数据库权限的系统编目视图名是什么?
SYSCAT.DBAUTH

178、 列出表和视图权限的系统编目视图名是什么?
SYSCAT.TABAUTH

179、 列出列权限的系统编目视图名是什么?
SYSCAT.COLAUTH

180、 列出包权限的系统编目视图名是什么?
SYSCAT.PACKAGEAUTH

181、 列出索引权限的系统编目视图名是什么?
SYSCAT.INDEXAUTH


182、 列出模式权限的系统编目视图名是什么?
SYSCAT.SCHEMAAUTH


183、 列出服务器权限的系统编目视图名是什么?
SYSCAT.PASSTHRUAUTH


184、 列出例程(函数,存储过程)权限的系统编目视图名是什么?
SYSCAT.ROUTINEAUTH

185、 什么是基于标签的访问控制(LBAC)?
这个功能是DB2新增的一个概念,是为 DBA 提供了在表的行或列级限制读/写特权的能力。

186、 什么是防火墙?
防火墙是一系列程序和硬件,位于网关服务器上。用于防止没有认证的连接到系统或者网络上。

187、 防火墙是如何分类的?
分成四类:
网络级别,包过滤,或者监视路由防火墙
典型程序级代理防火墙
关键级或者透明防火墙
SMLI防火墙

188、 DB2是如何进行数据加密的?
DB2可以对数据进行加密,主要通过三个函数来进行的:
加密函数
Encrypt (data-string-expression, password-string-expression, and hint-string-expression).

解密函数
Decrypt_Bin (encrypted-data, password-string-expression).

Decrypt_Char (encrypted-data, password-string-expression).


189、 如何进行行级加密?
-- Create emp table, set encryption password, and insert three rows:

create table emp (ssn varchar(124) for bit data);
set encryption password ='DNTTEAM';
insert into emp (ssn) values(encrypt('111-11-1111'));
insert into emp (ssn) values(encrypt('222-22-2222'));
insert into emp (ssn) values(encrypt('333-33-3333'));
-- Select data from emp table:

select ssn from emp

SSN
-----------------------------------------------------------------
x'0010F0FF0333D5A034E989260E4F99ED59070DD69B6E3C1B'
x'005EA2FF0333D5A05F167D1BC1E9EAD33D7D4987B57D5670'
x'00EE12FF0333D5A06174133D8E3A22756382F84B48F4DD05'

-- Set encryption password:

set encryption password ='DNTTEAM';
select decrypt_char(ssn) as ssn from emp;

SSN
-----------
111-11-1111
222-22-2222
333-33-3333


190、 DB2的一些特殊的寄存器都是那些?
CURRENT DATE
CURRENT ISOLATION
CURRENT LOCK TIMEOUT
CURRENT PACKAGE PATH
CURRENT PATH
CURRENT SCHEMA
CURRENT TIME
CURRENT TIMESTAMP
SESSION_USER
SYSTEM_USER
USER

191、 如何显示寄存器的值?
VALUES special_register
和
SELECT CURRENT ISOLATION FROM sysibm.sysdummy1

192、 如何设置寄存器的值?
SET CURRENT ISOLATION RR

193、 如何提取记录的前几个记录数据?
SELECT语句中使用FETCH FIRST n ROWS ONLY

194、 如何显示记录的行数?
使用函数ROWNUMBER() OVER()
例如:
SELECT ROWNUMBER() OVER() AS rowid, firstnme, lastname FROM employee
这个函数和Oracle中的伪列rownum相同。
同时还是有区别,区别就是over的使用。在这里面可以排序:例如:
SELECT rowid, firstnme, lastname
FROM ( SELECT ROWNUMBER() OVER( ORDER BY salary, comm ) AS rowid,
firstnme, lastname
FROM employee) AS temp
WHERE rowid > 30

195、 什么是DB2的转换表?
在DB2中表被插入、更新或者删除的时候,DB2维护一个或者多个内部临时表作为转换表。可以使用NEW TABLE和OLD TABLE来指定转换表。
例如:
SELECT empno, firstnme, lastname FROM employee WHERE workdept = 'A00';
DELETE FROM employee WHERE workdept = 'A00';
可以将这两个语句写成一个语句:
SELECT empno, firstnme, lastname FROM OLD TABLE (DELETE FROM employee WHERE workdept = 'A00');

196、 DB2数据迁移使用的文件格式都是那些?
1) 定界ASCII (DEL)
2) 非定界ASCII (ASC)
3) PC版本的一致交换格式(PC/IXF)
4) Worksheet format (WSF)
5) Cursor

数据的导出
197、 如何进行导出数据?
使用export进行数据的导出,类似于Oracle的LOAD。
EXPORT TO filename OF {IXF | DEL | WSF}
[LOBS TO lob-path [ {,lob-path} ... ] ][LOBFILE lob-file [ {,lob-file} ... ] ]
[XML TO xml-path [ {,xml-path} ... ] ][XMLFILE filename [ {,filename} ... ] ]
[MODIFIED BY {filetype-mod ...}][XMLSAVESCHEMA]
[METHOD N ( column-name [ {,column-name} ... ] )] [MESSAGES message-file]
{select-statement | XQUERY xquery-statement |
HIERARCHY {STARTING sub-table-name |
(sub-table-name [{, sub-table-name} ...])} [WHERE ...] }
filetype-mod:
NODOUBLEDEL、LOBSINFILE、CHARDELx、COLDELx、DLDELx、DECPLUSBLANK、
DECPTx、DATESISO、1、2、3、4、CODEPAGE=x、STRIPLZEROS 和 NOCHARDEL


198、 如何修改每一列之间的间隔符?
modified by coldel; 使用;为列之间的间隔符

199、 如何将字符串使用’’来引用起来?
modified by chardel''

200、 如何改变日期格式?
timestampformat="yyyy.mm.dd hh:mm"

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/222350/viewspace-908088/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    131
  • 访问量
    465728