DB2常用SQL语句集_db2常用sql语句
DB2常用SQL语句集由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“db2常用sql语句”。
DB2常用SQL语句集
1、查看表结构: describe table tablename
describe select * from tablename2、列出系统数据库目录的内容:
list database directory3、查看数据库配置文件的内容:
get database configuration for DBNAME4、启动数据库:
restart database DBNAME5、关闭表的日志
alter table TBLNAME active not logged inially6、重命名表
rename TBLNAME1 to TBLNAME27、取当前时间
select current time stamp from sysibm.sysdummy18、创建别名
create alias ALIASNAME for PRONAME(table、view、alias、nickname)
9、查询前几条记录
select * from TBLNAMEfetch first N rows10、联接数据库
db2 connect to DB user db2 using PWD11、绑定存储过程命令
db2 bind BND.bnd12、整理优化表
db2 reorgchk on table TBLNAME
db2 reorg table TBLNAME
db2 runstats on table TBNAME with distribution and indexes all13、导出表 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 delinsert into TBLNAME
db2 import from TBL.txt of del commitcount 5000insert 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 TBNAMEfor 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.00
1恢复数据库
在你备份出数据的当前目录执行以下命令:
$ db2 restore db 数据库名 taken at 20070814031212(直接取数据备份生成的时间戳即可
24、25、sql常用函数说明:
float(num):返回num的浮点表示;
mod(num1, num2):返回num1除以num2的余数;
char():返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示;
注意事项:
1、只能修改VARCHAR2类型的并且只能增加不能减少;
2、一个数据库至少包括一个目录表空间、一个或多个用户表空间、一个或多个临时表空间;
3、建临时表时最好加上 withreplace选项,这样就可以不显示的drop 临时表,建临时表
时如果不加该选项而该临时表在该seion内已创建且没有drop,这时会发生错误。
4、定义游标使用with hold 选项,如果循环内有commit或rollback 而要保持该cursor不被
关闭,只能使用这种方式。
5、大数据的导表:export后再load性能(比select into)更好,因为load不写日志。
6、尽量使用大的复杂的SQL语句,将多而简单的语句组合成大的SQL语句对性能会有所改
善。
7、避免使用count(*)及exists的方法:因为count(*)基本上要对表做全部扫描一遍,如果
使用很多会导致很慢;exists比count(*)要快,但总的来说也会对表做扫描,它只是碰到
第一条符合的记录就停下来。
8、