设为首页 收藏本站
查看: 1020|回复: 0

[经验分享] DB2参考

[复制链接]

尚未签到

发表于 2016-11-17 10:49:14 | 显示全部楼层 |阅读模式
1 DB2 基础,入门
一. 安装DB2
有三个选择,可以企业版,也可以只安装客户端。安装完成后,打开”控制中心”可以操作整个DB2,打开”信息中心”可以查看相应的帮助文档.
二. 安装Quest Central for DB2
这两个软件都不需要配置,只要不断点下一步就可以安装成功,安装完成后会在桌面上生成一个 Knowledge Xpert for DB2 快捷方式.这就是它的帮助文档.
三. 在按制中心创建一个实例
1.首先打开DB2“控制中心”,右击“我以编目的系统”,再选择添加,会出现如下页面,单击“发现”然后选择相应主机,会自动填入如下项,最后确定。
2.设置主机:右击刚才新建的实例,出现如下页面,节点名为随意字符,不过必须为1-8 个字节,我们这里假设为TEST,创建实例服务名可以不填,端口是50000(DB2 默认的端口),然后确定。
3,连接相应的数据库实例:右击TEST,添加,选择相应的数据库实例,点击发选择你需要的数据库,当要操作相应数据库时会提示输入用户名,密码.
四. 创建数据库
1.选择数据库,右击选择”创建”选择”使用向导创建数据库”(注意“建库时务必工”区域“中选择编码方式为utf-8,否则当插入中文时,会有意想不到的错误提示,最典型的就是提示JDK 版本不兼容)
2.分别填入数据名称,用户表,也可以直接填入数据库名称,点完成.
3.创建表的方式和数据库创建类似,其中显示表的时候可以创建过虑器.如果我想隐藏系统表,设置表名为 not like sys%
五. Quest Central for DB2 使用
1. 简介:Quest Central for Databases 是一种集成化、图形化、跨平台的数据库管理解决方案,可以管理异构环境下的 Oracle、DB2 数据库。Quest Central for Databases 消除了企业IT人员管理多种数据库时面临的技术障碍,提高了IT 人员工作效率,改善了数据库性能和数据库应用的可用性。  2. 使用SQL Editor: 打开Quest Central for db2,点击菜单栏的Tools,选择SQL Editor
  3.使用Edit tools: Edit 除了菜单栏分为两个主要模块,上面用于执行的SQL 语句,下面用于显示执行情况以及输出信息,点击左上角的执行按钮,执行SQL
六. 数据类型说明
自己的一些总结:
1.DB2 没有Boolean 型。
2.DB2 表中的列一旦建立不能删除列。

  DROP COLUMN:DB2 不允许您删除一个列。我可以想到您希望删除列的三个理由:
  回收空间:如果您希望这样做,可以导出您希望保存的数据,删除那个表,用您需要的那些列重新创建表,然后装入这个表。这是否代价高昂?当然是,但是回收空间需要这样或者 REORGTABLE。这些本来就是代价高昂的操作。
这个列不再是行的逻辑部分:例如,您意识到您的雇员可能有两个地址,并且停止跟踪雇员(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 TYPEVARCHAR(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-13:
30“05.000000
数值型数据类型说明:
DB2 内置数据类型可以分成
数值型(numeric)、
字符串型(character string)、
图形字符串(graphic string)、
二进制字符串型(binary string)
日期时间型(datetime)。
特殊数据类型(DATALINK ),DATALINK 值包含了对存储在数据库以外的文件的逻辑引用。
数值型数据类型包括 SMALLINT、INTEGER、BIGINT、DECIMAL(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 decimal,BCD)记数法的变体来存储。小数点的位置取决于数字的精
度(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),DOUBLE,DOUBLE 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,024(n 的最大值为 2,097,152)。
如果指定了 nM,那么最大长度就是 n*1,048,576(n 的最大值为 2,048)。如果指定
了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。CLOB 用于存储基于
大单字节字符集(single-byte character set,SBCS)字符的数据或基于混合(多字
节字符集(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,024(n 的最大值为 1,048,576)。如果
指定了 nM,那么最大长度就是 n*1,048,576(n 的最大值为 1,024)。如果指定了 nG,
那么最大长度就是 n*1,073,741,824(n 的最大值是 1)。DBCLOB 用于存储基于大 DBCS
(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序
列。二进制字符串包括 BLOB(n) 类型的变长字符串,它用于容纳非传统型的数据,诸
如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数
据。
* 二进制大对象,BLOB(n[K|M|G]):二进制大对象是变长字符串,最长可达
2,147,483,647 字节。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么
最大长度就是 n*1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度
就是 n*1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是
n*1,073,741,824(n 的最大值是 2,也就是容量为2G)。
日期时间型数据类型包括 DATE、TIME 和 TIMESTAMP。日期时间值可在某些算术和字符
串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。
*DATE:DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到
9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于
月份。DATE 列长 10 个字节。
*TIME:TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到
24。分钟和秒部分的范围都是从 0 到 59。如果小时为 24,分钟和秒的值都是 0。TIME
列长 8 个字节。
*TIMESTAMP: TIMESTAMP 是一个由七部分组成的值(年、月、日、小时、分钟、秒和
微秒)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分
的范围是从 1 到 n,其中 n 的值取决于月份。小时部分的范围是从 0 到 24。分钟和
秒部分的范围都是从 0 到 59。微秒部分的范围是从 000000 到 999999。如果小时是
24,那么分钟值、秒的值和微秒的值都是 0。TIMESTAMP 列长 26 个字节。日期时间值
的字符串表示:尽管 DATE、TIME 和 TIMESTAMP 的值的内部表示对用户是透明的,日
期、时间和时间戳记也可以用字符串来表示,CHAR 标量函数(请参阅 SQL 的“词类
(parts of speech)”)可以用于创建日期时间值的字符串表示。
*日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月
份和日部分中前面的零可以省略。
*时间值的字符串表示是以数字开头,长度不少于 4 个字符的字符串。时间值的小时部
分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0。
* 时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时
间戳记字符串表示形式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时
等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部
分尾零被省略掉了,那么将假定空缺的数位上是零。
七. 附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.tabna
me,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.PACKAGEA
UTH
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.SCHEMAAUT
H
UNION
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUA
UTH
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 应该程序。
2.DB2 在安装后会在安装目录相应的盘下生成一个DB2 的文件夹,如:C:"DB2"NODE0000
(安装在D 盘就为:D:"DB2"NODE0000),卸载后应用程序后,再删除NODE0000 文件就可以了,不如不删NODE0000,重装时会报错,而且重装后DB2 跑不起来

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301629-1-1.html 上篇帖子: DB2中的数据类型 下篇帖子: 如何使用SQL Server链接服务器访问DB2 Server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表