SMS、DMS用户表空间的特性对照
特性 SMS DMS
能够在表空间中动态的增加容器数量 n y
能够把索引数据存放到不同的表空间 n y
能够把长型(LOB)数据存放到单独的表空间 n y
表可以分散存放到多个表空间 n y
只在需要的时候才分配空间 y n
表空间可以被定向到不同类型的磁盘空间 y n
创建之后,区段大小(extent size)能够改变 n n
db2ilist 列出当前系统中定义的DB2实例
daslist 列出系统中的DAS
db2 list database directory 列出当前实例中定义的数据库
db2 list tablespaces 列出当前数据库中定义的表空间
db2 list tabses [for all] 列出当前数据库中的表
db2 list active db 列出活动的数据库
db2 get dbm config
get db cfg for databasename
db2 update db cfg for databasename using bufferpage 600M
db2 alter bufferpool IABMDEFAULTBP size =1
db2 list applications show detail
DISTINCT 关键字可以用在COUNT()函数中,如:SELECT COUNT(DISTINCT id) FROM TABLE,这代表将不对id列的重复值进行计数。
ORDER BY子句后面如果写了多个列名,需要分别指定升序或是降序。
可以在load大量数据时,暂时关闭表的日志选项。使用:ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY
DB2的几个特殊寄存器:CURRENT DATE, CURRENT TIME, CURRENT TIMESTAMP, USER(用户ID).
有关日期的操作:CURRENT TIMESTAMP + 2 DAYS(or HOURS, SECONDS, MONTHS, YEARS, etc.)
case 语句的使用:case when 条件一 then 动作一 else 动作二 end; 可以欠套使用。
在视图的创建语句中无法使用order by 子句与 fetch n rows 子句。但对于order by可以用如下方法替代实现,不过会影响效率。
create view v_name1(c1, c2, c3) as
select * from (
select column1, column2, column3
from t1
order by column1 ) as t1;
在DB2 CLP中,对远程数据库编目的操作:
DB2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name 首先把远程主机映射为本地节点,节点名自己指定,本例采用TCPIP连接。service_name一般定义在远程主机的/etc/services文件中。
DB2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING password 然后把已知的远程主机的数据库映射到本地别名,注意本地别名在主机级别不能重复。节点名指定上面刚编目的节点。
DB2 CONNECT TO local_alias USER username USING password 用刚才编目中定义的别名连接远程主机数据库
DB2 GET CONFIGURATION SHOW DETAIL 获取数据库详细配置信息
备份
DB2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name
DB2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups
恢复
DB2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name
DB2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb
有关实例的操作:
设置默认实例环境变量
DB2 SET DB2INSTANCE=inst_name
启动当前实例
DB2START
停止当前实例
DB2STOP [FORCE]
连接到某个实例
DB2 ATTACH TO ANSTANCE inst_name
获取实例的配置参数
DB2 GET DBM CFG SHOW DETAIL
对于自增字段,可以通过两种方式指定:
generated by default as identity
generated always as identity
区别是,第一种方式在插入数据时允许手工指定自增字段的值,只要不重复即可,并且数据库会自动设置下一个值;
第二种方式则不允许指定,只能由数据库自动分配并插入。
DB2 sql语句中转义符的使用:
select * from t1 where a like '%abc\%def' escape '\';
在创建表时,可以使用选项来指定一个或多个表空间,表和索引将被放置到其中:
CREATE TABLE TEST (
column 1 definition, column 2 definition, ...
) IN <tablespace name> INDEX IN <index space name>
这条命令为您提供了一个选项:指定创建表和索引的位置。如果没有指定单独的索引表空间,那么将在表所在的同一表空间中创建索引。创建表之后,就没有机会在不同的表空间中创建索引了。创建索引要提前作规划!
CREATE <UNIQUE> INDEX <index name> ON <table name>
(
column 1 <ASC | DESC> ,
column 2 <ASC | DESC> ...
)
UNIQUE 属性告诉 DB2,索引必须强制所有插入值的唯一性。
如果结果集是以升序和降序两种方式排序的,ALLOW REVERSE SCANS 会告诉 DB2 在索引中包括附加的指针,以允许在记录中有效地进行正向和反向链接。
DB2 能够向正在创建的索引中添加另外的列。CREATE INDEX 命令允许用户指定那些不属于实际索引但因为性能原因而保存在索引记录中的列。
CREATE UNIQUE INDEX ON EMPLOYEE (EMPNO) INCLUDE (LASTNAME,FIRSTNAME)
对于索引中包含的列而言,索引必须是 UNIQUE 的。当创建索引时,另外的列被添加到索引值中。索引不使用这些值进行排序或确定唯一性,但可以在满足 SQL 查询时使用它们。例如,下列 SELECT 语句将不需要读取实际数据行:
SELECT LASTNAME, FIRSTNAME FROM EMPLOYEE WHERE EMPNO < '000300'
要在表上创建群集索引,将 CLUSTER 关键字附加到 CREATE INDEX 命令的末尾,例如:
CREATE INDEX DEPTS-IX ON EMPLOYEE(WORKDEPT) CLUSTER