- dabing013
- 等级:
- 性别:
- 文章: 27
- 积分: 120
- 来自: 上海
|
发表时间:2010-03-10
最后修改:2010-03-18
1、数据操作语言(DML:select,delete,insert,update) <1>查询数据库目录: db2 list db directory <2>查询数据库中表 db2 list tables 当前用户 db2 list tables for all 所有表 db2 list tables for schema schemaname 指定模式的表 <3>显示表结构 db2 describe table tablename <4>插入数据 db2 insert into tablename(字段名,字段名...) values (与字段名一一对应的值) db2 insert into tablename1(字段1,字段2,字段3...) select 字段1,字段2,字段3...from tablename2 + 查询条件 <5>更改表或视图数据 db2 update tablename/viewname set 字段名1='',字段2='',...+查询条件 <6>删除数据 db2 delete from tablename where + 条件 <7>导入数据 db2 "import from E:\name.txt of del insert into tableName" db2 "import from E:\name.ixf of ixf commitcount 5000 insert /create/replace into tableName" db2 "load client from D:\xx.txt of del insert/replace into tabName"(不需要写日志,但插入前表必须存在;不能create table) db2 "load client from D:\xx.txt of del restart/terminate into tabName" 当导入数据出现问题被强行中断时,此表会被加锁,通过此命令可以解锁 <8>导出数据 db2 "export to E:\name.txt of del select * from tableName" db2 "export to E:\name.txt of del MODIFIED BY NOCHARDEL select * from tableName"(导出不带分号的数据) 导出表结构和数据 db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName" db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName fetch first (取数+UNM) rows only"(取固定条数) 导出表结构 db2look -d dbName -e -t tableName -o D:\xxx.sql(path) -i userName -w password db2look -d dbName -z tabSchema -e -c -i userName -w password -o + 路径名 导出存储过程结构 db2 "export to xxx.sql of del select text from syscat.procedures where procname='大写存储过程名'" <9>查询表状态 db2 load query table + tableName <10>查询当前表数据量(数据入库时) db2 select count(1) from tab with ur <11>修改当前表名、模式名 db2 rename table tab1 to tab2 2、数据定义语言(DDL:create,alter) <1>创建或删除实例 db2icrt instance_name/db2idrop -f instance_name linux:db2icrt -u user_id instance_name <2>创建视图、表、模式 db2 create view/table/schema 创建指定用户的模式 db2 create schema schName AUTHORIZATION userName db2 create schema AUTHORIZATION userName(没有指定模式名时,模式名隐含为用户名userName) 定义含有缺省值的表 db2 create table tableName(column1 数据类型,column2 数据类型 default '缺省值') 基于已存在的表 db2 create table clone_tablename like tablename db2 create table clone_tablename as (select * from tablename) definition only 创建物化查询表(MQT) create table new_table_name as (select * from table_name) data initially deferred refresh deferred; refresh table new_table_name; 注意:物化表类似一个查询,没有真正形成表,类型显示为Query。但它完全可以当表来用。 创建表并指定其索引表空间 db2 create table(.....) in userspace1 INDEX in userspace2 (userspace1是表所在空间,userspace2是表上索引所在空间) <3>创建视图 db2 create view viewname as select 字段名1,字段名2...from table where + 条件 with check option 规定一种约束:通过视图插入或更新的每一行都必须符合视图的定义,如: create view emp_view2(empno,empname,deptno) as (select id,name,dept from employee where dept=10)with check option 当此视图用于更新数据或插入新值时,with check option 限制了dept列的输入值 <4>修改表(列,主键,唯一约束,检查约束) 1)添加新列 alter table tablename ADD COLUMN columnname 数据类型 2)添加约束 3)修改表中字段 alter table tablename alter columnname set data type 数据类型 4) 添加主键 alter table tablename add primary key(c1,c2) <5>删除模式、表、视图 drop schema schName <CASCADE|RESTRICT> CASCADE(级联)表示删除模式的同时删除该模式中所有的数据库对象 RESTRICT(限制)表示该模式下定义了数据库对象时,限制删除;没有任何数据库对象时才能删除 <6>重新组织表及其索引 重组表数据 reorg table tableName index indexName(根据索引) 重组表索引 reorg indexes all for table tableName <7>重新收集表及其索引统计信息 runstats on table tableName for indexes all(跑批前重新收集所用表信息可以提高效率) <8>DB2自动增长主键方法 IDENTITY列 generated always as identity(start with 1,increment by 1)将一个字段指定为自增长型字段,放在数据类型后。 SEQUENCE对象(序列) 3、数据控制语言(DCL:grant,revoke)
将表的特权授予用户 grant select,update,delete on table tableName to user userName with grant option 将包特权授予同组 grant control on package packageName on group groupName with grant option
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- robatter
- 等级: 初级会员
- 性别:
- 文章: 36
- 积分: 42
|
正好,在用DB2.THKS。
|
返回顶楼 |
|
|
- C.T
- 等级: 初级会员
- 性别:
- 文章: 14
- 积分: 40
- 来自: 广州
|
哈哈,我收藏了啊,以后用db2的时候,看啊
|
返回顶楼 |
|
|
- wese345
- 等级: 初级会员
- 性别:
- 文章: 61
- 积分: 30
- 来自: 陕西
|
建议改下标题,加个DB2
|
返回顶楼 |
|
|
- dabing013
- 等级:
- 性别:
- 文章: 27
- 积分: 120
- 来自: 上海
|
wese345 写道 建议改下标题,加个DB2
恩 这个可以有
|
返回顶楼 |
|
|
- nail2008
- 等级: 初级会员
- 性别:
- 文章: 221
- 积分: 70
- 来自: 北京
|
DB2 还是不要用自增的好 万一转Oracle麻烦
|
返回顶楼 |
|
|
- nail2008
- 等级: 初级会员
- 性别:
- 文章: 221
- 积分: 70
- 来自: 北京
|
DB2的帮助很强大 命令行:"DB2 ? XXXX" XXXX是命令、错误编码等等,一般的故障都可以通过这个命令获取到解决办法。
|
返回顶楼 |
|
|
- eivenchan
- 等级: 初级会员
- 性别:
- 文章: 94
- 积分: 40
- 来自: 深圳
|
引用 DB2的帮助很强大
命令行:"DB2 ? XXXX"
XXXX是命令、错误编码等等,一般的故障都可以通过这个命令获取到解决办法。
这样很好?
本来就是一个字段值超长的错误,但是就是不在错误信息中提示,非得弄个编码,让你再去终端查一次,
查就查吧,结果还很笼统,偏不告诉你是哪个字段超长,要你一个一个试
要是一个表有四五十个字段,疯掉。。。。。。。。
|
返回顶楼 |
|
|
- nail2008
- 等级: 初级会员
- 性别:
- 文章: 221
- 积分: 70
- 来自: 北京
|
eivenchan 写道 引用 DB2的帮助很强大
命令行:"DB2 ? XXXX"
XXXX是命令、错误编码等等,一般的故障都可以通过这个命令获取到解决办法。
这样很好?
本来就是一个字段值超长的错误,但是就是不在错误信息中提示,非得弄个编码,让你再去终端查一次,
查就查吧,结果还很笼统,偏不告诉你是哪个字段超长,要你一个一个试
要是一个表有四五十个字段,疯掉。。。。。。。。
对于初学者来说,db2的帮助还比较友好了,在错误码后面还有个个位数,根据这个数字看帮助你的情况是属于哪种类型的。
这个帖子不是来品论DB2好不好用!而是给想用DB2的人一些帮助。
还有关于调试,不要一颗树上吊死,想知道哪个字段超长了不一定非要让DB2来告诉你。
|
返回顶楼 |
|
|