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 条评论