DB2数据库中,表,分区表,索引,约束,存储过程,函数,注释命令。

普通表

创建

create table table_name(a int)data capture changes;

含义:创建了一个最简单的普通表,表中只有a 一种数据类型(int),表名为table_name

删除

drop table table_name;

含义:删除刚才创建的数据库表table_name

重命名

rename table <old_name> to <new_name>;

含义:将表的名字替换为新的名字,本操作为原子操作,它会立刻修改表的名称,重命名后,与表关联的索引,约束,触发器也会自动更新

truncate(清表)

truncate table <table_name> (immediate);

含义:立刻删除表中的所有数据,但是表的结构不变,操作不可逆,一旦执行无法撤销。

增加列

alter table <table_name> add column <int_name> int;

含义:改变表中的结构,增加了一列,列的属性自己定义,本操作增加了一列int,名字为int_name。

删除列

alter table <table_name> drop column <column_name>;

含义:table_name是表的名字,column_name是列的名字,本操作删除了已经建立表中的一列。

若在删除列后,插入数据失败需加上如下指令:

REORG TABLE <table_name>;

修改列定义

标准格式:

alter table <table_name> alter column <column_name>set data type int;

含义:将列的数据类型的定义改为int,列名字为column_name,表的名字为table_name。

例子:

alter table table_com_alter_col alter column age set data type smallint;

将表中integer的类型数据属性改为smallint。

alter table table_com_alter_col alter column sex set data type varchar(20);

将表中varchar(10)的属性改为varchar(20)。

alter table table_com_alter_col alter column dept set default '研发部';

将表中dept列的默认值修改为研发部。

alter table table_com_alter_col alter column dept drop default;

将表中的默认值移除。

REORG TABLE table_com_alter_col;

 //本命令只能在db client中执行,sqldev不支持

含义:若想在更改完列的属性后,再继续正常插入数据,必须执行此命令,否则就会报错,reorg命令的作用就是将数据库重组,重新放置数据位置,这样我们更改的结构进行重构后,就可以继续插入等操作。

另一个优化器是runstats,在对表进行reorg操作后,执行runstats可以更新统计信息,方便查询,收集表和索引的统计信息。

runstats on table <table_name>.<column_name>

runstats on index <table_name>.<index_name>

重命名列

alter table <table_name> rename column <column_name> to <column_new_name>

含义:将数据库表中的column_name列名字替换为column_new_name,数据库表名字为table_name

重命名后,不需要reorg table,就能继续进行DML和DDL操作。

增加comment(注释)

含义:对表添加注释:comment on table <table_name> is 'db2表的注释'

含义:对表中列添加注释:comment on column <table_name>.<table_column> is '列的注释'

reorg table(重组)

含义:在对表的列进行操作时,列的属性如果发生变化,就需要进行重组操作:reorg table ,然后才能对数据库表进行插入等操作。

set integrity

 (完整性约束)

分区表的attach(合并分区)中,我将别的表作为分区表的一部分合并到分区表中,被合并的表会消失,作为分区表的一部分而存在,但是合并完成后,你是无法查询到合并进去后的数据的,需要进行禁用完整性约束并启用立即完整性检查,加快分区的附加过程,跳过约束检查的步骤。

set integrity for <合并后的分区表的名字> all immediate unchecked;

关键词含义:

set integrity :设置表的完整性属性关键词,

for 表名 :指定要设置完整性属性的表或分区范围的名称,

all:表示指定表的范围或分区的范围中的所有行设置完整性属性,

immediate:指定在更改后立即进行完整性检查,

unchecked:此选项在完整性检查过程中禁用引用完整性约束检查。

带属性

(如IMPLICITLY HIDDEN,

GENERATED ALWAYS等)

定义表的列的特性,隐式隐藏,始终生成等。

<column_name> <column_type> IMPLICITLY HIDDEN

含义:用于将列在查询结果中隐藏,除非明确请求显示该列,此隐式可以用于隐藏一些敏感或不常用的列,以提高查询结果的可读性。

c1 INT,

c2 DOUBLE,

c3 DOUBLE GENERATED ALWAYS AS (c1 + c2)

含义:始终生成用于指定列的值是通过计算或表达式生成的,而不是由用户提供,这个属性通常用于创建计算列或自动生成的列,列如自增主键。

用户授权grant/revoke

db2 grant use of tablespace bigtablespace to public

含义:授权所有用户组 public 对名为 bigtablespace 的表空间的使用权限。public 是 DB2 中一个预定义的用户组,代表所有用户。

分区表

创建分区表

指定创建表中的(sales_date date)作为分区依据进行分区PARTITION BY RANGE(sales_date)

分区表的分区是和表一起创建的,不能分开执行创建。

PARTITION BY range(age_id)

( PART p1 STARTING(minvalue)  ENDING(10),

 PART p2 STARTING(11)  ENDING(20), )

含义:其中分区表的分区依据为age_id,第一个分区名字为p1,第二个分区名字为p2,最后类推。

 alter table <table_name> add partition PART P3 STARTING(21) ENDING AT MAXVALUE;

 

添加列

alter table <table_name> add column <column_name> <column_type>

含义:正常添加列就可以,也不需要reorg table,列添加完成后,插入数据和查询也不受影响。

删除列

alter table <table_name> drop column <column_name> ;

含义:你添加列的时候,不需要对表进行reorg table操作,但是删除列的时候,列的属性已经发生变化,此时需要对表进行reorg重组操作才能进行插入等DML,DDL操作。

reorg table <table_name>;终端执行

修改列定义

alter table <table_name> alter column <column_name> set date type <column_type>;

reorg table <table_name>;终端执行

含义:修改列的定义,已经将列的属性改变,所以,在更改分区表的列属性时,和更改非分区表的属性一样,都需要在终端执行reorg table <table_name>进行数据库表重构。

重命名表和列

rename table <table_name> to <table_name_new>

alter table <table_name> rename column <column_name> to <column_name_new>

含义:重命名表和列,都不需要reorg重组,正常重名名即可,但是重命名后,原来名字就失效了。

truncate(清表)

truncate table <table_name> immediate;

含义:立刻清除表中所有数据,且不留下日志,本操作飞快,根本没得反应,重要表慎重。

注释

comment on table <table_name> is 'db2-ranges分区表';

comment on column <table_name>.<column_name> is '列的注释';

range分区

创建

指定创建表中的(sales_date date)作为分区依据进行分区PARTITION BY RANGE(sales_date)

分区表的分区是和表一起创建的,不能分开执行创建。

PARTITION BY range(age_id)

( PART p1 STARTING(0) ENDING(10),

 PART p2 STARTING(11) ENDING(20),

PART P3 STARTING(21) ENDING AT MAXVALUE )

含义:其中分区表的分区依据为age_id,第一个分区名字为p1,第二个分区名字为p2,最后类推。

删除

alter table <table_name> detach partition <partition_name> into table <table_name_2>;

drop table <table_name_2>;

含义:分区表是将一个表分成不同的分区,用来形成多个表的效果,而分区表的删除是将分区的一部分从表中分离出来成为一个表,再将表进行删除。

增加分区

alter table <table_name> add partition <partition_name> starting(2011) ending(2015);

向分区表中添加分区从2011到2015。

attach分区

合并分区

alter table <table_name_分区表> attach  partition <p1> starting from (2006)ending at(2015) from table <被合并的表>

含义:此指令,将一个独立的表合并到另一个分区表中,且作为分区表的一部分,执行后,原来的表会消失,且新合并的分区表,两个表的结构必要相同,且2006和2015是分区表中作为分区的依据的数据范围,所以新表合并时,才可以这样填写,原表已经对这数据附近的数据进行了分区。

detach分区

删除分区

alter table <table_name> detach partition <partition_name> into table <table_name_2>;

drop table <table_name_2>;

含义:分区表是将一个表分成不同的分区,用来形成多个表的效果,而分区表的删除是将分区的一部分从表中分离出来成为一个表,再将表进行删除。

组合分区

创建

create table table_hash_multi_part(

a int,

b int,

c int        )DISTRIBUTE BY HASH(a)

PARTITION BY RANGE(b)

(PART P1 STARTING 1 ENDING 5,

 PART P2 STARTING 6 ENDING 10)

ORGANIZE BY DIMENSIONS(c)  data capture changes;

含义:创建组合分区表,a为哈希映射,对a数据进行哈希函数处理,将结果映射到相应节点上,具有相同的哈希的值被分发到相同的节点上。

 

新增分区

alter table <table_name> add partition p3 STARTING(11) ENDING(15);        

 

删除分区

alter table <table_name> detach partition p2 into table <table_name>;

drop table <table_name>;

 

合并分区

ALTER TABLE <table_name> attach partition p2 STARTING from (6)ENDING at(15) FROM TABLE table_com_his(被合并的表);

 

添加列

ALTER TABLE <table_name> add column c1 varchar(10);

 

删除列

ALTER TABLE <table_name> drop column <column_name>;

reorg table <table_name>;

 

修改列的定义

alter table <table_name> alter column c2 set data type smallint;

 

truncate

truncate table <table_name> immediate;

 

rename表

rename table <table_name> to <table_name_new>;

 

rename列

alter table table_com rename column a to a1;

 

注释

comment on table table_com is  'db2表-组合分区表';

comment on column table_com.a is '列a';

索引

普通索引

创建

CREATE INDEX idx_name ON students (name);

含义:为"students"表格中的"name"字段添加一个普通索引,并命名为"idx_name"。这样可以在查询"students"表格时使用"name"字段作为查询条件,从而加速查询操作的速度。

删除

drop index idx_name;

唯一索引

创建

CREATE UNIQUE INDEX unique_name ON students(student_id);可多个 列同时关联

含义:唯一索引是一种特殊类型的索引,它确保表格中的某个字段只包含唯一值。因此,唯一索引可以用于确保数据的完整性,防止重复数据的插入或更新。其他类型的索引则不一定具有这种唯一性约束。

删除

drop index unique_name

主键索引

创建

<NAME> <DATATYPE> primary key;

含义:主键索引是通过在列定义中指定PRIMARY KEY关键字来创建的,且主键索引是和表创建时,一起创建的。

删除

alter table <table_name> drop primary key;

reorg table <table_name>;

升序索引

创建

create unique index <index_name> on <table_name>(<column_name> ASC);

含义:语法中index_name是索引名字,table_name是数据库表的名字,column_name是在其上创建索引的名称,ASC表示升序排序,可定义多个升序索引,名为联合升序索引

删除

drop index <index_name>;

降序索引

创建

create unqiue index <index_name> on <table_name>(<column_name> DESC);

含义:语法中index_name是索引名字,table_name是数据库表的名字,column_name是在其上创建索引的名称,DESC表示降序排序,可定义多个降序索引,名为联合降序索引

删除

drop index <index_name>;

纯索引

创建

create unique index <index_name> on <table_name>(column_name);

含义:语法中index_name是索引的名称,table_name是创建索引表格的名称,column_name是要在其上创建索引的列名称。

删除

drop index <index_name>;

双向索引

创建

create index <index_name> on <table_name>(<column_name> ASC,<column_name> DESC) ;

create index <index_name> on <table_name>(column_name)  allow reverse scans;

含义:index_name是要创建的索引的名称,table_name是要在其上创建索引的表格名称,column_name是要在其上创建索引的列名称。注意,语法中列名称需要分别指定为升序(ASC)和降序(DESC)

删除

drop index <index_name>;

非分区索引

创建

create index <index_name> on <table_name>(<column_name>) not partitioned;

含义:index_name是创建的索引名称,table_name是在其上创建索引的表格的名称,column_name是要在其上创建索引的列名的名称。

删除

drop index <index_name>;

分区索引

创建

create index <index_name> on <table_name> (<column_name>) partition by range(column_name) ( starting <value1> ending <value1>,starting <value1> ending <value1>);

create index <index_name> on <table_name> (<column_name>) partitioned;

含义:index_name是要创建的索引的名称,table_name是要在其上创建索引的表格名称,column_name是要在其上创建索引的列名称。PARTITION BY子句用于指定分区键,即用于将表格分成多个分区的列。RANGE子句用于指定分区范围,即将分区键的值范围分成多个不同的分区。

删除

drop index <index_name>;

指定参数索引

创建

含义:pctfree是用于定义索引中的空闲空间百分比的参数,指定索引页中保持为空闲空间的空间比例,以便后续操作中,提供空间,而无需频繁的进行页的分裂和重组,在新的索引插入时,数据库会检查索引空间利用率,不够的话,进行页的分裂和重组。

create index <index_name> on <table_name>(<column_name>) pctfree 10;

create unique index <index_name> on  <table_name> ( a1, a2 )  pctfree 49;

删除

 drop index <index_name>;

约束

主键约束

(命名/未命名)

创建

主键约束用来作为标识表中的行,使其不为空,具有唯一性。

命名主键约束:constraint <constaint_name> primary key (column_name)

含义:<constraint_name>为命名主键约束的名字,可定义column_name列为命名主键

未命名主键约束:<column_name> <column_type> not null primary key

含义:<column_name>为列名,<column_type>为列的数据类型,命名主键约束的维护性和可读性更好。

删除

alter table <table_name> drop primary key;

唯一约束

(命名/未命名)

创建

命名:constraint <un_constraint_name> unique(column_name);

含义:<un_constraint_name>为唯一约束的名字,<column_name>为要约束的列。

未命名:<column_name> <column_type> not null unique;

含义:<column_name> 为列名 <column_type>为列的格式。

删除

alter table <table_name> drop unqiue <constraint_name>;

非空约束

(命名/未命名)

创建

未命名:<column_name> <column_type> not null;

含义:column_name为列名,column_type为列的类型。

建表后:alter table <table_name> alter <column_name> set not null;

含义:<table_name>为表名 <column_name>为列名。

删除

alter table <table_name> alter <constraint_column_name> drop not null;

外键约束

(cascade)

创建

命名:constraint <constraint_name> foreign key(<column_name>) references <table_name>(column_name);

含义:<constraint_name> 为约束的名字, <column_name>为列的名字,<table_name>为表的名字。

未命名: foreign key(<column_name>) references <table_name>(<column_name>);

含义:column_name为列名,table_name为表名,column_name为表名。

删除

alter table <table_name> drop foreign key <constraint_name> ;

检查约束

创建

<column_name> <column_type> check (<column_name> > 18)

含义:<column_name>为列名字,后面是列的类型<column_type>,检查约束目的是控制输入的数据,要符合约束的范围,如:此例子是控制,年龄超过18岁。

删除

alter table <table_name> drop check <check_constraint_name>;

存储过程

普通存储过程

创建

create or replace procedure dds_proc_test()

 begin

insert into <table_name> values(100,'an',sysdate,11,'ann');

end

含义:执行call dds_proc_test(),dds_proc_test是存储过程的名字

删除

drop procedure <procedure_name>;

带wrapped

创建

对存储过程进行加密,传递一个包装过的存储过程定义作为参数

call dbms_ddl.create_wrapped(

'create or replace procedure dds_proc_test_insert_wrapped() //声明存储过程

begin

  insert into proc_tab_wrapped values(100,''an'',sysdate,11,''ann'')'

end

);

含义:存储过程的定义和执行同时进行了,隐藏了存储过程的实际逻辑或保护存储过程的定义不能被直接访问

删除

drop procedure <procedure_name>;

带loop循环

创建

 CREATE PROCEDURE LOOP_UNTIL_SPACE(OUT counter INTEGER)//输出

     LANGUAGE SQL//声明

     BEGIN

       DECLARE v_counter INTEGER DEFAULT 0;//声明变量

       DECLARE v_firstnme VARCHAR(12);//声明变量

       DECLARE v_midinit CHAR(1);//声明变量

       DECLARE v_lastname VARCHAR(15);//声明变量

       DECLARE c1 CURSOR FOR SELECT firstnme, midinit, lastname FROM employee;//声明游标

       DECLARE CONTINUE HANDLER FOR NOT FOUND//异常处理程序,游标找不到时,会输出-1

         SET counter = -1;

       OPEN c1;//打开游标c1

       fetch_loop://loop循环的声明

       LOOP

         FETCH c1 INTO v_firstnme, v_midinit, v_lastname; //将查询结果存储到c1中

         IF v_midinit = ' ' THEN

           LEAVE fetch_loop;

         END IF;//判断条件,如果判断为空,则跳出本次循环

         SET v_counter = v_counter + 1;//若v_midinit不为空,则每循环一次v_counter就加1。

       END LOOP fetch_loop;//结束循环

       SET counter = v_counter;//将v_counter赋值给counter

       CLOSE c1;//关闭游标c1

     END

解释:该存储过程的目标是在employee表中计算满足midinit字段不为空格字符的记录数,并将结果存储在输出参数counter中。

删除

drop procedure <procedure_name>;

带for循环

创建

 create or replace PROCEDURE dds_proc_test_for() //声明存储过程

             LANGUAGE SQL //函数中使用了sql语句,需要此语句指定声明sql语句的使用,像变量一样使用前声明   

       BEGIN ATOMIC         //存储过程的逻辑开始,ATOMIC表示将整个存储过程作为原子操作执行。                    

 DECLARE fullname CHAR(40); //声明fullname为一个char(40)类型的变量,存储员工全名                    

 FOR v AS cur1 CURSOR FOR SELECT firstnme, midinit, lastname FROM employee   

 //声明了一个名为cur1的游标,该游标从employee表中选择firstnme,midinit,lastname列的数据。        

DO                                                       

               //do和end for之间的部分为循环体v as cur1v为循环变量

              SET fullname = v.lastname || ',' || v.firstnme  ||' ' || v.midinit;

       //语句将员工的全名构建并存储到fullname变量中。                 

 INSERT INTO proc_tab_for VALUES (fullname);

//将每个员工的全名插入到名为proc_tab_for的表中。

END FOR;                      

END

含义:该存储过程是遍历表employee中的数据,构建每个员工的全名,并将全名插到名为proc_tab_for的表中,使用游标和循环结构,逐行处理employee表中的数据,并将结果插入到另一个表中

删除

drop procedure <procedure_name>;

带cursor

游标

创建

介绍:cursor游标,可以定义游标将每一行的查询结果存储在游标中,游标根据不同条件的查询结果获得结果集。游标的使用需要声明游标,然后打开游标,使用完成后,需要关闭游标。

CREATE TABLE test_1(a_int int);

CREATE TABLE test_2(b_int int);

CREATE procedure cursor_procedure()

BEGIN

DECLARE int_a int;//声明一个int类型变量

DECLARE cursor1 CURSOR FOR SELECT * FROM test_1;//声明一个游标,内容为查询结果

OPEN cursor1;//打开一个游标

FETCH cursor1 INTO int_a;//将游标的查询结果存储到变量a中

CLOSE cursor1;//关闭游标

INSERT INTO test_2 VALUES int_a;//将变量中存储的内容,插入到test_2中。

END

SELECT * FROM test_1;

SELECT * FROM test_2;

CALL cursor_procedure();

例2:

 create table proc_tab_cursor(name varchar(50)) data capture changes   

    create or replace PROCEDURE dds_proc_test_cursor()

LANGUAGE SQL

BEGIN ATOMIC//保持事务完整性,若一个地方出错,全部回滚。

DECLARE fullname CHAR(40);

 FOR v AS cur1 CURSOR FOR SELECT firstnme, midinit, lastname FROM employee

 DO

    SET fullname = v.lastname || ',' || v.firstnme

 ||' ' || v.midinit;

  INSERT INTO proc_tab_cursor VALUES (fullname);

END FOR;

END

含义:for循环是默认和游标配合,使得游标从表的第一列到最后一列循环,遍历表employee中的数据,构建每个员工的全名,并将全名插到名为proc_tab_for的表中,使用游标和循环结构,逐行处理employee表中的数据,并将结果插入到另一个表中。

删除

drop procedure <procedure_name>;

函数

不带参数

创建

create or replace function func_test()

returns varchar(30)           

begin                

return 'hello world';

end

含义:调用该函数时候,函数会返回字符串"hello world"但是在调用时,每行都会被调用。

删除

drop function <function_name>

调用

select <function_name> from <table_name>;

含义:函数会逐行的对表中的数据进行操作。

带参数

创建

create or replace function func_test_param_with_param (p_id  int, p_name  varchar(20) )

returns varchar(20)                         

begin                                 

declare lc_name varchar(20);                                 

select f2 into lc_name from <table_name> where f1=p_id;                                 

--p_name:=lc_name;         //注释行                        

return lc_name;                         

end

f1列中等于传入的参数p_id的值,那行的列f2会被查询出来,并存储到定义的变量lc_name中,并且返回此变量值,调用该函数时,每一列都会被调用。

删除

drop function <function_name>

调用

 SELECT <function_name>(103,'john') FROM <table_name>;

视图

视图

创建

介绍:视图是一个虚拟的表,基于一个或多个表的查询结果创建的,通过创建视图,可以将复杂的逻辑封装起来,以便在使用时可以像操作表一样方便的查询和使用数据。

视图: create view <view_name> as SELECT * from <table_name>;

含义:该命令,创建了一个视图,可通过视图去查询表中的数据,该视图选择了表中所有的列

只读视图:create view <view_name> as SELECT * from <table_name> readonly;

含义:该命令创建了一个只读视图,不能通过视图进行修改表中的数据,只能通过视图查看表中的数据。

删除

drop view <view_name>

视图用户授权

创建

 grant update on  <table_name>   to <user_name>  with grant option;  

 为表<table_name>授予用户<user_name>更新权限,且该用户有将此权限授权给其他用户的权力。

删除

drop view <view_name>

注释

表注释

comment on table <table_name> is '表注释'

列注释

comment on table <table_name>.<table_column> is '列注释'

数据导入命令

IMPORT

数据导入

db2 "import from Exp.del of del MODIFIED BY CODEPAGE=1386 TIMESTAMPFORMAT=\"yyyy-mm-dd hh:mm:ss tt\"  INSERT INTO LIWXSMALL.SMALL2";

import from Exp.del of del:导入以逗号分隔的文本形式的文件。

MODIFIED BY CODEPAGE=1386 是GBK编码格式。

TIMESTAMPFORMAT=\"yyyy-mm-dd hh:mm:ss tt\"  :指定时间戳的格式。

INSERT INTO LIWXSMALL.SMALL2":数据插入到库为LIWXSMALL表名为SMALL2中。

db2 "import from Exp.ixf of ixf INSERT INTO LIWXSMALL.SMALL2";

含义:不指定编码格式导入到库为LIWXSMALL表名为SMALL2中。

EXPORT

数据导出

db2 "export to Exp.del of del MODIFIED BY CODEPAGE=1386 TIMESTAMPFORMAT=\"yyyy-mm-dd hh:mm:ss tt\" SELECT * FROM <database_name>.<table_name>"

含义:本命令的作用是将查询的结果导出到名为Exp.del的以逗号分隔的文本文件中。

export to Exp.del of del 导出命令的语法,Exp.del 是导出的文件名,del表示以逗号分隔的文本格式。

MODIFIED BY CODEPAGE=1386这是一个选项,代码页1386表示使用阿拉伯字符编码,也是GBK。

TIMESTAMPFORMAT = \"yyyy-mm-dd hh:mm:ss tt\"指定时间戳的格式,为年-月-日 时:分:秒。

SELECT * FROM <database_name>.<table_name>从数据库表中查询数据。

db2 "export to Exp.ixf of ixf MODIFIED BY CODEPAGE=1386  SELECT * FROM LIWXSMALL.SMALL"

export to Exp.ixf of ixf :表示使用db2存储器格式。

db2 "export to test1.del of del MODIFIED BY CODEPAGE=1386  SELECT * FROM LIWXSMALL.TEST1"

LOAD

数据导入

load from data_file_of_type

of <type> <MODIFIED BY CODEPAGE=1386> 可选编码方式

<METHOD options> 指定load操作的方法选项

<MESSAGES msg_file> 指定消息文件的路径

INSERT | REPLACE | RESTART 指定数据的处理方式插入,替换,重新开始加载

INTO <table_name>.<column_name>加载数据的目标表及列列表

INGEST

高效加载数据,类似load

--指定字符集为gbk

db2 "INGEST FROM FILE  test1386.del  FORMAT DELIMITED input codepage 1386 INSERT INTO LIWXSMALL.TEST2"

INGEST FROM FILE test1386.del FORMAT DELIMITED 数据导入的命令语法,test1386.del是包含要导入数据的文件名,FORMAT DELIMITED 表示文件是以分隔符格式存储的。

FORMAT DELIMITED input codepage 1386:指定字符为GBK编码格式。

INSERT INTO LIWXSMALL.TEST2插入数据的目标表,LIWXSMALL.TEST2是目标表名。

--指定字符集为utf8

db2 "export to test1208.del of del MODIFIED BY CODEPAGE=1208  SELECT * FROM LIWXSMALL.TEST1";

db2 "INGEST FROM FILE  test1208.del  FORMAT DELIMITED input codepage 1208 INSERT INTO LIWXSMALL.TEST2"

--不指定字符集

db2 "export to test1.del of del  SELECT * FROM LIWXSMALL.TEST1"

db2 "INGEST FROM FILE  test1.del  FORMAT DELIMITED INSERT INTO LIWXSMALL.TEST2"

数据恢复命令

数据恢复命令需要临时关闭自动提交,不建议永久关闭,commit提交。

在终端执行:

1、db2 update command options using C off

2、插入数据

3、db2 rollback 数据恢复

多个DDL/DML 连续执行

ddl数据定义语言:定义数据表中对象和更改对象类型,表,索引,视图,函数,存储过程

dml数据操作语言:增删改查等

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值