DB2入门培训讲义


DB2 基本知识介绍DB2 基本知识介绍 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 认识 DB2 认识 DB2 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2的版本 – DB2 UDB  V7、V8、V9  PE (Personal Edition)  EE (Enterprise Edition)  EEE (Enterprise - Extended Edition ) 其他IBM 主机平台如AS/400上的DB2与DB2 UDB有很大不同, 老版本的主机DB2甚至不支持SQL。 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2在招行的应用情况  AS/400 DB2  RS/6000 – UDB V5 V7 V8 V9  数据仓库  开发用:DB2 UDB PE V8 For Windows XP/2K Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 UDB vs SQL Server /Sybase  SQL Server/Sybase是个黑盒子  DB2 是个相对透明的黑盒子  DB2 所支持的SQL语句更完整  DB2 对数据仓库所做的扩展支持非常好,如 多分区,MDC技术等。  DB2 具有平台优势和体系优势,对高端应用 有更好的支持。 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 UDB的Create Table语句 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. SQL Server 的Create Table CREATE TABLE [ database_name.[owner]. | owner. ] table_name ( { | column_name AS computed_column_expression | } [,...n] ) [ON {filegroup | DEFAULT} ] [TEXTIMAGE_ON {filegroup | DEFAULT} ] Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  Windows 下的安装、使用 仅安装客户端 DB2 Connect 安装服务器端 DB2 PE Server + DB2 Connect  RS/6000下的安装、使用 如RS/6000上已安装DB2,则只要在登录用户的profile中引用db2inst1的 profile或手工添加相应环境变量,即可使用DB2,前提是DBA已授权此用户 足够权限。 DB2安装、使用 相关的下载及文档URL: http://www14.software.ibm.com/webapp/download/search.jsp?q=UDB http://www-306.ibm.com/software/data/db2/udb/edition-ese.html Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  配置助手  控制中心  命令行工具 – 命令窗口、命令行处理器  信息中心  开发中心  健康中心 使用 DB2工具 - windows Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  实例 Instance  数据库 Database  容器 Container  表空间 Tablespace  扩展区 Extend  表 Table  页 Page DB2 UDB中一些基本概念 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  View  SQL存储过程  触发器  事务处理  索引 DB2 UDB中的标准SQL设施 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  模式是一个标识符,如用户 ID, 它帮助分组表和其他数据库对象。模 式可以归个人拥有,拥有者可以控制对数据以及其中的对象的存取。 模式也可以是数据库中的对象。它可以在创建模式中的第一个对象时 自 动创建。这样的对象可以是任何可以由模式名限定的对象,如表、索引、 视图、程序包、单值类型、函数或触发器。若要自动创建模式,则您必 须 拥有 IMPLICIT_SCHEMA 权限,也可以隐式地创建模式。 模式名用作两部分对象名的第一部分。创建一个对象时,可将其分配给 特定模式。若不指定模式,则它被分配给缺省模式,缺省模式通常是创 建该对象的人员的用户 ID。名称的第二部分是对象名。例如,名为 Smith 的用户可以 有一个名为 SMITH.PAYROLL 的表。  简单的比喻:假如DB等同于公司,模式相当一个部门名称。 DB2 数据库中的模式名 - SCHEMA Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 – 专用存储器  CURRENT DATE  USER  CURRENT TIMESTAMP  CURRENT TIME  CURRENT TIMEZONE  CURRENT SERVER 相当于SQL Server中的全局变量 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  常用的 DB2 指令  CREATE / DROP  LIST / DESCRIBE  FORCE  GET / UPDATE  IMPORT / EXPORT / LOAD  BIND / REBIND  REORG / RUNSTATS  …… Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  常用的 DB2 系统指令  db2admin  db2advi  db2batch  db2cc / db2cmd  db2cfexp / db2cfimp  db2start / db2stop  …… Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 数据库分区与表空间 数据库分区与表空间 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  数据库分区  一个数据库可以建立一个或多个分区(即节点), 数据可以根据表所定义的分区键通过HASH算法存 放于各个分区中。  作为表格的分区键,建议使用高基数字段(拥有多 个不同的值),这样可以使数据被均匀的分布,可 以利用节点组中所有的节点资源来执行操作。也可 以指定多个字段同时作为分区键来满足要求。 二、数据库分区与表空间 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  表空间的定义 DB2是以表空间来定义数据库中存放数据的实体磁盘空 间。 一个数据库中至少需要具备3个表空间,分别是:  SYSCATSPACE: 存放数据库中的所有系统表  TEMPSPACE1:存放DB2在执行SQL指令时所产生的临时数据表  USERSPACE1:存放用户所建立的表 二、数据库分区与表空间 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  表空间的分类 根据存储的数据种类区分  规则表空间:存放系统表格过用户建立的表格的数据与索引。  临时表空间:存放在执行SQL指令时产生的临时数据。  大型表空间:存放LONG VARCHAR与LOB类型的字段数据。 根据管理方式区分  数据库管理空间:DMS,是由DB2直接格式化与管理的空间  系统管理空间:SMS,是由DB2通过操作系统所管理的空间 二、数据库分区与表空间 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 数据库中的对象 三、数据库中的对象 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  对象名称: DB2 的所有对象,都有其对象名称,DB2 会 将他全部转成大写,但如果把对象名称用双 引号括起来,则就区分大小写。带引号的对 象名称也可以包含SQL的保留字,但并不 提倡。 三、数据库中的对象 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  表格 • 注意指定表空间和分区键 • 可增加字段,新增或删除限制 • 可更改VARCHAR类型的长度 • 可用LIKE定义同样的一张表,但除了字段类型和 默认值外其他属性不继承  索引  视图 • 只读视图/可更新视图  别名 数据库中的对象 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  限制 • NOT NULL Constraints • Column Defaults • Unique Constraints • Check Constraints • Primary Key Constraints • Foreign Key Constraints  触发器 • 前触发器 / 后触发器  实例化查询表(MQT): • REFRESH DEFERRED • REFRESH IMMEDIATE 三、数据库中的对象 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 数据的锁 四、数据的锁 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  LOCK TABLE 指令  LOCK TABLE DB2.TABLENAME IN SHARE MODE  LOCK TABLE DB2.TABLENAME IN EXCLUSIVE MODE  锁定的对象  数据库 / 表空间 / 表格 / 记录  锁定的模式(强度)  写锁定,包括 X、W、NW、Z 等  读锁定,包括 S、NS、U 等 四、数据的锁 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  锁定等待  LOCK WAIT  锁定超时  LOCKTIMEOUT  锁定升级  LOCKLIST:定义数据库中预留多少空间存放锁定信息  MAXLOCKS:定义每个事务可以使用多少LOCKLIST内存区 四、数据的锁 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 数据库系统效能 五、数据库系统效能 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  DB2 Explain 工具  db2expln 执行该语句可以查看Package中的SQL指令执行计划。这是从 unix或是doc窗口执行的指令,如下: Db2expln -d dbname -c vicky -p cursor -o expln.out  dynexpln 显示SQL指令的执行计划,如: dynexpln -d sample -s “sql指令”-o expln.out Dynexpln -d sample -f sql文件 -o expln.out  Visual Explain 从控制中心或命令行中心执行的explain sql 五、数据库系统效能 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  几张关键的系统表  SYSCAT.TABLES  SYSCAT.COLUMNS  SYSCAT.COLDIST  SYSCAT.INDEXES  SYSCAT.TABLESPACES  RUNSTATS  索引  建立索引的方法  where条件的索引的顺序  索引的副作用 五、数据库系统效能 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 五、数据库系统效能  REORG  MQT(物化视图)  DATA INITIALLY DEFERRED  REFRESH DEFERRED  REFRESH IMMEDIATE  ENABLE/DISABLE QUERY OPTIMIZATION CREATE TABLE sch.mqt1 AS ( select name, location, salary from sch.tab1 a, sch.tab2 where a.dept = b.deptnumb and a.salary > 20000 ) DATA INITIALLY DEFERRED REFRESH DEFERRED ; REFRESH TABLE sch.mqt1 ; Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 程序包与BIND 嵌入式SQL CLI JDBC SQLJ DB2客户端程序开发 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 实际应用 六、实际应用 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  SQL存储过程  CREATE PROCEDURE  DROP PROCEDURE  IN/OUT 参数  调用 CALL  错误陷阱  循环语句  COMMIT WORK  BEGIN/END 六、实际应用 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. SQL存储过程 C存储过程/函数 Java存储过程 其他:COBOL、OLE 存储过程 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Store Procedure Builder DW:通过一个C函数写成的Function向 调试文件写日志 存储过程的调试方法 – SQL存储过程的调试 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  SQLCODE,SQLSTATE  为什么要有Condition Handling?  固定写法: Declare SQLSTATE CHAR(5) DEFAULT ‘00000’; Declare SQLCODE INT DEFAULT 0; 必须要这么写才能得到SQL Statement执行情况,且只能写在存储过程的开头(Outermost Scope) 为什么? 主机风格  Condition Handling Declare continue handler for sqlstate ‘42774’ begin end  SQL存储过程的异常处理方法 – Condition Handling Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  Create procdure xx.xx(in xx, out xx) specific specific-name Language SQL begin xxx end DB2允许定义同名但参数不同的存储过程,因 此在删除存储过程时使用specific-name删除。 假如调用存储过程的参数错误,db2只说找不 到对应的存储过程,而不会说参数错误。 这一点类似面向对象的参数重载。 DB2 SQL存储过程的specific specific-name Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  静态SQL  静态SQL (static SQL) 语句嵌入到应用程序中,在应用运行 之前,所有的嵌入静态SQL语句必须经过预编译并被绑定到程 序包(package) 中。  DB2编译这些语句时,将基于编译和绑定这些语句时的系统表 中的统计信息和数据库参数为每一个静态SQL语句生成一个访 问计划(access plan)。  这些访问计划在运行时永远被使用;这些访问计划不会改变, 除非程序包被重新绑定。 EXEC SQL SELECT d.deptname, count(e.empno), avg(e.salary) FROM department d left outer join employee e on (e.workdept = d.deptno) WHERE e.salary >= :salary_baseline OR e.salary IS NULL GROUP BY d.deptname ; 六、实际应用 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.  动态SQL  动态SQL (dynamic SQL) 语句在程序运行时被prepare和 执行。  DB2运行动态SQL语句时,将基于当前的系统表中的统计信 息和数据库参数为该语句生成一个访问计划(access plan)。  该访问计划在运行时可能会不断变化。 stmt = “select empno, salary from employee where empno=?”; EXEC SQL PREPARE s1 FROM :stmt; EXEC SQL EXECUTE s1; 六、实际应用 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 六、实际应用  MERGE SQL – UPSERT  对目标表进行更新插入的过程,当存在满足条件的记录时 就更新目标表,当不存在满足条件的记录时就向目标表插 入新记录。 MERGE INTO account AS a USING (SELECT id, sum(balance) sum_balance from transaction GROUP BY id) AS t ON a.id = t.id WHEN MATCHED THEN UPDATE SET balance = a.balance + t.sum_balance WHEN NOT MATCHED THEN INSERT (id, balance) = (t.id, t.sum_balance); Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 六、实际应用  权限设置  过程/函数 GRANT EXECUTE ON PROCEDURE/FUNCTIOIN PROCNAME/FUNCNAME TO USER/GROUP USERNAME/GROUPNAME ;  表 GRANT ALL/DELETE/UPDATE/SELECT/INSERT ON TABLE TABNAME TO USER/GROUP USERNAME/GROUPNAME ;  SEQUENCE GRANT USAGE ON SEQUENCE SEQNAME TO USER/GROUP USERNAME/GROUPNAME ;  系统权限查看表 SYSCAT.TABAUTH, SYSCAT.TBSPACEAUTH, SYSCAT.SCHEMAAUTH …… Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 UDB的数据类型 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 UDB的数据类型  日期运算:如何求出每月末的日期? Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DB2 UDB的数据类型  日期运算: values(date(‘2006-01-31’)+1 month) values(date(‘2006-01-31’)+1 year)  数值运算 decimal的小数位  Null值 任何有Null参与的表达式,结果都是Null 特别注意打印中间结果或调试语句时  Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 存储过程-临时表的使用  必须要先定义系统临时表空间或用户临时表空间才 能使用临时表  定义临时表不能使用模式名,其模式名固定为 session。  使用完成后最好把临时表Drop掉。 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Get diagnostics 使用说明 SQL Server取到SQL语句所影响的 行数的方式?(@@rowcount) DB2取到SQL语句所影响的行数的 方式 – Get diagnostics GET DIAGNOSTICS v_Iupdate_Cnt=ROW_COUNT; Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 完整的存储 过程实例讲解 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Question ? Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
还剩47页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

wydsky

贡献于2011-02-24

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf