0734w-月下竹音

0734是来自家乡的声音

常用链接

统计

最新评论

DB2基础,入门

本篇文章是本人在用到DB2项目开始时作的一个总结,以下资料有一部分是来自网络,一部分是出自本人之手,不管怎么样,目的只有一个,希望给看到这篇文章的一些帮助,转贴请将原贴转全,万分感谢------(0734w)月下竹音  

从word上面直接拷贝时图片不显示,待哪天有时间再把图片加上,以下图片基于db2 -8.1

DB2基础,入门

一.      安装DB2

         有三个选择,可以企业版,也可以只安装客户端。

         安装完成后,打开控制中心可以操作整个DB2,打开信息中心可以查看相应的帮助文档.

二.      安装Quest Central for DB2

         这两个软件都不需要配置,只要不断点下一步就可以安装成功,安装完成后会在桌面上生成一个 Knowledge Xpert for DB2快捷方式.这就是它的帮助文档.

三.      在按制中心创建一个实例

1.首先打开DB2“控制中心”,右击“我以编目的系统”,再选择添加,会出现如下页面,单击“发现”然后选择相应主机,会自动填入如下项,最后确定,如图1

如图1

 

2.设置主机:右击刚才新建的实例,出现如下页面,节点名为随意字符,不过必须为1-8个字节,我们这里假设为TEST,创建实例服务名可以不填,端口是50000DB2默认的端口),然后确定,如下图2

 

2

3,连接相应的数据库实例:右击TEST,添加,选择相应的数据库实例,点击发选择你需要的数据库,如图3,当要操作相应数据库时会提示输入用户名,密码.

3

四.      创建数据库

1.选择数据库,右击选择创建选择使用向导创建数据库注意“建库时务必工”区域“中选择编码方式为utf-8,否则当插入中文时,会有意想不到的错误提示,最典型的就是提示JDK版本不兼容)操作如图4

4

 

2.分别填入数据名称,用户表,也可以直接填入数据库名称,点完成.如图5

5

3.创建表的方式和数据库创建类似,其中显示表的时候可以创建过虑器.如果我想隐藏系统表,设置表名为 not like sys% 如图6

6

五.      Quest Central for DB2使用

1.       简介:Quest Central for Databases 是一种集成化、图形化、跨平台的数据库管理解决方案,可以管理异构环境下的 OracleDB2数据库。Quest Central for Databases 消除了企业IT人员管理多种数据库时面临的技术障碍,提高了IT人员工作效率,改善了数据库性能和数据库应用的可用性

2.      使用SQL Editor: 打开Quest Central for db2,点击菜单栏的Tools,选择SQL Editor7

7

 

3.使用Edit tools: Edit除了菜单栏分为两个主要模块,上面用于执行的SQL语句,下面用于显示执行情况以及输出信息,点击左上角的执行按钮,执行SQL, 8

六.       数据类型说明

自己的一些总结:
 
1.DB2没有Boolean型。
2.DB2表中的列一旦建立不能删除列。

DROP COLUMNDB2 不允许您删除一个列。我可以想到您希望删除列的三个理由:

    回收空间:如果您希望这样做,可以导出您希望保存的数据,删除那个表,用您需要的那些列重新创建表,然后装入这个表。这是否代价高昂?当然是,但是回收空间需要这样或者 REORG TABLE。这些本来就是代价高昂的操作。
   
这个列不再是行的逻辑部分:例如,您意识到您的雇员可能有两个地址,并且停止跟踪雇员(employee)表中的地址(雇员表和雇员地址(employee_address)表之间现在有 n:m 关系)。在雇员表上创建一个不包含地址列的视图。
   
如果您真的要用新奇的方法,可以使用
RENAME TABLE命令给基表一个新的名称,然后将原始表名作为该视图的名称。您的视图也可以连接雇员表中的有用列和从雇员地址获得的地址。现在我们回到了关系的正道。

    列变宽了。如果它是 VARCHAR,那您运气不错。DB2 允许您将 VARCHAR 列最多加宽至表空间(tablespace)中定义的页大小宽度(缺省的 4K 页大小为 4,005,而在 32K 页上最多为 32,672):

 
3.除了VARCHAR能增加长度外,其它类型不能修改列属性,也就是上面的第三点
   :TT为表名,第二个为列名ALTER TABLE TT ALTER COLUMNTT SET DATA TYPE VARCHAR(40);
4.不能更换列名:
ALTER TABLE tt RENAME COLUMN tt TO t3;

 

数据类型存放在:sysibm.SYSDATATYPES表中


数据类型       类型           特性                   示例或范围 
 
数值型
SMALLINT      
数字           长度为 2 字节精度为 5       范围为-32768  32767 
 
INTEGER        数字           长度为 4 字节精度为 10      范围为-2147483648  2147483647 
 
BIGINT         数字           长度为八个字节的整数,精度为 19 位范围为
                                        -9,223,372,036,854,775,808  9,223,372,036,854,775,807

REAL          
数字           单精度浮点32 位近似值         范围为否                                                   -3.402E+38-1.175E-37    1.175E-37 -3.402E+38或零 

DOUBLE        
数字           双精度浮点64 位近似值         范围为-1.79769E+308 -2.225E-307 2.225E-307  1.79769E+308或零 

DECIMAL(5,2)  
数字           精度为 5,小数位为 2             范围                    -10**31+1  10**31-1 ,小数位是指数字的小数部分的位数,不能大于精度。最大精度是 31 位。
 
字符串

CHAR(15)      
定长字符串      最大长度为 254        'Sunny day ' 

VARCHAR(15)   
变长字符       最大长度为 4000        'Sunny day' 

LONG VARCHAR  
变长字符串      最长可达 32,700 字节
 
CLOB字符大对象 变长字符串      最长可达2,147,483,647 字节(容量最大2G
 
BLOB           变长字符串      最长可达 2,147,483,647 字节(容量最大2G
 
日期时间型

DATE          
日期时间       三部分值               1991-10-27    

TIME          
日期时间       三部分值               13.30.05    

TIMESTAMP     
日期时间       七部分值   1991-10-27-133005.000000 
 
 
数值型数据类型说明

DB2内置数据类型可以分成

数值型numeric)、

字符串型character string)、

图形字符串graphic string)、

二进制字符串型binary string

日期时间型datetime)。

特殊数据类型DATALINK ),DATALINK 值包含了对存储在数据库以外的文件的逻辑引用。

数值型数据类型包括 SMALLINTINTEGERBIGINTDECIMAL(p,s)REAL DOUBLE。所有数值都有符号和精度。精度是指除符号以外的二进制或十进制的位数。如果数字的值大于等于零,就认为符号为正。

*
小整型SMALLINT:小整型是两个字节的整数,精度为 5 位。小整型的范围从 -32,768 32,767

*
大整型INTEGER INT:大整型是四个字节的整数,精度为 10 位。大整型的范围从 -2,147,483,648 2,147,483,647

*
巨整型BIGINT:巨整型是八个字节的整数,精度为 19 位。巨整型的范围从 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

*
小数型DECIMAL(p,s)DEC(p,s)NUMERIC(p,s) NUM(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded decimalBCD)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也 不能大于精度。最大精度是 31 位。小数型的范围从 -10**31+1 10**31-1

*
单精度浮点数Single- precision floating-point),REAL:单精度浮点数是实数的 32 位近似值。数字可以为零,或者在从 -3.402E+38 -1.175E-37 或从 1.175E-37 3.402E+38 的范围内。

*
双精度浮点数Double-precision floating-point),DOUBLEDOUBLE PRECISION FLOAT:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -1.79769E+308 -2.225E-307 或从 2.225E-307 1.79769E+308 的范围内。

字符串是字节序列。字符串包括 CHAR(n) 类型的定长字符串和 VARCHAR(n)LONG VARCHAR CLOB(n) 类型的变长字符串。字符串的长度就是序列中的字节数。

*
定长字符串,CHARACTER(n) CHAR(n):定长字符串的长度介于 1 254 字节之间。如果没有指定长度,那么就认为是 1 个字节。

*
变长字符串,VARCHAR(n)CHARACTER VARYING(n) CHAR VARYING(n)VARCHAR(n) 类型的字符串是变长字符串,最长可达 32,672 字节。

*LONG VARCHAR
LONG VARCHAR 类型的字符串是变长字符串,最长可达 32,700 字节。

*
字符大对象字符串Character Large Object String),CLOB(n[K|M|G])CLOB 是变长字符串,最长可以达到 2,147,483,647 字节。如果只指定了 n,那么 n 的值就是最大长度。如果指定了 nK,那么最大长度就是 n*1,024n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n*1,048,576n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824n 的最大值是 2)。CLOB 用于存储基于大单字节字符集(single-byte character setSBCS)字符的数据或基于混合(多字节字符集(MBCS)和 SBCS)字符的数据。图形字符串是表示双字节字符数据的字节序列。图形字符串包括类型为 GRAPHIC(n) 的定长图形字符串和类型为 VARGRAPHIC(n)LONG VARGRAPHIC DBCLOB(n) 的变长图形字符串。字符串的长度就是序列中双字节字符的数目。

*
定长图形字符串GRAPHIC(n):定长图形字符串的长度介于 1 127 个双字节字符之间。如果没有指定长度,就认为是 1 个双字节字符。

*
变长图形字符串VARGRAPHIC(n)VARGRAPHIC(n) 类型的字符串是变长图形字符串,最大长度可达 16,336 个双字节字符。

*LONG VARGRAPHIC
LONG VARGRAPHIC 类型的字符串是变长图形字符串,最大长度可达 16,350 个双字节字符。

*
双字节字符大对象字符串,DBCLOB(n[K|M|G]):双字节字符大对象是变长双字节字符图形字符串,最长可达 1,073,741,823 个字符。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n*1,024n 的最大值为 1,048,576)。如果指定了 nM,那么最大长度就是 n*1,048,576n 的最大值为 1,024)。如果指定了 nG,那么最大长度就是 n*1,073,741,824n 的最大值是 1)。DBCLOB 用于存储基于大 DBCS(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序列。二进制字符串包括 BLOB(n) 类型的变长字符串,它用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。

*
二进制大对象,BLOB(n[K|M|G]):二进制大对象是变长字符串,最长可达 2,147,483,647 字节。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n*1,024n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n*1,048,576n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824n 的最大值是 2,也就是容量为2G)。

日期时间型数据类型包括 DATETIME TIMESTAMP。日期时间值可在某些算术和字符串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。

*DATE
DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 9999。月份部分的范围是从 1 12。日部分的范围是从 1 n,其中 n 的值取决于月份。DATE 列长 10 个字节。

*TIME
TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 24。分钟和秒部分的范围都是从 0 59。如果小时为 24,分钟和秒的值都是 0TIME 列长 8 个字节。

*TIMESTAMP
TIMESTAMP 是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从 0001 9999。月份部分的范围是从 1 12。日部分的范围是从 1 n,其中 n 的值取决于月份。小时部分的范围是从 0 24。分钟和秒部分的范围都是从 0 59微秒部分的范围是从 000000 999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是 0TIMESTAMP 列长 26 个字节。日期时间值的字符串表示:尽管 DATETIME TIMESTAMP 的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,CHAR 标量函数(请参阅 SQL 词类(parts of speech)可以用于创建日期时间值的字符串表示。

*
日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月份和日部分中前面的零可以省略。

*
时间值的字符串表示是以数字开头,长度不少于 4 个字符的字符串。时间值的小时部分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0

*
时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时间戳记字符串表示形式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上是零。

 

8

七.      1:常用的DB2命令

DB2有自带的命令中心,但是命令中心没有关键字颜色提示,建议使用Quest Central for db2

常用命令列表:

1. 建立数据库DB2_GCB 
  
CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB 
USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32 
  2. 连接数据库
 
  
connect to sample1 user db2admin using 8301206 
  3. 建立别名
 
  
create alias db2admin.tables for sysstat.tables; 
  
CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS 
  
create alias db2admin.columns for syscat.columns; 
  
create alias guest.columns for syscat.columns; 
  4. 建立表
 
  
create table zjt_tables as 
  
(select * from tables) definition only; 
  
create table zjt_views as 
  (select * from views) definition only; 

  5. 插入记录 

  insert into zjt_tables select * from tables; 
  
insert into zjt_views select * from views; 
  6. 建立视图
 
  
create view V_zjt_tables as select tabschema,tabname from zjt_tables; 
    7. 
建立触发器
 
  
CREATE TRIGGER zjt_tables_del 
  
AFTER DELETE ON zjt_tables 
  
REFERENCING OLD AS O 
  
FOR EACH ROW MODE DB2SQL 
  Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10)) 

  8. 建立唯一性索引 
  CREATE UNIQUE INDEX I_ztables_tabname 

  ON zjt_tables(tabname); 

  9. 查看表 
  
select tabname from tables 
  
where tabname='ZJT_TABLES'; 
  10. 查看列
 
  select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 类型,LENGTH as 长度
 
  
from columns 
  where tabname='ZJT_TABLES'; 

  11. 查看表结构 
  db2 describe table user1.department 

  db2 describe select * from user.tables 

  12. 查看表的索引 
  db2 describe indexes for table user1.department 

  13. 查看视图 
  
select viewname from views 
  where viewname='V_ZJT_TABLES'; 

  14. 查看索引 
  
select indname from indexes 
  where indname='I_ZTABLES_TABNAME'; 

15. 
查看存贮过程 
  
SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15) 
  FROM SYSCAT.PROCEDURES; 
 

  17. 重新连接 
  connect reset 

  18. 中断数据库连接 

  disconnect db2_gcb 

  19. view application 

  LIST APPLICATION; 

  20. kill application 

  FORCE APPLICATION(0); 
  db2 force applications all (强迫所有应用程序从数据库断开

  21. lock table

  lock table test in exclusive mode 

  22. 共享 

  lock table test in share mode 

  23. 显示当前用户所有表 

  list tables 

  24. 列出所有的系统表 

  list tables for system 

 25. 显示当前活动数据库 

  list active databases 

  26. 查看命令选项 

  list command options 

  27. 系统数据库目录 

  LIST DATABASE DIRECTORY 

  28. 表空间 

  list tablespaces 

  29. 表空间容器 

  LIST TABLESPACE CONTAINERS FOR 
  Example: LIST TABLESPACE CONTAINERS FOR 1 

  30. 显示用户数据库的存取权限 

  GET AUTHORIZATIONS 

  31. 启动实例 

  DB2START 

  32. 停止实例 

  db2stop 

  33. 表或视图特权 

  grant select,delete,insert,update on tables to user 
  grant all on tables to user WITH GRANT OPTION 

  34. 程序包特权 

  GRANT EXECUTE 
  
ON PACKAGE PACKAGE-name 
  TO PUBLIC 

35. 
模式特权 

  GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER 

  36. 数据库特权 

  grant connect,createtab,dbadm on database to user 

  37. 索引特权 

  grant control on index index-name to user 

  38. 信息帮助 (? XXXnnnnn ) 

  例:? SQL30081 

  39. SQL 帮助(说明 SQL 语句的语法

  help statement 
  例如,
help SELECT 
  40. SQLSTATE 帮助(说明 SQL 的状态和类别代码

  ? sqlstate  ? class-code 

  41. 更改与"管理服务器"相关的口令 
  db2admin setid username password 

  42. 创建 SAMPLE 数据库 

  db2sampl 
  db2sampl F:(指定安装盘

  43. 使用操作系统命令 

  ! dir 

  44. 转换数据类型 (cast) 

  SELECT EMPNO, CAST(RESUME AS VARCHAR(370)) 
  
FROM EMP_RESUME 
  WHERE RESUME_FORMAT = 'ascii' 

45. UDF

  要运行 DB2 Java 存储过程或 UDF,还需要更新服务器上的 DB2 数据库管理程序配置,以包括在该机器上安装 JDK 的路径 

  db2 update dbm cfg using JDK11_PATH d:\sqllib\java\jdk 
  
TERMINATE 
  update dbm cfg using SPM_NAME sample 

  46. 检查 DB2 数据库管理程序配置 
  db2 get dbm cfg 

  47. 检索具有特权的所有授权名 

  SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROM SYSCAT.PACKAGEAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROM SYSCAT.SCHEMAAUTH 
  
UNION 
  
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUAUTH 
  
ORDER BY GRANTEE, GRANTEETYPE, 3 

  
create table yhdab 
  
(id varchar(10), 
  
password varchar(10), 
  
ywlx varchar(10), 
  
kh varchar(10)); 
  
create table ywlbb 
  
(ywlbbh varchar(8), 
  ywmc varchar(60)) 

48. 
修改表结构 

  alter table yhdab ALTER kh SET DATA TYPE varchar(13); 
  
alter table yhdab ALTER ID SET DATA TYPE varchar(13); 
  
alter table lst_bsi alter bsi_money set data type int; 
  
insert into yhdab values 
  
('20000300001','123456','user01','20000300001'), 
  ('20000300002','123456','user02','20000300002'); 
49.增加licence
  db2licm -a path(d:\DB2\db2udbee.lic)
 

八.      2:列函数


  列函数对列中的一组值进行运算以得到单个结果值。下列就是一些列函数的示例。 
  
AVG 
  返回某一组中的值除以该组中值的个数的和 

  COUNT 
  返回一组行或值中行或值的个数 

  MAX 
  返回一组值中的最大值 

  MIN 
  返回一组值中的最小值 

九.      3:标量函数


  标量函数对值进行某个运算以返回另一个值。下列就是一些由DB2 通用数据库提供的标量函数的示例。 
  
ABS 
  返回数的绝对值 

  HEX 
  返回值的十六进制表示 

  LENGTH 
  返回自变量中的字节数(对于图形字符串则返回双字节字符数。) 

  YEAR 
  抽取日期时间值的年份部分 

  二进制大对象 (BLOB) 字符串。 

  字符大对象 (CLOB) 字符串,它的字符序列可以是单字节字符或多字节字符,或这两者的组合。 

  双字节字符大对象 (DBCLOB) 字符串,它的字符序列是双字节字符。 

  数据库范式

  第一种规范形式:表中的每一行和每一列均有一个值,永远不会是一组值。 

  第二种规范形式:不在关键字中的每一列提供取决于整个关键字的事实。 

  第三种规范形式:每个非关键字列提供与其他非关键字列无关并只取决于该关键字的事实。 

  第四种规范形式:没有行包含有关一个实体的两个或更多个独立的多值事实。 

十.      DB2重装

1.打开控制面板选择添加删除程序中,卸掉DB2应该程序。

2DB2在安装后会在安装目录相应的盘下生成一个DB2的文件夹,如:C:\DB2\NODE0000(安装在D盘就为:D:\DB2\NODE0000),卸载后应用程序后,再删除NODE0000文件就可以了,不如不删NODE0000,重装时会报错,而且重装后DB2跑不起来

 
 

posted on 2006-04-01 10:08 sparkwu 阅读(2325) 评论(3)  编辑  收藏

评论

# re: DB2基础,入门 2006-11-17 11:04 高杨

朋友,你这个文章写的太好了,好似及时雨呀,非常感谢,盼把图贴上  回复  更多评论   

# re: DB2基础,入门 2007-11-30 18:07 威威

图片,图片,我要看图片  回复  更多评论   

# re: DB2基础,入门 2011-08-12 20:15 丁二毛

你个很好,对 我很有帮助  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: