lxpeng163
作者lxpeng163·2013-06-30 18:19
项目经理·哈尔滨银行

DB2学习

字数 3003阅读 1612评论 0赞 0
DB2学习(特性总结)
作者:雷智民
日期:2006-10-25
命令行登陆DB2
db2 => connect to zvfims user root using leizhimin
然后可以在命令行写sql语句并执行。

-----------------第一部分:DB2 SQL基础-----------------
1、case语句:提供条件表达方式
 case
  when x<0 then -1
  when x=0 then 0
  when x>0 then 1
 end
2、cast函数:类型转换。
3、with关键字:定义公共表达式的关键字,供复杂查询使用,对表达式的重复引用使用同一个结果集。
 WITH
  PAYLEVEL AS
   (SELECT EMPNO,EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,
   SALARY+BONUS+COMM AS TOTAL_PAY
   FROM EMPLOYEE
   WHERE EDLEVEL>16),
  PAYBYED(EDUC_LEVEL,YEAR_OF_HIRE,AVG_TOTAL_PAY) AS
   (SELECT EDLEVEL,HIREYEAR, AVG(TOTAL_PAY)
   FROM PAYLEVEL
   GROUPBY EDLEVEL,HIREYEAR)
 SELECT EMPNO,EDLEVEL,YEAR_OF_HIRE,TOTAL_PAY, DECIMAL(AVG_TOTAL_PAY,7,2)
 FROM PAYLEVEL,PAYBYED
 WHERE EDLEVEL=EDUC_LEVEL
  AND HIREYEAR=YEAR_OF_HIRE
  AND TOTAL_PAY<AVG_TOTAL_PAY 
  
4、多级嵌套的子查询
 
5、EXCEPT 运算符
 SELECT ID,NAME FROM STAFF WHERE SALARY>21000
 EXCEPT
 SELECT ID,NAME FROM STAFF WHERE JOB='Mgr' AND YEARS<8
6、INTERSECT运算符
 SELECT ID,NAME FROM STAFF WHERE SALARY>21000
 INTERSECT
 SELECT ID,NAME FROM STAFF WHERE JOB='Mgr' AND YEARS<8
7、IN 谓词
 SELECT NAME
 FROM STAFF
 WHERE DEPT IN (20,15)
 相当于:
 SELECT NAME
 FROM STAFF
 WHERE DEPT=20 OR DEPT=15
8、BETWEEN 谓词
 SELECT LASTNAME
 FROM EMPLOYEE
 WHERE SALARY BETWEEN 10000 AND 20000
 相当于:
 SELECT LASTNAME
 FROM EMPLOYEE
 WHERE SALARY>=10000 AND SALARY<=20000
9、LIKE 谓词
10、EXISTS 谓词
 SELECT DEPTNO,DEPTNAME
  FROM DEPARTMENTX
  WHERE NOTEXISTS
   (SELECT *
   FROM PROJECT
   WHERE DEPTNO=X.DEPTNO)
  ORDERBY DEPTNO 
11、定量谓词
 表达式>ALL(全查询);
  SELECT LASTNAME,JOB
   FROM EMPLOYEE
   WHERE SALARY> ALL
   (SELECT SALARY
    FROM EMPLOYEE
    WHERE JOB='MANAGER')
 表达式>ANY(全查询);
 表达式>SOME(全查询);
12、ROLLUP 和 CUBE 查询
 在查询的group by字句中指定 ROLLUP和CUBE运算
 ROLLUP分组产生包含常规分组行和小计的结果集。
 CUBE分组产生包含来自ROLLUP和交叉制表行中的结果集。
13、递归查询:是迭代使用结果数据来确定进一步结果的查询。是使用包括引用自己名称的公共表达式来编写的。
 DB2中的递归查询使用WITH字句实现,也成为公共表达式。
 公共表达式与临时视图非常类似,然而,临时视图仅在定义它的单条SQL语句执行期间有效。
 递归查询通常有三个部分:
 一个公共表达式形式的虚拟表。
 一个初始化表。
 一个与虚拟表进行完全内连接的辅助表。
 参考:《IBM DB2 高级管理指南》
 
-----------------第二部分:DB2 SQL定制和增强-----------------
14、用户定义类型:
 创建一个PAY的单值类型,与内部数据类型DECIMAL(9,2)有相同的表示。
 CREATE DISTINCT TYPE PAY AS DECIMAL(9,2) WITH COMPARISONS 
15、用户定义函数:
 CREATE FUNCTION MAX(PAY) RETURNS PAY
  SOURCE MAX(DECIMAL)
 CREATE FUNCTION关键字用于向数据库注册用户自定义的函数MAX(PAY),以后就可以直接在sql中使用该函数。
16、大对象(LOB)
 二进制大对象(BLOB)是变长字符串,最大长度2G。主要用来保存非传统数据,如图片、声音及混合媒体等。
 字符大对象(CLOB)是变长字符串,最大长度2G。用于存储大的单字节字符集数据。被认为是字符串。
 双字节大对象(DBLOB)是双字节的变长字符串,用于存储大的双字节字符集数据。如文档等。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广