DB2常用SQL语句集
2014--DB2日期SQL语句查询大全
![2014--DB2日期SQL语句查询大全](https://img.taocdn.com/s3/m/d6b75ad650e2524de5187eb3.png)
select varchar_format(CURRENT date - 1 day,'yyyy-mm-dd') as yc from KJB_BLDKLSXH_T;
-- 6 获取本月的第一天
select varchar_format(CURRENT date -day(current date) days + 1 days,'yyyy-mm-dd') yc from KJB_BLDKLSXH_T;
-- 9 获取上月的最后一天
select varchar_format(CURRENT date -day(current date) days,'yyyy-mm-dd') as yc from KJB_BLDKLSXH_T;
-- 10 获取上年底的日期
select varchar_format(CURRENT date - (month(current date)- 1 ) month - day(current date) days,'yyyy-mm-dd') as yc from KJB_BLDKLSXH_T;
-- 3 获取当前日
select varchar_format(day(CURRENT date )) as yc from KJB_BLDKLSXH_T;
-- 4 获取当前日期
select varchar_format(CURRENT date ,'yyyy-mm-dd') as yc from KJB_BLDKLSXH_T;
-- 15 获取上年初第一天
select varchar_format( CURRENT date - (month(current date) +11) month- (day(current date)-1) days,'yyyy-mm-dd') as yc from KJB_BLDKLSXH_T;
db2常用sql语句
![db2常用sql语句](https://img.taocdn.com/s3/m/0f46f9daad51f01dc281f121.png)
授权
grant dbadm on database to user bb
24.
列出所有的系统表
list tables for system
25.
查看表结构
db2 describe select * from user.tables
27.
导出单个表结构到一个文件
db2look -d masa -e -u MASAMK -a -t PSC_MODE_SCORE_200503 -o aa.out
CONFIG PARTITIONING_DBPARTNUMS(0,1,2,3)
装载语句:(消息文件)
load client FROM /export/masaetl/work/data/org_data/cond.avl \
of DEL MODIFIED BY COLDEL0x09 MESSAGES /export/masaetl/111 \
db2 force application ID1,ID2,,,Idn MODE ASYNC
(db2 list application for db o_yd show detail)
16.
备份数据库
db2 force application all
db2 backup db o_yd to d:
10.
连接数据库
db2 connect to o_yd user db2 using pwd
11.
读数据库管理程序配置
db2 get dbm cfg
12.
写数据库管理程序配置
db2 update dbm cfg using 参数名 参数值
DB2常用sql语句
![DB2常用sql语句](https://img.taocdn.com/s3/m/86b806233868011ca300a6c30c2259010202f3cb.png)
DB2常⽤sql语句转DB2 提供了关连式资料库的查询语⾔sql(structured query language),是⼀种⾮常⼝语化、既易学⼜易懂的语法。
此⼀语⾔⼏乎是每个资料库系统都必须提供的,⽤以表⽰关连式的操作,包含了资料的定义(ddl)以及资料的处理(dml)。
sql原来拼成sequel,这语⾔的原型以"系统 r"的名字在 ibm 圣荷西实验室完成,经过ibm内部及其他的许多使⽤性及效率测试,其结果相当令⼈满意,并决定在系统r 的技术基础发展出来 ibm 的产品。
⽽且美国国家标准学会(ansi)及国际标准化组织(iso)在1987遵循⼀个⼏乎是以 ibm sql 为基础的标准关连式资料语⾔定义。
⼀、资料定义 DDL(data definition language)资料定语⾔是指对资料的格式和形态下定义的语⾔,他是每个资料库要建⽴时候时⾸先要⾯对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:create table table_name(column1 datatype [not null] [not null primary key],column2 datatype [not null],...)说明:datatype --是资料的格式,详见表。
nut null --可不可以允许资料有空的(尚未有资料填⼊)。
primary key --是本表的主键。
2、更改表格 alter table table_nameadd column column_name datatype说明:增加⼀个栏位(没有删除某个栏位的语法。
alter table table_nameadd primary key (column_name)说明:更改表得的定义把某个栏位设为主键。
alter table table_namedrop primary key (column_name)说明:把主键的定义删除。
db2 sql 教程
![db2 sql 教程](https://img.taocdn.com/s3/m/1eeddd563c1ec5da50e270ed.png)
Alter table tabname add primary key(col)
删除主键:
Alter table tabname drop primary key(col)
删除表:drop table tabname
3、表空间:
创建表空间:create tablespace tbsname pagesize 4k managed by database using (file ‘file’ size)
语法格式:
Rollback [work]
高级sql简单介绍
一、查询间使用运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
删除表空间:drop tablespace tbsname
4、索引:
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
[color=blue:b36c9124a3]注:索引是不可更改的,想更改必须删除重新建。[/color:b36c9124a3]
表空间加入容器:alter tablespace tablespace_name add(file 'filename' size)
db2数据库运维常用命令集
![db2数据库运维常用命令集](https://img.taocdn.com/s3/m/84d0805a767f5acfa1c7cdde.png)
db2数据库运维常用命令集在执行如下命令时,需要首先在客户端运行中输入db2cmd进行初始化或者su到db2的实例下操作。
一、常识性命令1、db2 connect to <数据库名> --连接到本地数据库名db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库2、 db2 force application all --强迫所有应用断开数据库连接3、db2 backup db db2name<数据库名称> --备份整个数据库数据db2 restore db --还原数据库4、db2 list application --查看所有连接(需要连接到具体数据库才能查看)5、db2stop --停止数据库 db2start --启动数据库6、create database <数据库名> using codeset utf-8 territory CN --创建数据库使用utf-8编码7、db2 catalog 命令db2 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号> --把远程数据库映射到本地接点一般为50000db2 catalog db <远程数据库名称> as <接点名称> at node PUB11 --远程数据库名称到本地接点db2 CONNECT TO <接点名称> user <用户名> using <密码> --连接本地接点访问远程数据库8、数据库导出db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql --导出数据库的表结构,其中用户空间一般为db2admin/db2inst2db2look -d <数据库名> -u <用户> -t <表1> <表2> -e -o <脚本名称>.sql --导出数据库中表1和表2的表结构db2move <数据库名> export --导出数据库数据db2move <数据库名> export -tn <表1>,<表2> --导出数据库中表和表数据9、数据库导入db2 -tvf <脚本名称>.sql --把上述导出的表结构导入到数据库表结构db2move <数据库名> load -lo replace --把上述“db2move <数据库名> export “导出的数据导入到数据库中并把相同的数据替换掉在实际使用过程中,如果用到db2自增主键,需要使用by default,而不是always,功能是一样的,但这样在数据移植时候会很方便!10、db2 connect reset 或 db2 terminate --断开与数据库的连接11、db2set db2codepage=1208 --修改页编码为120812、db2 describe table <表名> --查看表结构13、db2 list tables --查看数据库中所有表结构db2 list tables for system --列出所有系统表14、db2 list tablespaces --列出表空间15、fetch first 10 rows only --列出表中前10条数据例如:select * from <表名> fetch first 10 rows only16、coalesce(字段名,转换后的值) --对是null的字段进行值转换例如:select coalesce(id,1) from <表名> --对表中id如果为null转换成1二、导入数据:1、以默认分隔符加载,默认为“,”号db2 "import from btpoper.txt of del insert into btpoper"2、以指定分隔符“|”加载db2 "import from btpoper.txt of del modified by coldel| insert into btpoper"三、卸载数据:1、卸载一个表中全部数据db2 "export to btpoper.txt of del select * from btpoper"db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"2、带条件卸载一个表中数据db2 "export to btpoper.txt of del select * from btpoper wherebrhid='907020000'"db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'"db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'"四、查询数据结构及数据:db2 "select * from btpoper"db2 "select * from btpoper where brhid='907020000' and oprid='0001'"db2 "select oprid,oprnm,brhid,passwd from btpoper"五、删除表中数据:db2 "delete from btpoper"db2 "delete from btpoper where brhid='907020000' or brhid='907010000'"六、修改表中数据:db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'"db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'"七、联接数据库db2 connect to btpdbs八、清除数据库联接db2 connect reset 断开数据库连接db2 terminate 断开数据库连接db2 force applications all 断开所有数据库连接九、备份数据库1、 db2 backup db btpdbs2、 db2move btpdbs exportdb2look -d btpdbs -e -x [-a] -o crttbl.sql十、恢复数据库1、 db2 restore db btpdbs without rolling forward2、 db2 -tvf crtdb.sqlcrtdb.sql文件内容:create db btpdbs on /db2catalogdb2 -stvf crttbl.sqldb2move btpdbs import十一、DB2帮助命令:db2 ?db2 ? restroedb2 ? sqlcode (例:db2 ? sql0803) 注:code必须为4位数,不够4位,前面补0十二、bind命令:将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind(1) db2 bind br8200.bnd(2) /btp/bin/bndall /btp/bnd/btp/bin/bndall /btp/tran/bnd十三、查看数据库参数:db2 get dbm cfgdb2 get db cfg for btpdbs十四、修改数据库参数:db2 update db cfg for btpdbs using LOGBUFSZ 20db2 update db cfg for btpdbs using LOGFILSIZ 5120改完后,应执行以下命令使其生效:db2 stopdb2 start其他常用命令还有:db2 set schema btp 修改当前模式为"btp"db2 list tablespaces show detail 查看当前数据库表空间分配状况db2 list tablespace containers for 2 show detail 查看tablespace id=2使用容器所在目录db2 list applicationdb2 list db directory 列出所有数据库db2 list active databases 列出所有活动的数据库db2 list tables for all 列出当前数据库下所有的表db2 list tables for schema btp 列出当前数据库中schema为btp的表db2 list tablespaces show detail 显示数据库空间使用情况删除一个实例:# cd /usr/lpp/db2_07_01/instance# ./db2idrop InstName列出所有DB2实例:# ./db2ilist为数据库建立编目$ db2 catalog db btpdbs on /db2catalog取消已编目的数据库btpdbs$ db2 uncatalog db btpdbs查看版本# db2level显示当前数据库管理实例$ db2 get instance设置实例系统启动时是否自动启动。
db2 捕获sql语句
![db2 捕获sql语句](https://img.taocdn.com/s3/m/3f149b2ded630b1c58eeb505.png)
捕获sql语句在应用使用过程中,我们经常会碰到应用响应时间很慢,甚至没有响应,但是应用服务器可能并不是很繁忙,cpu利用率也非常低,引起这种状况的原因有很多种,比如环境问题,应用资源泄漏,数据库原因等等,本文主要是从一次应用性能诊断过程来谈谈如何通过数据库诊断应用性能问题。
1、打开db2监控开关#db2 connect to mes_wr#db2 update monitor switches using statement on#db2 reset monitor all2、十分钟之后,我们收集sql统计快照#db2 get snapshot for dynamic sql on mes_wr > dysqlstatus.out现在统计信息已经存放在dysqlstatus.out中,可以使用任意方便的文本处理工具查看,一般用aix上的vi来处理或者拷贝到win机器进行处理。
打开dysqlstatus.out 内容如下:Number of executions = 1Number of compilations = 1Worst preparation time (ms) = 2Best preparation time (ms) = 2Internal rows deleted = 0Internal rows inserted = 0Rows read = 2Internal rows updated = 0Rows written = 0Statement sorts = 0Statement sort overflows = 0Total sort time = 0Buffer pool data logical reads = Not CollectedBuffer pool data physical reads = Not CollectedBuffer pool temporary data logical reads = Not CollectedBuffer pool temporary data physical reads = Not CollectedBuffer pool index logical reads = Not CollectedBuffer pool index physical reads = Not CollectedBuffer pool temporary index logical reads = Not CollectedBuffer pool temporary index physical reads = Not CollectedTotal execution time (sec.ms) = 0.000377Total system cpu time (sec.ms) = 0.000000Statement text = select ACTIVITYDEFID,ACTIVITYINSTID from wfworkitem wherePROCESSINSTID=104199 and CURRENTSTATE = 4......在aix进行vi中的处理::g!/Total execution time/d只保留文本中的sql执行时间,我们要按照执行时间来排序通过vim的visual功能选择执行时间块(等号后面的数字),然后排序Total execution time (sec.ms) = 0.050590Total execution time (sec.ms) = 0.000170Total execution time (sec.ms) = 0.000247Total execution time (sec.ms) = 0.000292Total execution time (sec.ms) = 0.000474Total execution time (sec.ms) = 0.000330Total execution time (sec.ms) = 0.000348Total execution time (sec.ms) = 0.000279Total execution time (sec.ms) = 0.000385Total execution time (sec.ms) = 0.000296Total execution time (sec.ms) = 0.000261Total execution time (sec.ms) = 0.000195Total execution time (sec.ms) = 0.000226Total execution time (sec.ms) = 0.000227Total execution time (sec.ms) = 0.000193......:'<,'>!sort排序后的结果(部分)Total execution time (sec.ms) = 2.027776Total execution time (sec.ms) = 2.203624Total execution time (sec.ms) = 2.504677Total execution time (sec.ms) = 2.951256Total execution time (sec.ms) = 3.119875Total execution time (sec.ms) = 3.303277Total execution time (sec.ms) = 3.303517Total execution time (sec.ms) = 4.017133Total execution time (sec.ms) = 4.043329Total execution time (sec.ms) = 4.252125Total execution time (sec.ms) = 4.606765Total execution time (sec.ms) = 5.208087Total execution time (sec.ms) = 5.778598Total execution time (sec.ms) = 8.117470Total execution time (sec.ms) = 9797.905136可以看到最长时间的sql total执行时间耗费了3797.905123s.现在我们到dysqlstatus.out中去找这条语句Number of executions = 4602Number of compilations = 4294967295Worst preparation time (ms) = 2Best preparation time (ms) = 2Internal rows deleted = 0Internal rows inserted = 0Rows read = 2963688Internal rows updated = 0Rows written = 0Statement sorts = 0Statement sort overflows = 0Total sort time = 0Buffer pool data logical reads = Not CollectedBuffer pool data physical reads = Not CollectedBuffer pool temporary data logical reads = Not CollectedBuffer pool temporary data physical reads = Not CollectedBuffer pool index logical reads = Not CollectedBuffer pool index physical reads = Not CollectedBuffer pool temporary index logical reads = Not CollectedBuffer pool temporary index physical reads = Not CollectedTotal execution time (sec.ms) = 9797.905136Total user cpu time (sec.ms) = 9.290000Total system cpu time (sec.ms) = 1.230000Statement text = select * from XXXX_T_CNFACTIVITYDEF这条语句总共执行了4602次,平均每次的执行时间2S,而且这些数据应该是被cache 起来的;)总结:上面的方法简单总结了从数据库层面对应用的性能问题诊断,希望对大家有所帮助,对于数据库快照诊断问题的思路对于任意数据库通用补充一个unix上脚本处理方式:sqlsort.shawk 'BEGIN{RS="";FS="\n";ORS="\n"};/Statement text/{print $1, $21, $24}' $1 | awk '$5 > 0 {print "AvgTime:", $11/$5, "\t", $0}'| sort -n | head -n $2|awk '{print $0, "\n"}'使用:#sqlsort.sh dysqlstate.out 10(显示Top ten)用db2advis Sql语句调整建议用户名:db2inst1 //使用DB2用户或使用root用户登陆后切换用户到db2inst1用户密码: // # su - db2inst1建立一个mkdir sqltune目录1、$mkdir sqltune2、$ cd sqltune //进入sqltune文件夹3、$ pwd //显示当前目录/wrdb/db2inst1/sqltune4、编辑要分析sql语句(名字随意)//创建sql1.in文件保存需要分析的sql语句例如:$ vi sql1.in 把分析语句拷贝到sql1.in 注意sql1.in内容最后需要分号结尾。
db2 sql修改字段描述
![db2 sql修改字段描述](https://img.taocdn.com/s3/m/4e20325f15791711cc7931b765ce05087632752a.png)
db2 sql修改字段描述
在DB2中,要修改字段的描述,你可以使用ALTER TABLE语句来实现。
下面我会详细介绍这个过程。
首先,假设我们有一个名为“my_table”的表,其中有一个名为“my_column”的字段,现在我们想要修改它的描述。
首先,你需要使用以下SQL语句来查看字段的当前描述:
SELECT REMARKS.
FROM SYSIBM.SYSCOLUMNS.
WHERE TBNAME = 'my_table'。
AND NAME = 'my_column';
接下来,如果你想要修改字段的描述,你可以使用以下SQL语句:
ALTER TABLE my_table.
ALTER COLUMN my_column.
SET COMMENT '你的新描述';
在这里,你需要将“my_table”替换为你的表名,“my_column”替换为你想要修改描述的字段名,然后将“你的新描述”替换为你
想要设置的新描述。
执行这个SQL语句后,字段的描述就会被成功修改了。
需要注意的是,你需要有足够的权限来执行ALTER TABLE语句,否则你将无法修改字段描述。
另外,修改字段描述可能会影响到已
有的应用程序或者报表,所以在修改之前一定要慎重考虑。
DB2_SQL语言
![DB2_SQL语言](https://img.taocdn.com/s3/m/22d66261312b3169a451a43a.png)
– WHERE子句:指定查询条件
– GROUP BY子句:对查询结果按指定列的值 分组,该属性列值相等的元组为一个组。通常 会在每组中作用集函数。
– HAVING短语:筛选出只有满足指定条件的组
– ORDER BY子句:对查询结果表按指定列值的 升序或降序排序
• SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM
• FROM EMPLOYEE • WHERE HIREDATE > '1979-01-01' • GROUP BY WORKDEPT • ORDER BY WORKDEPT DESC
• GROUP BY子句的作用对象是查询的中间 结果表
逻辑操作符
• AND • OR • NOT
• SELECT DEPT, NAME, JOB • FROM STAFF • WHERE JOB = 'Clerk' • AND DEPT = 20
3 排序
• 带ORDER BY从句
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] …
20000.00
• SELECT EMPNO, SALARY • FROM EMPLOYEES • WHERE SALARY NOT BETWEEN 10000.00
AND 30000.00
LIKE 模糊匹配
• 通配符: • _ 任意一个字符 • % 0或者若干个字符
• SELECT EMPNO, LASTNAME • FROM EMPLOYEE • WHERE LASTNAME LIKE 'S%'
db2数据库 sql常用命令
![db2数据库 sql常用命令](https://img.taocdn.com/s3/m/f8e0eb61657d27284b73f242336c1eb91a3733e3.png)
DB2数据库 SQL常用命令一、连接数据库1. 从命令行连接数据库- 语法: db2 connect to <database_name> user <username> using <password>- 示例: db2 connect to sample user db2inst1 using passw0rd2. 从命令行断开数据库连接- 语法: db2 connect reset- 示例: db2 connect reset3. 显示当前连接的数据库- 语法: db2 list database directory- 示例: db2 list database directory二、管理数据库对象4. 创建数据库- 语法: db2 create database <database_name>- 示例: db2 create database sample5. 删除数据库- 语法: db2 drop database <database_name>- 示例: db2 drop database sample6. 创建表- 语法: db2 create table <table_name> (<column1_name> <data_type>, <column2_name> <data_type>, ...)- 示例: db2 create table employee (id int, name varchar(50), age int)7. 删除表- 语法: db2 drop table <table_name>- 示例: db2 drop table employee8. 插入数据- 语法: db2 insert into <table_name> values (<value1>,<value2>, ...)- 示例: db2 insert into employee values (1, 'John', 25)9. 删除数据- 语法: db2 delete from <table_name> where <condition> - 示例: db2 delete from employee where id = 110. 更新数据- 语法: db2 update <table_name> set <column_name> =<new_value> where <condition>- 示例: db2 update employee set age = 30 where id = 111. 查询数据- 语法: db2 select <column1_name>, <column2_name>, ... from <table_name> where <condition>- 示例: db2 select * from employee三、管理数据库事务12. 启动事务- 语法: db2 autmit off- 示例: db2 autmit off13. 提交事务- 语法: db2mit- 示例: db2mit14. 回滚事务- 语法: db2 rollback- 示例: db2 rollback四、管理数据库权限15. 创建用户- 语法: db2 create user <username> password <password> - 示例: db2 create user testuser password testpass16. 授权- 语法: db2 grant <privilege> on <object> to <user>- 示例: db2 grant select, insert, update on employee to testuser17. 撤销授权- 语法: db2 revoke <privilege> on <object> from <user> - 示例: db2 revoke select, insert, update on employee from testuser五、管理数据库性能18. 优化SQL查询- 语法: db2expln -d <database_name> -t <sql_statement> - 示例: db2expln -d sample -t "select * from employee"19. 查看数据库锁- 语法: db2 list applications show det本人l- 示例: db2 list applications show det本人l20. 查看数据库表空间使用情况- 语法: db2pd -d <database_name> -tablespaces- 示例: db2pd -d sample -tablespaces六、其他常用命令21. 导出数据- 语法: db2 export to <file_name> of del select * from<table_name>- 示例: db2 export to employee.csv of del select * from employee22. 导入数据- 语法: db2 import from <file_name> of del insert into<table_name>- 示例: db2 import from employee.csv of del insert into employee23. 查看数据库配置参数- 语法: db2 get db cfg for <database_name>- 示例: db2 get db cfg for sample结语以上就是DB2数据库SQL常用命令的介绍,通过掌握这些命令,可以更方便地管理和使用DB2数据库。
DB2常用SQL语句集
![DB2常用SQL语句集](https://img.taocdn.com/s3/m/f7bfd99aa0116c175f0e4879.png)
DB2常用SQL语句集1、查看表结构:describe table tablenamedescribe 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 TBLNAME fetch first N rows10、联接数据库db2 connect to DB user db2 using PWD11、绑定存储过程命令db2 bind BND.bnd12、整理优化表db2 reorgchk on table TBLNAMEdb2 reorg table TBLNAMEdb2 runstats on table TBNAME with distribution and indexes all13、导出表db2 export to TBL.txt of del select * from TBLNAMEdb2 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 TBLNAMEdb2 import from TBL.txt of del commitcount 5000 insert into TBLNAMEdb2 import from TBL.ixf of ixf commitcount 5000 insert into TBLNAMEdb2 import from TBL.ixf of ixf commitcount 5000 insert_update into TBLNAMEdb2 import from TBL.ixf of ixf commitcount 5000 replace into TBLNAMEdb2 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 DBNAMElist applications for db DBNAME show detail17、打开锁的监视开关命令db2 update monisor switches using lock on18、游标的使用: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除外)一起使用。
DB2 sqlcode大全
![DB2 sqlcode大全](https://img.taocdn.com/s3/m/abec176910661ed9ac51f327.png)
DB2错误信息sqlcode sqlstate 说明000 00000 SQL语句句成功完成01xxx SQL语句句成功完成,但是有警告+012 01545 未限定的列列名被解释为⼀一个有相互关系的引⽤用+098 01568 动态SQL语句句⽤用分号结束+100 02000 没有找到满⾜足SQL语句句的⾏行行+110 01561 ⽤用DATA CAPTURE定义的表的更更新操作不不能发送到原来的⼦子系统+111 01590 为2型索引设置了了SUBPAGES语句句+117 01525 要插⼊入的值的个数不不等于被插⼊入表的列列数+162 01514 指定的表空间被置为检查挂起状态+203 01552 使⽤用⾮非唯⼀一的名字来解决命名的限定列列+204 01532 命名的对象未在DB2中定义+206 01533 命名的列列不不在SQL语句句中指定的任何表中存在+218 01537 因为SQL语句句引⽤用⼀一个远程对象,不不能为该SQL语句句执⾏行行EXPLAIN+219 01532 命名的PLAN TABLE不不存在+220 01546 不不正确定义PLAN TABLE,检查命名列列的定义+236 01005 SQLDA中的SQLN的值⾄至少应于所描述的列列的个数⼀一样⼤大+237 01594 ⾄至少有⼀一个被描述的列列应该是单值类型,因此扩展的SQLVAR条⽬目需要另外的空间+238 01005 ⾄至少应有⼀一个被描述的列列是⼀一个LOB,因此扩展的SQLVAR条⽬目需要另外的空间+239 01005 ⾄至少应有⼀一个被描述的列列应是单值类型,因此扩展的SQLVAR条⽬目需要另外的空间+304 01515 该值不不能被分配给宿主变量量,因为该值不不再数据类型的范围之内+331 01520 不不能被翻译的字符串串,因此被设置为NULL+339 01569 由于与DB2 2.2版本的⼦子系统连接,所以可能存在字符转换问题+394 01629 使⽤用优化提示来选择访问路路径+395 01628 设置了了⽆无效的优化提示,原因代码指定了了为什什么,忽略略优化提示+402 01521 未知的位置+403 01522 本地不不存在CREAT ALIAS对象+434 01608 在DB2未来发布的版本中将不不⽀支持指定的特性,IBM建议你停⽌止使⽤用这些特性+445 01004 值被CAST函数截取+462 01Hxx 由⽤用户定义的函数或存储过程发出的警告+464 01609 命名的存储过程超出了了它可能返回的查询结果集的个数限制+466 01610 指定由命名的存储过程返回的查询结果集的个数。
db2 sqlcode
![db2 sqlcode](https://img.taocdn.com/s3/m/cba43d35eefdc8d376ee3284.png)
-151 42808 试图更新一个不可更新的视图的列、一个DB2 CATALOG表的列或者一个ROWID列
-152 42809 DROP CHECK试图删除一个参照约束,或者DROP FOREIGN试图删除一个检查约束
+2002 01624 因为指定的缓冲池不允许超高速缓存,GNPCACHE指定被忽略
+2007 01602 因为DB2子系统的参数禁用“提示(hiats)”所以不能指定优化提示
+30100 01558 分布式协议错误被检测到,提供原来的SQLCODE和SQLSTATE
-007 42601 SQL语句中由非法字符
-118 42902 数据修改语句(UPDATE或DELETE)和FROM语句中的表和视图命名不合法
-119 42803 HAVING语句中的列的列表与GROUP BY语句中的列列表不匹配
-120 42903 不允许WHERE语句、SET语句、VALUES语句或者SET ASSIGNMENT语句引用列函数
-181 22001 不是有效的DATE、TIME、TIMESTAMP值
-182 42816 在算术表达式中的日期/时间值无效
-183 22008 在算术表达式中返回的日期/时间值的结果不在有效值的范围内
+802 01519 数据溢出或者因除法异常而引起的数据异常错误
+806 01553 ISOLATION(RR)与LOCKSIZE PAGE 冲突
+807 01554 由于十进制乘法导致溢出
+863 01539 连接成功,但是只支持SBCS
db2的case when 语句
![db2的case when 语句](https://img.taocdn.com/s3/m/70d72c75f011f18583d049649b6648d7c1c708e1.png)
db2的case when 语句在数据库管理系统中,DB2是一种非常流行的关系型数据库管理系统,它支持SQL语言的各种功能和语法。
其中一个功能是CASE WHEN语句,它允许我们根据条件来执行不同的操作。
本文将介绍DB2中的CASE WHEN语句,从语法到实际应用,逐步回答与其相关的问题。
第一部分:CASE WHEN语句的语法1. CASE WHEN语句的基础语法如下:CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultNEND上述语法中,CASE是关键字,用于标识开始一个CASE WHEN语句块。
WHEN condition是一个条件表达式,当满足该表达式时,将执行对应的结果result。
2. CASE WHEN语句中的条件表达式可以是简单条件,也可以是复杂条件。
以下是一些示例:- 简单条件:当一个列等于某个值时执行某个操作。
WHEN column_name = 'value' THEN 'operation'- 复杂条件:当满足多个条件时执行不同的操作。
WHEN column_name > 10 AND column_name < 20 THEN'operation1'WHEN column_name > 20 AND column_name < 30 THEN'operation2'- 使用通配符:当满足通配模式时执行某个操作。
WHEN column_name LIKE 'value%' THEN 'operation'- 使用NULL:当列的值为空时执行某个操作。
WHEN column_name IS NULL THEN 'operation'3. CASE WHEN语句还可以使用其他SQL函数、聚合函数等,以满足更复杂的条件表达式。
DB2SQLCODE大全
![DB2SQLCODE大全](https://img.taocdn.com/s3/m/157ee6172379168884868762caaedd3383c4b5e7.png)
DB2SQLCODE⼤全DB2错误信息sqlcode sqlstate 说明000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为⼀个有相互关系的引⽤+098 01568 动态SQL语句⽤分号结束+100 02000 没有找到满⾜SQL语句的⾏+110 01561 ⽤DATA CAPTURE定义的表的更新操作不能发送到原来的⼦系统+111 01590 为2型索引设置了SUBPAGES语句+117 01525 要插⼊的值的个数不等于被插⼊表的列数+162 01514 指定的表空间被置为检查挂起状态+203 01552 使⽤⾮唯⼀的名字来解决命名的限定列+204 01532 命名的对象未在DB2中定义+206 01533 命名的列不在SQL语句中指定的任何表中存在+218 01537 因为SQL语句引⽤⼀个远程对象,不能为该SQL语句执⾏EXPLAIN+219 01532 命名的PLAN TABLE不存在+220 01546 不正确定义PLAN TABLE,检查命名列的定义+236 01005 SQLDA中的SQLN的值⾄少应于所描述的列的个数⼀样⼤+237 01594 ⾄少有⼀个被描述的列应该是单值类型,因此扩展的SQLVAR条⽬需要另外的空间+238 01005 ⾄少应有⼀个被描述的列是⼀个LOB,因此扩展的SQLVAR条⽬需要另外的空间+239 01005 ⾄少应有⼀个被描述的列应是单值类型,因此扩展的SQLVAR条⽬需要另外的空间+304 01515 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内+331 01520 不能被翻译的字符串,因此被设置为NULL+339 01569 由于与DB2 2.2版本的⼦系统连接,所以可能存在字符转换问题+394 01629 使⽤优化提⽰来选择访问路径+395 01628 设置了⽆效的优化提⽰,原因代码指定了为什么,忽略优化提⽰+402 01521 未知的位置+403 01522 本地不存在CREAT ALIAS对象+434 01608 在DB2未来发布的版本中将不⽀持指定的特性,IBM建议你停⽌使⽤这些特性+445 01004 值被CAST函数截取+462 01Hxx 由⽤户定义的函数或存储过程发出的警告+464 01609 命名的存储过程超出了它可能返回的查询结果集的个数限制+466 01610 指定由命名的存储过程返回的查询结果集的个数。
sql连接数据库语句
![sql连接数据库语句](https://img.taocdn.com/s3/m/8d0010d6846a561252d380eb6294dd88d0d23d36.png)
sql连接数据库语句SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准化语言。
它可以用于创建、修改和查询数据库中的表和数据。
在进行数据库连接时,我们需要使用特定的语句来建立与数据库的连接。
下面是十个常用的SQL连接数据库语句的示例。
1. 使用MySQL连接数据库:```mysql -u username -p password -h hostname -P port databasename;```其中,`username`是数据库的用户名,`password`是密码,`hostname`是数据库服务器的主机名,`port`是端口号,`databasename`是要连接的数据库名。
2. 使用SQL Server连接数据库:```sqlcmd -S servername -U username -P password -d databasename;```其中,`servername`是数据库服务器的名称,`username`是数据库的用户名,`password`是密码,`databasename`是要连接的数据库3. 使用Oracle连接数据库:```sqlplus username/password@hostname:port/servicename;```其中,`username`是数据库的用户名,`password`是密码,`hostname`是数据库服务器的主机名,`port`是端口号,`servicename`是服务名称。
4. 使用PostgreSQL连接数据库:```psql -U username -h hostname -p port -d databasename;```其中,`username`是数据库的用户名,`hostname`是数据库服务器的主机名,`port`是端口号,`databasename`是要连接的数据库名。
DB2表数据导出、导入及常用sql使用总结
![DB2表数据导出、导入及常用sql使用总结](https://img.taocdn.com/s3/m/eaec58e79f3143323968011ca300a6c30c22f1ff.png)
DB2表数据导出、导⼊及常⽤sql使⽤总结⼀.DB2数据的导出:export to[path(例:D:"TABLE1.ixf)]of ixf select[字段(例: * or col1,col2,col3)]from TABLE1;export to[path(例:D:"TABLE1.del)]of del select[字段(例: * or col1,col2,col3)]from TABLE1;在DB2中对表数据的导出,可以⽤export命令,导出数据为⼀个⽂本⽂件,例如:export to d:\table1.txt of del select id, name, age, address, note fromtesttable order by id;可以⽤import命令从⽂本⽂件导⼊数据到表⾥,如:⼆.DB2数据的导⼊:import from[path(例:D:"TABLE1.ixf)]of ixf insert into TABLE1;load from[path(例:D:"TABLE1.ixf)]of ixf insert into TABLE1;load from[path(例:D:"TABLE1.ixf)]of ixf replace into TABLE1; //装⼊数据前,先删除已存在记录load from[path(例:D:"TABLE1.ixf)]of ixf restart into TABLE1; //当装⼊失败时,重新执⾏,并记录导出结果和错误信息import from[path(例:D:"TABLE1.ixf)]of ixf savecount 1000 messages [path(例:D:"msg.txt)]insert into TABLE1;//其中,savecount表⽰完成每1000条操作,记录⼀次.存在⾃增长字段的数据导⼊:load from[path(例:D:"TABLE1.ixf)]of ixf modified by identityignore insert into TABLE1;//加⼊modified byidentityignore.解除装⼊数据时,发⽣的检查挂起:SET INTEGRITYFOR TABLE1 CHECK IMMEDIATE UNCHECKED;命令只对数据通过约束检查的表有效,如果执⾏还不能解除,有必要检查数据的完整性,是否不符合约束条件,并试图重新整理数据,再执⾏装⼊操作.另外,对load和import,字⾯上的区别是:装⼊和导⼊,但仍未理解两者之间的区别.只是性能上load显然优于import.(load 需要更多的权限)三.DB2常⽤操作命令实例:1、查找员⼯的编号、姓名、部门和出⽣⽇期,如果出⽣⽇期为空值,显⽰⽇期不详,并按部门排序输出,⽇期格式为yyyy-mm-dd。
数据库基本SQL语句大全
![数据库基本SQL语句大全](https://img.taocdn.com/s3/m/7b0112e34128915f804d2b160b4e767f5acf800c.png)
数据库基本_SQL语句大全学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下...其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作....一、基础1、说明:创建数据库Create DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\‘--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabnamecol1 type1 not null primary key,col2 type2 not null,..根据已有的表创建新表:A:create table tab_new like tab_old 使用旧表创建新表B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除;DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度;7、说明:添加主键:Alter table tabname add primary keycol说明:删除主键:Alter table tabname drop primary keycol8、说明:创建索引:create unique index idxname on tabnamecol….删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建;9、说明:创建视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的基本的sql语句选择:select from table1 where 范围插入:insert into table1field1,field2 valuesvalue1,value2删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料排序:select from table1 order by field1,field2 desc总数:select count as totalcount from table1求和:select sumfield1 as sumvalue from table1平均:select avgfield1 as avgvalue from table1最大:select maxfield1 as maxvalue from table1最小:select minfield1 as minvalue from table111、说明:几个高级查询运算词A:UNION 运算符UNION 运算符通过组合其他两个结果表例如TABLE1 和TABLE2并消去表中任何重复行而派生出一个结果表;当ALL 随UNION 一起使用时即UNION ALL,不消除重复行;两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2;B:EXCEPT 运算符EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表;当ALL 随EXCEPT 一起使用时EXCEPT ALL,不消除重复行;C:INTERSECT 运算符INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表;当ALL 随INTERSECT 一起使用时INTERSECT ALL,不消除重复行;注:使用运算词的几个查询结果行必须是一致的;12、说明:使用外连接A、left outer join:左外连接左连接:结果集几包括连接表的匹配行,也包括左连接表的所有行;SQL: select , , , , , from a LEFT OUT JOIN b ON =B:right outer join:右外连接右连接:结果集既包括连接表的匹配连接行,也包括右连接表的所有行;C:full outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录;二、提升1、说明:复制表只复制结构,源表名:a 新表名:b Access可用法一:select into b from a where 1<>1法二:select top 0 into b from a2、说明:拷贝表拷贝数据,源表名:a 目标表名:b Access可用insert into ba, b, c select d,e,f from b;3、说明:跨数据库之间表的拷贝具体数据使用绝对路径Access可用insert into ba, b, c select d,e,f from b in ‘具体数据库’ where 条件例子:..from b in ‘"&"."&"\" &"‘ where..4、说明:子查询表名1:a 表名2:bselect a,b,c from a where a IN select d from b 或者: select a,b,c from a where a IN 1,2,35、说明:显示文章、提交人和最后回复时间select ,, from table a,select maxadddate adddate from table where = b6、说明:外连接查询表名1:a 表名2:bselect , , , , , from a LEFT OUT JOIN b ON =7、说明:在线视图查询表名1:aselect from Select a,b,c FROM a T where > 1;8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括select from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值1 and 数值29、说明:in 的使用方法select from table1 where a not in ‘值1’,’值2’,’值4’,’值6’10、说明:两张关联表,删除主表中已经在副表中没有的信息delete from table1 where not exists select from table2 where =11、说明:四表联查问题:select from a left inner join b on = right inner join c on = inner join d on = where .....12、说明:日程安排提前五分钟提醒SQL: select from 日程安排where datediff‘minute‘,f开始时间,getdate>513、说明:一条sql 语句搞定数据库分页select top 10 b. from select top 20 主键字段,排序字段from 表名order by 排序字段desc a,表名b where b.主键字段= a.主键字段order by a.排序字段14、说明:前10条记录select top 10 form table1 where 范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.select a,b,c from tablename ta where a=select maxa from tablename tb where =16、说明:包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重复行而派生出一个结果表select a from tableA except select a from tableB except select a from tableC 17、说明:随机取出10条数据select top 10 from tablename order by newid18、说明:随机选择记录select newid19、说明:删除重复记录Delete from tablename where id not in select maxid from tablename group by col1,col2,...20、说明:列出数据库里所有的表名select name from sysobjects where type=‘U‘21、说明:列出表里的所有的sele ct name from syscolumns where id=object_id‘TableName‘22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case;select type,sumcase vender when ‘A‘ then pcs else 0 end,sumcase vender when ‘C‘ then pcs else 0 end,sumcase vender when ‘B‘ then pcs else 0 end FROM tablename group by type显示结果:type vender pcs电脑A 1电脑A 1光盘B 2光盘A 2手机B 3手机C 323、说明:初始化表table1TRUNCATE TABLE table124、说明:选择从10到15的记录select top 5 from select top 15 from table order by id asc table_别名order by id desc三、技巧1、1=1,1=2的使用,在SQL语句组合时用的较多“where 1=1” 是表示选择全部“where 1=2”全部不选,如:if strWhere =‘beginset strSQL = ‘select count as Total from ‘ + tblName + ‘ where ‘ + strWhere endelsebeginset strSQL = ‘select count as Total from ‘ + tblName + ‘‘end我们可以直接写成set strSQ L = ‘select count as Total from ‘ + tblName + ‘ where 1=1 安定‘+ strWhere2、收缩数据库--重建索引DBCC REINDEXDBCC INDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE3、压缩数据库dbcc shrinkdatabasedbname4、转移数据库给新用户以已存在用户权限exec sp_change_users_login ‘update_one‘,‘newname‘,‘oldname‘go5、检查备份集RESTORE VERIFYONLY from disk=‘E:\‘6、修复数据库Alter DATABASE dvbbs SET SINGLE_USERGODBCC CHECKDB‘dvbbs‘,repair_allow_data_loss WITH TABLOCKGOAlter DATABASE dvbbs SET MULTI_USERGO7、日志清除SET NOCOUNT ONDECLARE LogicalFileName sysname,MaxMinutes INT,NewSize INTUSE tablename -- 要操作的数据库名Select LogicalFileName = ‘tablename_log‘, -- 日志文件名MaxMinutes = 10, -- Limit on time allowed to wrap log.NewSize = 1 -- 你想设定的日志文件的大小M-- Setup / initializeDECLARE OriginalSize intSelect OriginalSize = sizeFROM sysfilesWhere name = LogicalFileNameSelect ‘Original Size of ‘ + db_name + ‘ LOG is ‘ + CONVERTVARCHAR30,OriginalSize + ‘ 8K pages or ‘ + CONVERTVARCHAR30,OriginalSize8/1024 + ‘MB‘FROM sysfilesWhere name = LogicalFileNameCreate TABLE DummyTransDummyColumn char 8000 not nullDECLARE Counter INT,StartTime DATETIME,TruncLog VARCHAR255Select StartTime = GETDATE,TruncLog = ‘BACKUP LOG ‘ + db_name + ‘ WITH TRUNCATE_ONLY‘DBCC SHRINKFILE LogicalFileName, NewSizeEXEC TruncLog-- Wrap the log if necessary.WHILE MaxMinutes > DATEDIFF mi, StartTime, GETDATE -- time has not expiredAND OriginalSize = Select size FROM sysfiles Where name = LogicalFileNameAND OriginalSize 8 /1024 > NewSizeBEGIN -- Outer loop.Select Counter = 0WHILE Counter < OriginalSize / 16 AND Counter < 50000 BEGIN -- updateInsert DummyTrans VALUES ‘Fill Log‘Delete DummyTransSelect Counter = Counter + 1ENDEXEC TruncLogENDSelect ‘Final Size of ‘ + db_name + ‘ LOG is ‘ + CONVERTVARCHAR30,size + ‘ 8K pages or ‘ + CONVERTVARCHAR30,size8/1024 + ‘MB‘FROM sysfilesWhere name = LogicalFileNameDrop TABLE DummyTransSET NOCOUNT OFF8、说明:更改某个表exec sp_changeobjectowner ‘tablename‘,‘dbo‘9、存储更改全部表Create PROCEDUREOldOwner as NVARCHAR128,NewOwner as NVARCHAR128ASDECLARE Name as NVARCHAR128DECLARE Owner as NVARCHAR128DECLARE OwnerName as NVARCHAR128 DECLARE curObject CURSOR FORselect ‘Name‘ = name,‘Owner‘ = user_nameuidfrom sysobjectswhere user_nameuid=OldOwnerorder by nameOPEN curObjectFETCH NEXT FROM curObject INTO Name, Owner WHILEFETCH_STATUS=0BEGINif Owner=OldOwnerbeginset OwnerName = OldOwner + ‘.‘ + rtrimNameexec sp_changeobjectowner OwnerName, NewOwnerend-- select name,NewOwner,OldOwnerFETCH NEXT FROM curObject INTO Name, Owner ENDclose curObjectdeallocate curObjectGO10、SQL SERVER中直接循环写入数据declare i intset i=1while i<30begininsert into test userid valuesiset i=i+1end。
DB2insert语句三种格式
![DB2insert语句三种格式](https://img.taocdn.com/s3/m/e22f9529a4e9856a561252d380eb6294dd88224e.png)
DB2insert语句三种格式----start有点SQL基础的⼈都会写INSERT语句,可是有很⼤⼀部分⼈不知道DB2的INSERT语句有三种格式,即:⼀次插⼊⼀⾏,⼀次插⼊多⾏和从SELECT语句中插⼊。
考虑下⾯的情况:1. CREATE TABLE USER2. (3. NAME VARCHAR(20) NOT NULL,---姓名4. BIRTHDAY DATE---⽣⽇5. );现在要求你插⼊⼀⾏数据,我们这么写:1. INSERT INTO USER (NAME,BIRTHDAY) VALUES ('张三','2000-1-1');现在要求你插⼊三⾏数据,我们这么写:1. INSERT INTO USER (NAME,BIRTHDAY) VALUES ('张三','2000-1-1');2. INSERT INTO USER (NAME,BIRTHDAY) VALUES ('李四','2000-1-1');3. INSERT INTO USER (NAME,BIRTHDAY) VALUES ('王五','2000-1-1');除此之外,我们还可以这么写:1. INSERT INTO USER (NAME,BIRTHDAY) VALUES2. ('张三','2000-1-1'),3. ('李四','2000-1-1'),4. ('王五','2000-1-1');那么后⼀种写法有什么好处呢?有两点好处:1、性能更好。
2、由于⼀条语句,所以它们是⼀个处理单元,要么都插⼊,要么都不插⼊。
除此之外,我们还可以从SELECT中插⼊,格式如下:1. INSERT INTO USER (NAME,BIRTHDAY)2. SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME> WHERE ...以上⽐较简单,我就不举例⼦了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、。