首页 DB2入门

DB2入门

举报
开通vip

DB2入门nullDB2 基本知识介绍DB2 基本知识介绍 认识 DB2认识 DB2null V7、V8、V9 PE (Personal Edition) EE (Enterprise Edition) EEE (Enterprise - Extended Edition ) 其他IBM 主机平台如AS/400上的DB2与DB2 UDB有很大不同,老版本的主机DB2甚至不支持SQL。 null AS/400 DB2 RS/6000 – UDB V5 V7 V8 V9 数据仓库 开发用:DB2 UDB...

DB2入门
nullDB2 基本知识介绍DB2 基本知识介绍 认识 DB2认识 DB2null V7、V8、V9 PE (Personal Edition) EE (Enterprise Edition) EEE (Enterprise - Extended Edition ) 其他IBM 主机平台如AS/400上的DB2与DB2 UDB有很大不同,老版本的主机DB2甚至不支持SQL。 null AS/400 DB2 RS/6000 – UDB V5 V7 V8 V9 数据仓库 开发用:DB2 UDB PE V8 For Windows XP/2K null SQL Server/Sybase是个黑盒子 DB2 是个相对透明的黑盒子 DB2 所支持的SQL语句更完整 DB2 对数据仓库所做的扩展支持非常好,如多分区,MDC技术等。 DB2 具有平台优势和体系优势,对高端应用有更好的支持。 nullnull CREATE TABLE [     database_name.[owner].     | owner. ] table_name (     {             | column_name AS computed_column_expression         |     } [,...n] ) [ON {filegroup | DEFAULT} ] [TEXTIMAGE_ON {filegroup | DEFAULT} ] null Windows 下的安装、使用 仅安装客户端 DB2 Connect 安装服务器端 DB2 PE Server + DB2 Connect RS/6000下的安装、使用 如RS/6000上已安装DB2,则只要在登录用户的profile中引用db2inst1的profile或手工添加相应环境变量,即可使用DB2,前提是DBA已授权此用户足够权限。 相关的下载及文档URL: http://www14.software.ibm.com/webapp/download/search.jsp?q=UDB http://www-306.ibm.com/software/data/db2/udb/edition-ese.html null 配置助手 控制中心 命令行工具 – 命令窗口、命令行处理器 信息中心 开发中心 健康中心 null 实例 Instance 数据库 Database 容器 Container 表空间 Tablespace 扩展区 Extend 表 Table 页 Page null View SQL存储过程 触发器 事务处理 索引 null模式是一个标识符,如用户 ID, 它帮助分组表和其他数据库对象。模式可以归个人拥有,拥有者可以控制对数据以及其中的对象的存取。 模式也可以是数据库中的对象。它可以在创建模式中的第一个对象时 自动创建。这样的对象可以是任何可以由模式名限定的对象,如表、索引、视图、程序包、单值类型、函数或触发器。若要自动创建模式,则您必须 拥有 IMPLICIT_SCHEMA 权限,也可以隐式地创建模式。 模式名用作两部分对象名的第一部分。创建一个对象时,可将其分配给 特定模式。若不指定模式,则它被分配给缺省模式,缺省模式通常是创建该对象的人员的用户 ID。名称的第二部分是对象名。例如,名为 Smith 的用户可以 有一个名为 SMITH.PAYROLL 的表。 简单的比喻:假如DB等同于公司,模式相当一个部门名称。 null CURRENT DATE USER CURRENT TIMESTAMP CURRENT TIME CURRENT TIMEZONE CURRENT SERVER 相当于SQL Server中的全局变量 null 常用的 DB2 指令 CREATE / DROP LIST / DESCRIBE FORCE GET / UPDATE IMPORT / EXPORT / LOAD BIND / REBIND REORG / RUNSTATS ……null 常用的 DB2 系统指令 db2admin db2advi db2batch db2cc / db2cmd db2cfexp / db2cfimp db2start / db2stop ……数据库分区与表空间数据库分区与表空间null 数据库分区 一个数据库可以建立一个或多个分区(即节点),数据可以根据表所定义的分区键通过HASH算法存放于各个分区中。 作为表格的分区键,建议使用高基数字段(拥有多个不同的值),这样可以使数据被均匀的分布,可以利用节点组中所有的节点资源来执行操作。也可以指定多个字段同时作为分区键来满足要求。null 表空间的定义 DB2是以表空间来定义数据库中存放数据的实体磁盘空间。 一个数据库中至少需要具备3个表空间,分别是: SYSCATSPACE: 存放数据库中的所有系统表 TEMPSPACE1:存放DB2在执行SQL指令时所产生的临时数据表 USERSPACE1:存放用户所建立的表null 表空间的分类 根据存储的数据种类区分 规则表空间:存放系统表格过用户建立的表格的数据与索引。 临时表空间:存放在执行SQL指令时产生的临时数据。 大型表空间:存放LONG VARCHAR与LOB类型的字段数据。 根据管理方式区分 数据库管理空间:DMS,是由DB2直接格式化与管理的空间 系统管理空间:SMS,是由DB2通过操作系统所管理的空间数据库中的对象数据库中的对象null 对象名称: DB2 的所有对象,都有其对象名称,DB2 会将他全部转成大写,但如果把对象名称用双引号括起来,则就区分大小写。带引号的对象名称也可以包含SQL的保留字,但并不提倡。 null 表格 注意指定表空间和分区键 可增加字段,新增或删除限制 可更改VARCHAR类型的长度 可用LIKE定义同样的一张表,但除了字段类型和默认值外其他属性不继承 索引 视图 只读视图/可更新视图 别名null限制 NOT NULL Constraints Column Defaults Unique Constraints Check Constraints Primary Key Constraints Foreign Key Constraints 触发器 前触发器 / 后触发器 实例化查询表(MQT): REFRESH DEFERRED REFRESH IMMEDIATE数据的锁数据的锁nullLOCK TABLE 指令 LOCK TABLE DB2.TABLENAME IN SHARE MODE LOCK TABLE DB2.TABLENAME IN EXCLUSIVE MODE 锁定的对象 数据库 / 表空间 / 表格 / 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 锁定的模式(强度) 写锁定,包括 X、W、NW、Z 等 读锁定,包括 S、NS、U 等null锁定等待 LOCK WAIT 锁定超时 LOCKTIMEOUT 锁定升级 LOCKLIST:定义数据库中预留多少空间存放锁定信息 MAXLOCKS:定义每个事务可以使用多少LOCKLIST内存区 数据库系统效能数据库系统效能nullDB2 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 null几张关键的系统表 SYSCAT.TABLES SYSCAT.COLUMNS SYSCAT.COLDIST SYSCAT.INDEXES SYSCAT.TABLESPACES RUNSTATS 索引 建立索引的方法 where条件的索引的顺序 索引的副作用nullREORG 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 ;DB2客户端程序开发DB2客户端程序开发程序包与BIND 嵌入式SQL CLI JDBC SQLJ实际应用实际应用nullSQL存储过程 CREATE PROCEDURE DROP PROCEDURE IN/OUT 参数 调用 CALL 错误陷阱 循环语句 COMMIT WORK BEGIN/ENDnullSQL存储过程 C存储过程/函数 Java存储过程 其他:COBOL、OLE nullStore Procedure Builder DW:通过一个C函数写成的Function向调试文件写日志 nullSQLCODE,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 nullCreate procdure xx.xx(in xx, out xx) specific specific-name Language SQL begin xxx end DB2允许定义同名但参数不同的存储过程,因此在删除存储过程时使用specific-name删除。 假如调用存储过程的参数错误,db2只说找不到对应的存储过程,而不会说参数错误。 这一点类似面向对象的参数重载。 null静态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 ;null动态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; null 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);null权限设置 过程/函数 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 ……nullnull日期运算:如何求出每月末的日期? null日期运算: values(date(‘2006-01-31’)+1 month) values(date(‘2006-01-31’)+1 year) 数值运算 decimal的小数位 Null值 任何有Null参与的表达式,结果都是Null 特别注意打印中间结果或调试语句时 null必须要先定义系统临时表空间或用户临时表空间才能使用临时表 定义临时表不能使用模式名,其模式名固定为session。 使用完成后最好把临时表Drop掉。 nullSQL Server取到SQL语句所影响的行数的方式?(@@rowcount) DB2取到SQL语句所影响的行数的方式 – Get diagnostics GET DIAGNOSTICS v_Iupdate_Cnt=ROW_COUNT; null完整的存储 过程实例讲解nullQuestion ?
本文档为【DB2入门】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_385466
暂无简介~
格式:ppt
大小:266KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2013-11-05
浏览量:14