当前位置:文档之家› DB2常用SQL语句集

DB2常用SQL语句集

DB2常用SQL语句集
1、查看表结构:
describe table tablename
describe select * from tablename
2、列出系统数据库目录的内容:
list database directory
3、查看数据库配置文件的内容:
get database configuration for DBNAME
4、启动数据库:
restart database DBNAME
5、关闭表的日志
alter table TBLNAME active not logged inially
6、重命名表
rename TBLNAME1 to TBLNAME2
7、取当前时间
select current time stamp from sysibm.sysdummy1
8、创建别名
create alias ALIASNAME for PRONAME(table、view、alias、nickname)
9、查询前几条记录
select * from TBLNAME fetch first N rows
10、联接数据库
db2 connect to DB user db2 using PWD
11、绑定存储过程命令
db2 bind BND.bnd
12、整理优化表
db2 reorgchk on table TBLNAME
db2 reorg table TBLNAME
db2 runstats on table TBNAME with distribution and indexes all
13、导出表
db2 export to TBL.txt of del select * from TBLNAME
db2 export to TBL.ixf of ixf select * from TBLNAME
以指定分隔符‘|’下载数据:
db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode”14、导入表
db2 import from TBL.txt of del insert into TBLNAME
db2 import from TBL.txt of del commitcount 5000 insert into TBLNAME
db2 import from TBL.ixf of ixf commitcount 5000 insert into TBLNAME
db2 import from TBL.ixf of ixf commitcount 5000 insert_update into TBLNAME
db2 import from TBL.ixf of ixf commitcount 5000 replace into TBLNAME
db2 import from TBL.ixf of ixf commitcount 5000 create into TBLNAME (仅IXF)
db2 import from TBL.ixf of ixf commitcount 5000 replace_create into TBLNAME (仅
IXF)
以指定分隔符“|”加载:
db2 "import from btpoper.txt of del modified by coldel| insert into btpoper"
15、显示当前用户所有表命令
db2 “list tables”
16、查看锁情况命令:
db2 get snapshot for locks on DBNAME
list applications for db DBNAME show detail
17、打开锁的监视开关命令
db2 update monisor switches using lock on
18、游标的使用:
declare cursorN cursor with hold for select CHAR from TBNAME for update;
for update不能和GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT(但 UNION ALL除外)一起使用。

update TBNAME set CHAR='0' where current of cursorN;
19、decode的转码操作:
decode(A1,'1','n1','2','n2','n3') AA1 from TBNAME;
20、计算两个日期的相差天数:
days(date(‘2001-06-05’)) –days(date(‘2001-04-01’))
days 返回的是从 0001-01-01 开始计算的天数;
21、取得处理的记录数:
declare v_count int;
update tb_test set t1=‘0’where t2=‘2’;
--检查修改的行数,判断指定的记录是否存在
get diagnostics v_ count=ROW_COUNT;
只对update,insert,delete起作用。

22、DB2支持三种集合操作INTERSECT(交集)、EXCEPT(差集)、UNION(合集):
求交集:A交B 说明:INTERSECT和INTERSECT ALL是等效的。

SELECT * FROM AA_WEEK X WHERE X.CODE IN (1,2,3) -- 集合A
INTERSECT -- 集合B
SELECT * FROM AA_WEEK X WHERE X.CODE IN (2,3,4);
求差集:A减B 说明:EXCEPT和EXCEPT ALL是等效的。

SELECT * FROM AA_WEEK X WHERE X.CODE IN (1,2,3) -- 集合A
EXCEPT -- 集合B
SELECT * FROM AA_WEEK w WHERE w.CODE IN (2,3,4);
求合集:A+B(不消除重复行)
SELECT * FROM AA_WEEK X WHERE X.CODE IN (1,2,3) -- 集合A
UNION ALL -- 集合B
SELECT * FROM AA_WEEK X WHERE X.CODE IN (2,3,4);
求合集:A+B(消除重复行)
SELECT * FROM AA_WEEK X WHERE X.CODE IN (1,2,3) -- 集合A
UNION -- 集合B
SELECT * FROM AA_WEEK X WHERE X.CODE IN (2,3,4);
23、数据库备份和恢复:
备份DB2数据库的方法如下:
在db2inst1用户下操作.
在你要保存数据的当前目录执行以下命令:
$ db2stop force (停止数据库)
$ db2start (启动数据库)
*可不停止数据库,直接执行以下命令:
$ db2 connect to 数据库名 user 用户名 using 密码(连接数据库)
$ db2 backup db 数据库名
系统会自动备份生成一个时间戳的数据备份文件,
如:xxxx.0.db2inst1.NODE0000.CATN0000.20070814031212.001
恢复数据库
在你备份出数据的当前目录执行以下命令:
$ db2 restore db 数据库名 taken at 20070814031212(直接取数据备份生成的时间戳即可
24、
25、sql常用函数说明:
float(num):返回num的浮点表示;
mod(num1, num2):返回num1除以num2的余数;
char():返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示;
注意事项:
1、只能修改V ARCHAR2类型的并且只能增加不能减少;
2、一个数据库至少包括一个目录表空间、一个或多个用户表空间、一个或多个临时表空间;
3、建临时表时最好加上with replace选项,这样就可以不显示的drop 临时表,建临时表
时如果不加该选项而该临时表在该session内已创建且没有drop,这时会发生错误。

4、定义游标使用with hold 选项,如果循环内有commit或rollback 而要保持该cursor不被
关闭,只能使用这种方式。

5、大数据的导表:export后再load性能(比select into)更好,因为load不写日志。

6、尽量使用大的复杂的SQL语句,将多而简单的语句组合成大的SQL语句对性能会有所改
善。

7、避免使用count(*) 及exists的方法:因为count(*)基本上要对表做全部扫描一遍,如果
使用很多会导致很慢;exists比count(*)要快,但总的来说也会对表做扫描,它只是碰到第一条符合的记录就停下来。

8、。

相关主题