实例级别的常用命令如表 3.1 所示。
表 3.1 实例级别常用命令
命令名称 | 描述 |
---|---|
GET DBM CFG [SHOW DETAIL] | 返回数据库管理器的参数设置 |
UPDATE DBM CFG USING < 参数 > < 值 > | 将数据库管理器的某个参数设置为新的值 |
db2icrt < 实例名 > | 创建实例 |
db2idrop < 实例名 > | 删除实例 |
db2ilist | 列示实例 |
GET INSTANCE | Windows 中获取当前实例名称 |
set DB2INSTANCE=< 实例名 > | Windows 中切换实例 |
db2start | 启动当前实例 |
db2stop | 停止当前实例 |
db2iauto - < 实例名 > | UNIX 或 Linux 下设置某个实例是否自动启动 |
ATTACH TO < 实例名 > [USER < 用户名 >] [USING < 密码 >] | 附接到指定的实例进行远程操作 |
DETACH | 断开与当前实例的附接 |
LIST ACTIVE DATABASES | 列出活动的数据库和连接数量 |
LIST APPLICATION [SHOW DETAIL] | 返回当前连接的应用程序的信息 |
FORCE APPLICATION[S] ALL | 断开与所有应用程序的连接 |
FORCE APPLICATION (< 句柄 1>[,< 句柄 2>, … ,< 句柄 n>]) | 断开指定句柄的应用程序的连接 |
db2admin start | 启动管理服务器实例 |
db2admin stop | 停止管理服务器实例 |
CATALOG LOCAL NODE < 节点名 > INSTANCE < 实例名 > | 编目实例作为本地节点 |
CATALOG TCPIP NODE < 节点名 > REMOTE < 主机名 > SERVER < 端口号 > | 编目远程实例作为本地节点 |
注:表格中大写的命令表示该命令是 DB2 级的,可以直接在命令行处理器中执行,小写的命令表示该命令是系统级的,需要在命令窗口中执行,而且在 UNIX 或 Linux 下必须小写,而在 Windows 下不区分大小写。
数据库级别的常用命令如表 3.2 所示。
表 3.2 数据库级别的常用命令
命令名称 | 描述 |
---|---|
GET DB CFG FOR < 数据库名称 > | 返回指定数据库的参数设置 |
UPDATE DB CFG FOR < 数据库名 > USING < 参数 > < 值 > | 将指定数据库的某个参数设置为新的值 |
CREATE DATABASE < 数据库名称 > | 创建数据库 |
DROP DB < 数据库名 > | 删除数据库 |
ACTIVATE DATABASE < 数据库名称 > | 激活指定数据库 |
DEACTIVATE DATABASE < 数据库名称 > | 停止指定数据库 |
CONNECT TO < 数据库名称 > [user < 用户名 >] [using < 密码 >] | 连接到指定的数据库 |
CONNECT RESET | 断开与当前数据库的连接 |
DISCONNECT < 数据库名称 > | 断开与指定数据库的连接 |
TERMINATE | 断开与数据库的连接并初始化客户端 |
CATALOG DB < 数据库名 > AT NODE < 节点名 > | 编目数据库 |
注:该表格中所有命令都是 DB2 级命令,可以直接在命令行处理器中执行。
用 户临时表又称为已声明的全局临时表(Declared Global Temporary Table,简称 DGTT),与普通的用户表不同,用户临时表并不是一直存储在硬盘上,而是在一个应用程序结束之后,与之相关的用户临时表会自动从系统中删除。另外,用户 临时表还有一些安全性和性能上的优势,如:
(1)一个用户(或者应用程序)定义的用户临时表不会被其他用户(或者应用程序)看到;
(2)在对用户临时表操作的时候,可以记录事务日志,也可以不记录事务日志;
(3)不进行系统编目;
(4)没有行锁;
(5)不进行权限检查。
在使用用户临时表的时候容易引起误解的是,它仍然支持索引,可以在它上面创建任何标准的索引,同时它也支持统计,可以对它进行 RUNSTATS 操作3.9.2 视图的 WITH CHECK OPTION 选项
使用 WITH CHECK OPTION 选项可以在视图上指定一个约束,该约束在通过视图进行数据插入和修改时会起作用。
上 一节讲到,视图当中不保存数据,但是我们可以通过视图对数据进行操纵,实际上是对视图所对应的基本表中的数据进行操纵。创建视图的时候在子查询中可能包含 一个 WHERE 子句,这个子句指定的条件可以看成一个大门,如果加上了 WITH CHECK OPTION 选项,就要求数据必须通过这个大门进入,否则的话,数据可以不通过这个大门(不满足 WHERE 子句的条件)进入到基本表中。
例 3‑14 带 WITH CHECK OPTION 选项的视图。
创 建一个名为 empsalary 的视图,包含薪水(salary)高于 4000 元的职员的编号(empno)、名字(firstnme)、姓氏(lastname)、教育级别(edlevel)、性别(sex)、薪水 (salary)和奖金(bonus)等信息,并且要求不能通过该视图向职员表 employee 中插入薪水不高于 4000 元的记录。
CREATE VIEW empsalary AS |
按照上面的语句把视图创建成功,然后分别执行如下两条插入语句:
INSERT INTO empsalary VALUES('800101', 'Winter', 'Green', 15, 'M', 5000, 700) |
会发现第一条语句能够执行成功,而第二条语句执行时报错:插 入或更新操作的结果行不符合视图定义。这就说明在通过视图向表中插入数据时,由于视图在创建的时候使用了 WITH CHECK OPTION 子句,就会强制执行条件检查,对于不满足条件的数据,不允许通过视图进入到基本表中。
视图可以嵌套,即在视图的基础上再创建视图,此时视图是否有强制检查选项,需要根据这两个视图创建的定义来确定。
对 视图的操作实际上是对后台的基本表中数据进行操作,这些数据有可能来自于一张表,也可能来自于多张表,一般来说,只有当视图来自于一张表中的某些字段时, 才能够通过该视图对数据进行操作。判断一个视图是否可更新,主要看其在创建的时候指定的子查询。子查询必须满足以下条件:
(1) 其 FROM 子句基于一张表、一个可更新的嵌套表表达式(参见第 4 章)或者一个可更新的公共表表达式(参见第 4 章);
(2) 不使用 GROUP BY 和 HAVING 子句;
(3) SELECT 选择的列中不包括列函数;
(4) 不使用集合操作 UNION,EXCEPT 和 INTERSECT,但可以使用 UNION ALL;
(5) 不使用 DISTINCT;
(6) 不满足以上条件的视图称为只读视图,在 SYSCAT.VIEW 中标记为 READONLY 的视图就是只读视图。
需要注意的是,一个可更新视图只是在理论上可以进行更新,但实际通过该视图对基本表的数据进行操作时,能否操作成功还要看是否违反了基本表上定义的约束条件。
数值型具体划分如图 3.19 所示。
图 3.19 数值型数据的种类
字符型具体划分如 3.20 所示。
图 3.20 字符型数据的种类
DB2 提供了很多专用寄存器,这些寄存器记录了各种系统信息,可以像变量一样进行查询和修改(有些专用寄存器不允许修改)。可以使用 VALUES 语句查询各个专用寄存器的值:
VALUES < 专用寄存器名称 > |
专用寄存器可以用在 SQL 语句中,有些专用寄存器的值可以修改,有些不能,常用的专用寄存器请参见表 3.3。
表 3.3 DB2 V9 中常用的专用寄存器
专用寄存器名称 | 作用 | 是否可更新 |
---|---|---|
CURRENT CLIENT_APPLNAME | 当前客户端连接的应用程序名称 | No |
CURRENT CLIENT_USERID | 当前客户端连接的用户 ID | No |
CURRENT CLIENT_WRKSTNNAME | 当前连接的工作站名称 | No |
CURRENT DATE | 数据库服务器的当前日期 | No |
CURRENT ISOLATION | 当前隔离级 | Yes |
CURRENT LOCK TIMEOUT | 当前锁等待时间(单位为秒) | Yes |
CURRENT QUERY OPTIMIZATION | 当前优化级别 | Yes |
CURRENT SCHEMA | 当前模式 | Yes |
CURRENT SERVER | 当前应用服务器 | No |
CURRENT TIME | 数据库服务器当前时间 | No |
CURRENT TIMESTAMP | 当前时间戳 | No |
CURRENT TIMEZONE | 当前时区 | No |
USER | 当前用户 | Yes |
能够修改值的专用寄存器的修改方法也不尽相同,具体修改方式请参见信息中心。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11976525/viewspace-674313/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11976525/viewspace-674313/