oracle数据抽取语法

oracle数据抽取语法
oracle数据抽取语法

通过创建Oracle语句实现ETL工具

1.备份生产数据库,还原出一个数据库,并将这个数据库作为历史库使用,且删除备份库的表外键

2.在历史库上开辟专门的空间供ETL使用,同时创建ETL用户及分配权限

--在历史库上开辟专门的空间供ETL使用

CREATE TABLESPACE ETL

DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\XCDB\ETL.DBF' SIZE 50M AUTOEXTEND OFF

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

LOGGING

ONLINE

SEGMENT SPACE MANAGEMENT AUTO

--建立专门用户并分配权限

create user etl

identified by "oracle"

default tablespace ETL

profile DEFAULT;

grant unlimited tablespace to ETL;

--赋予权限

grant create session to etl;

grant create procedure to etl;

grant create sequence to etl;

grant create table to etl;

grant create synonym to etl;

grant create trigger to etl;

grant create type to etl;

grant create view to etl;

grant debug connect session to etl;

grant dba to etl;

3.创建ETL过程中需要使用的表并初始化数据

--切换用户

conn etl/oracle

--创建序列

create sequence INNERID

minvalue 1

maxvalue 999999

start with 1

increment by 1

cache 20

order;

--建立如下表

--ETL_Address 地址表,记录导数主机和同步机器的地址

create table ETL_Address

(

Address_ID number(6) not null, --ID自动生成

Address varchar2(15) not null, --ORACLE数据库服务命名地址ETLuser varchar2(50) null, --用户

ETLPWD varchar2(50) null, --数据库密码

Comm varchar2(255) null --描述

) tablespace ETL

--示例

insert into etl.ETL_Address(Address_Id,Address,ETLuser,ETLPWD,Comm) values(1,'XCDB','zzst','1234','');

insert into etl.ETL_Address(Address_Id,Address,ETLuser,ETLPWD,Comm) values(2,'XCDB','zzst2','1234','');

--ETL_Table 导数表,记录各库需要导的各表,及导数的条件

create table ETL_Table

(

Table_ID number(6) not null, --ID自动生成

SourceAdd_ID number(6) not null, --上表中的Address_ID

SourceSchema varchar2(25) not null, --源SCHEMA

SourceTable varchar(50) not null, --源表名

SourceQuery varchar(2000) null, --需要的查询,用于导出数据时的查询,允许使用:begdt,:hybegdt,:enddt三个时间参数

TargetAdd_ID smallint not null, --上表中的Address_ID

TargetSchema varchar(25) not null, --目标SCHEMA

TargetTable varchar(50) not null, --目标表名

TargetQuery varchar(2000) null, --目标操作,用于数据处理时的查询,允许使用:begdt, :hybegdt,:enddt三个时间参数

ETLFlag char(1) not null, --导表标志1执行0不执行

Comm varchar(255) null, --描述

OrderInt int --次序

) tablespace ETL

--示例:

insert into ETL_Table(Table_ID,SourceAdd_ID,SourceSchema,SourceTable,SourceQuery,TargetAdd_ID,TargetS chema,TargetTable,TargetQuery,ETLFlag)

values(INNERID.NEXTVAL,1,'SCOTT','dept',null,2,'SCOTT','dept',null,'1');

insert into ETL_Table(Table_ID,SourceAdd_ID,SourceSchema,SourceTable,SourceQuery,TargetAdd_ID,TargetS chema,TargetTable,TargetQuery,ETLFlag)

values(INNERID.NEXTVAL,1,'SCOTT','emp',

'where hiredate>=:begdt and hiredate<=:enddt'

,2,'SCOTT','emp',

'delete SCOTT.emp where where hiredate>=:begdt and hiredate<=:enddt'

,'1');

--说明:

--增量导数根据表中的时间字段来处理,在整个导数过程中允许传入开始,半年开始,结束三个时间参数,在配置中使用:begdt,:hybegdt,:enddt来表示

--在导数过程中会用传入的实时参数来代替这三个参数,具体请参考下面程序

--可以用如下方法来初始化ETL_Table中的数据

--将要导的表导入ETL_Table 导数表中

truncate table ETL_Table;

insert into ETL_Table(Table_ID,SourceAdd_ID,SourceSchema,SourceTable,SourceQuery,TargetAdd_ID,TargetS chema,TargetTable,TargetQuery,ETLFlag)

select INNERID.NEXTVAL,1,'ZZST',table_name,'',2,'ZZST2',table_name,'','1' from dba_tables where owner='ZZST'

--设置顺序

update ETL_Table set orderint=table_id+20

--配置要增量导入的表,即将表ETL_Table中的列SourceQuery和TargetQuery更新为想要导数的条件

--示例:

update ETL_Table set

SourceQuery='where hiredate>=:begdt and hiredate<=:enddt'

,TargetQuery='delete SCOTT.emp where hiredate>=:begdt and hiredate<=:enddt' where sourceschema='SCOTT' and SourceTable='EMP';

--ETL_LogDetail 执行日志表,记录上次执行的日志

--可以在此表中查询运行时不成功的步骤

create table ETL_LogDetail

(

EtlPlanStartDate date null, --执行计划开始时间

EtlPlanEndDate date null, --执行计划结束时间

ExecDatetime date null, --执行时间

ErrNO int null , --错误标志

ErrTX varchar(255) null --错误描述

) tablespace ETL

--ETL_LogResult 执行计划和结果表,记录执行计划和每次执行的结果

create table ETL_LogResult

(

EtlPlanStartDate date null, --执行计划开始时间

EtlPlanEndDate date null, --执行计划结束时间

EtlFlag char(1) null, --执行成功标志:1成功

StartTime date null, --执行开始时间

EndTime date null --执行结束时间

) tablespace ETL

--初始化表数据,这里假如需要根据需求一天进行两次数据同步,分别人7:30和15:30

--生成执行计划,未来一月,以后的计划会在程序中自动生成

declare

enddt date;

planenddt date;

adddate date;

begin

select to_date('2010-06-25','YYYY-MM-DD') into enddt from dual;

planenddt:=enddt+30;

adddate:=enddt;

--dbms_output.put_line(planenddt);

execute immediate 'truncate table ETL.ETL_LogResult';

while adddate

insert into ETL.ETL_LogResult(EtlPlanStartDate,EtlPlanEndDate)

select to_date(to_char(adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS'),

to_date(to_char(adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS')

from dual

where not exists(select 1 from ETL.ETL_LogResult

where EtlPlanStartDate=to_date(to_char(adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS')

and EtlPlanEndDate=to_date(to_char(adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS'));

insert into ETL.ETL_LogResult(EtlPlanStartDate,EtlPlanEndDate)

select to_date(to_char(adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS'),

to_date(to_char(adddate+1,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS')

from dual

where not exists(select 1 from ETL.ETL_LogResult

where EtlPlanStartDate=to_date(to_char(adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS')

and EtlPlanEndDate=to_date(to_char(adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS'));

adddate:=adddate+1;

end loop;

end;

4.创建OS命令调用程序

--创建oracle调用OS命令方法

--首先创建调用操作系统命令的Java方法

--这个是windows下的

--先切换到sys用户下

conn / as sysdba

create or replace and compile java source named oscmd as

import java.io.*;

import https://www.360docs.net/doc/c218251238.html,ng.*;

public class OSCmd extends Object {

public static int OSCmd(String args) {

Runtime rt = Runtime.getRuntime();

int rc = -1;

try {

Process p = rt.exec(args);

int bufSize = 4096;

BufferedInputStream bis = new BufferedInputStream(p.getInputStream(), bufSize);

int len;

byte buffer[] = new byte[bufSize];

while ((len = bis.read(buffer, 0, bufSize)) != -1)

System.out.write(buffer, 0, len);

rc = p.waitFor();

} catch (Exception e) {

e.printStackTrace();

rc = -1;

} finally {

return rc;

}

}

}

--这个是unix下的

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED oscmd AS

import java.io.*;

public class oscmd{

public static String OSCmd(String Command){

try{

Runtime.getRuntime().exec(Command);

return("0");

}

catch (Exception e){

System.out.println("Error running command: " + Command + "\n" + e.getMessage());

return(e.getMessage());

}

}

}

--然后,再创建一个PL/SQL函数调用Java方法

CREATE OR REPLACE FUNCTION Run_Cmd(p_Cmd IN VARCHAR2) RETURN NUMBER AS LANGUAGE JAVA NAME 'OSCmd.OSCmd(https://www.360docs.net/doc/c218251238.html,ng.String) return integer';

--测试,返回值为0即成功

declare

n number;

begin

n := SYS.Run_Cmd('ipconfig');

dbms_output.put_line(n);

end;

5.创建执行包

--创建整个过程的包

--包

create or replace package pg_etl is

procedure p_etl_exp(

begdt date,

hybegdt date,

enddt date,

path varchar2,--导数时临时存储路径

errno out int

);

procedure p_etl_imp(

begdt date,

hybegdt date,

enddt date,

path varchar2,--导数时临时存储路径

errno out int

);

procedure p_etl_main(

dt date,--etl日期

path varchar2--导数时临时存储路径

);

end pg_etl;

--包体

create or replace package body pg_etl is

procedure p_etl_exp(

begdt date,

hybegdt date,

enddt date,

path varchar2,--导数时临时存储路径

errno out int

)

is

--错误处理参数

v_ErrNO int;

v_ErrTX varchar2(255);

--游标中用到的变量

v_Address varchar2(15);

v_ETLuser varchar2(50);

v_ETLPWD varchar2(50);

v_SourceSchema varchar2(25);

v_SourceTable varchar2(50);

v_SourceQuery varchar2(2000);

--字符串处理

v_sql varchar2(6000);

--执行OS命令返回值

v_n number;

--定义游标

cursor etl_exp1

is

select

T1.Address,T1.ETLuser,T1.ETLPWD,T2.SourceSchema,T2.SourceTable,T2.SourceQuery from ETL.ETL_Address T1

inner join ETL.ETL_Table T2 on(T1.Address_ID=T2.SourceAdd_ID)

where T2.ETLFlag='1' and (SourceQuery = ''or SourceQuery is null);

cursor etl_exp2

is

select

T1.Address,T1.ETLuser,T1.ETLPWD,T2.SourceSchema,T2.SourceTable,T2.SourceQuery from ETL.ETL_Address T1

inner join ETL.ETL_Table T2 on(T1.Address_ID=T2.SourceAdd_ID)

where T2.ETLFlag='1' and (SourceQuery <> ''or SourceQuery is not null);

begin

v_ErrNO := 0;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_exp执行成功';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,0,'开始执行过程p_etl_exp' from dual;

v_sql :=' tables=( ';

--打开游标1

open etl_exp1;

--循环进行数据导出处理

begin

loop

--填充

fetch etl_exp1 into v_Address,v_ETLUser,v_ETLPWD,v_SourceSchema,v_SourceTable,v_SourceQuery;

--条件退出

exit when etl_exp1%notfound;

--拼凑EXP语句

select v_sql || v_SourceSchema || '.' || v_SourceTable || ',' into v_sql from dual;

end loop;

EXCEPTION

when others then

begin

v_ErrNO := -1;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_exp游标etl_exp1执行错误在表' || v_SourceTable || '时';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from dual;

close etl_exp2;

return;

end;

end;

--关闭游标

close etl_exp1;

select rtrim(v_sql,',') into v_sql from dual;

--继续拼凑完整EXP语句

select 'exp ' || v_ETLUser || '/' || v_ETLPWD || '@' || v_Address || ' file=' || path || '\TableFull.dmp' || v_sql || ') CONSTRAINTS=N' into v_sql from dual;

--执行操作

--dbms_output.put_line(v_sql);

insert into sys.strtest select v_sql from dual;

commit;

if v_SourceTable is not null then

v_n := SYS.Run_Cmd(v_sql);

commit;

end if;

if v_n<>0 then

v_ErrNO := -1;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_exp在整表导出数据时出错';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end if;

--打开游标2

open etl_exp2;

--循环进行导数处理

begin

loop

--填充

fetch etl_exp2 into v_Address,v_ETLUser,v_ETLPWD,v_SourceSchema,v_SourceTable,v_SourceQuery;

--条件退出

exit when etl_exp2%notfound;

--拼凑EXP语句

select 'exp ' || v_ETLUser || '/' || v_ETLPWD || '@' || v_Address || ' file=' || path || '\' || v_SourceTable || '.dmp' || ' tables=(' || v_SourceSchema || '.' || v_SourceTable || ') CONSTRAINTS=N query=\"' || v_SourceQuery || '\"' into v_sql from dual;

--替换时间参数

select replace(v_sql,':begdt','to_date('''||to_char(begdt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_sql from dual;

select replace(v_sql,':enddt','to_date('''||to_char(enddt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_sql from dual;

select replace(v_sql,':hybegdt','to_date('''||to_char(hybegdt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_sql from dual;

--执行操作

--dbms_output.put_line(v_sql);

insert into sys.strtest select v_sql from dual;

v_n := SYS.Run_Cmd(v_sql);

commit;

end loop;

EXCEPTION

when others then

begin

v_ErrNO := -1;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_exp游标etl_exp2在导出表' || v_SourceTable || '数据时出错';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from

dual;

close etl_exp2;

return;

end;

end;

--关闭游标

close etl_exp2;

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from dual;

end p_etl_exp;

procedure p_etl_imp(

begdt date,

hybegdt date,

enddt date,

path varchar2,--导数时临时存储路径

errno out int

)

is

--错误处理参数

v_ErrNO int;

v_ErrTX varchar2(255);

--游标中用到的变量

v_Address varchar2(15);

v_ETLuser varchar2(50);

v_ETLPWD varchar2(50);

v_SourceTable varchar2(50);

v_SourceQuery varchar2(2000);

v_targetSchema varchar2(25);

v_targetTable varchar2(50);

v_targetQuery varchar2(2000);

--字符串处理

v_sql varchar2(6000);

v_trun varchar2(2000);

--执行OS命令返回值

v_n number;

--定义游标

cursor etl_imp

is

select

T1.Address,T1.ETLuser,T1.ETLPWD,T2.SourceTable,T2.SourceQuery,T2.targetSchema,T2.TargetTabl

e,T2.TargetQuery

from ETL.ETL_Address T1

inner join ETL.ETL_Table T2 on(T1.Address_ID=T2.TargetAdd_ID)

where T2.ETLFlag='1';

begin

v_ErrNO := 0;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_imp执行成功';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,0,'开始执行过程p_etl_imp' from dual;

v_sql :='';

v_trun :='';

--打开游标1

open etl_imp;

--循环进行数据导出处理

begin

loop

--填充

fetch etl_imp into v_Address,v_ETLUser,v_ETLPWD,v_SourceTable,v_SourceQuery,v_targetSchema,v_TargetTable,v_ TargetQuery;

--条件退出

exit when etl_imp%notfound;

if v_TargetQuery is null or v_TargetQuery='' then

--拼凑IMP语句

select 'imp ' || v_ETLUser || '/' || v_ETLPWD || ' file=' || path || '\TableFull.dmp FROMUSER=' || v_targetSchema || ' touser=' || v_targetSchema || ' tables=(' || v_TargetTable || ') ignore=y' into v_sql from dual;

--拼凑清除数据语句

select ' truncate table ' || v_targetSchema || '.' || v_TargetTable into v_trun from dual;

--执行清除数据操作

--dbms_output.put_line(v_trun);

insert into sys.strtest select v_trun from dual;

execute immediate v_trun;

commit;

--执行导入操作

--dbms_output.put_line(v_sql);

insert into sys.strtest select v_sql from dual;

v_n := SYS.Run_Cmd(v_sql);

commit;

else

--拼凑IMP语句

select 'imp ' || v_ETLUser || '/' || v_ETLPWD || ' file=' || path || '\' || v_SourceTable || '.dmp FROMUSER=' || v_targetSchema || ' touser=' || v_targetSchema || ' tables=(' || v_TargetTable || ') ignore=y' into v_sql from dual;

--拼凑清除数据语句

select replace(v_targetQuery,':begdt','to_date('''||to_char(begdt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_trun from dual;

select replace(v_trun,':enddt','to_date('''||to_char(enddt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_trun from dual;

select replace(v_trun,':hybegdt','to_date('''||to_char(hybegdt,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')') into v_trun from dual;

--执行清除数据操作

--dbms_output.put_line(v_trun);

insert into sys.strtest select v_trun from dual;

execute immediate v_trun;

commit;

--执行导入操作

--dbms_output.put_line(v_sql);

insert into sys.strtest select v_sql from dual;

v_n := SYS.Run_Cmd(v_sql);

commit;

end if;

end loop;

EXCEPTION

when others then

begin

v_ErrNO := -1;

errno:=v_ErrNO;

v_ErrTX := '过程p_etl_imp游标etl_imp在导入表' || v_SourceTable || '数据时出错';

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from dual;

close etl_imp;

return;

end;

end;

--关闭游标

close etl_imp;

insert into ETL.ETL_LogDetail select begdt,enddt,sysdate,v_ErrNO,v_ErrTX from dual;

end p_etl_imp;

procedure p_etl_main(

dt date,--etl日期

path varchar2--导数时临时存储路径

)

is

acctdt date;

-- 增量导数据用到的时间参数

v_begdt date;

v_hybegdt date;

v_enddt date;

--错误处理参数

v_ErrNO int;

v_ErrTX varchar(255);

--记录开始时间

v_StartTime date;

--错误处理

v_error exception;

--生成计划变量

v_planenddt date;

v_adddate date;

--

v_err int;

begin

acctdt:=dt;

v_ErrNO :=0;

v_ErrTX :='过程pg_etl.p_etl_main执行成功';

--truncate table ETL_LogDetail;

--记录开始时间

select sysdate into v_StartTime from dual;

--时间判断

if acctdt>v_StartTime then

v_ErrNO := -1;

v_ErrTX := '还不到执行这个时间段的计划的时间';

insert into ETL.ETL_LogDetail select acctdt,acctdt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end if;

--dbms_output.put_line(to_char(acctdt,'YYYY-MM-DD HH24:MI:SS'));

--如果没有传入时间参数,则取系统的当前时间

if(acctdt is null or acctdt='') then

acctdt:=v_StartTime;

end if;

--dbms_output.put_line(to_char(acctdt,'YYYY-MM-DD HH24:MI:SS'));

--取得计划中需要处理的日期,设置增量导数的开始时间和结束时间,一次完成所有未完成的任务

begin

select min(EtlPlanStartDate) into v_begdt

from ETL.ETL_LogResult

where EtlPlanEndDate<=acctdt and (EtlFlag<>'1' or EtlFlag is null);

EXCEPTION

when others then

begin

v_ErrNO := -1;

v_ErrTX := '获取执行计划任务开始时间EtlPlanStartDate时出错';

insert into ETL.ETL_LogDetail select acctdt,acctdt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end;

end;

--dbms_output.put_line(to_char(v_begdt,'YYYY-MM-DD HH24:MI:SS'));

begin

select max(EtlPlanEndDate) into v_enddt

from ETL.ETL_LogResult

where EtlPlanEndDate<=acctdt and (EtlFlag<>'1' or EtlFlag is null);

EXCEPTION

when others then

begin

v_ErrNO := -1;

v_ErrTX := '获取执行计划任务结束时间EtlPlanEndDate时出错';

insert into ETL.ETL_LogDetail select acctdt,acctdt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end;

end;

--dbms_output.put_line(to_char(v_enddt,'YYYY-MM-DD HH24:MI:SS'));

--时间判断

if(v_begdt is null or v_begdt='') then

v_ErrNO := -1;

v_ErrTX := '在这个时间没有需要执行的任务';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end if;

v_hybegdt:=v_begdt-180;

--时间判断

if v_hybegdt<=v_StartTime-360 then

v_ErrNO := -1;

v_ErrTX := '不能对一年前的数据进行操作';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end if;

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,0,'开始执行过程pg_etl.p_etl_main' from dual;

--开始数据导出

begin

pg_etl.p_etl_exp(v_begdt,v_hybegdt,v_enddt,path,v_err);

exception

when others then

begin

v_ErrNO := -1;

v_ErrTX := '执行过程pg_etl.p_etl_exp失败';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end;

end;

if v_err<>0 then

v_ErrNO := -1;

v_ErrTX := '执行过程pg_etl.p_etl_imp失败';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX

return;

end if;

--开始数据导入

begin

pg_etl.p_etl_imp(v_begdt,v_hybegdt,v_enddt,path,v_err);

exception

when others then

begin

v_ErrNO := -1;

v_ErrTX := '执行过程pg_etl.p_etl_imp失败';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end;

end;

if v_err<>0 then

v_ErrNO := -1;

v_ErrTX := '执行过程pg_etl.p_etl_imp失败';

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

return;

end if;

--记录结果,让v_begdt和v_enddt之间的所有计划记录为成功

update ETL.ETL_LogResult

set EtlFlag='1',StartTime=v_StartTime,EndTime=sysdate

where EtlPlanStartDate>=v_begdt and EtlPlanEndDate<=v_enddt;

--生成执行计划,未来一月

v_planenddt:=v_enddt+30;

v_adddate:=v_enddt;

--dbms_output.put_line(v_planenddt);

--execute immediate 'truncate table ETL_LogResult';

while v_adddate

insert into ETL.ETL_LogResult(EtlPlanStartDate,EtlPlanEndDate)

select to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS'),

to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS')

from dual

where not exists(select 1 from ETL.ETL_LogResult

where EtlPlanStartDate=to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS')

and EtlPlanEndDate=to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS'));

insert into ETL.ETL_LogResult(EtlPlanStartDate,EtlPlanEndDate)

select to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS'),

to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS')

from dual

where not exists(select 1 from ETL.ETL_LogResult

where EtlPlanStartDate=to_date(to_char(v_adddate,'YYYY-MM-DD') || ' 15:30:00','YYYY-MM-DD HH24:MI:SS')

and EtlPlanEndDate=to_date(to_char(v_adddate+1,'YYYY-MM-DD') || ' 07:30:00','YYYY-MM-DD HH24:MI:SS'));

v_adddate:=v_adddate+1;

end loop;

insert into ETL.ETL_LogDetail select v_begdt,v_enddt,sysdate,v_ErrNO,v_ErrTX from dual;

commit;

end p_etl_main;

end pg_etl;

--测试包

begin

pg_etl.p_etl_main(null,'D:\test');

end;

6.创建作业

--创建作业来调用主过程pg_etl.p_etl_main

--假如作业从2010-07-12 15:40:00开始执行,以后每天执行一次,如下

declare

jobno number;

dt date;

begin

select to_date('2010-07-12 15:40:00','YYYY-MM-DD HH24:MI:SS') into dt from dual;

dbms_job.submit(jobno,

'

begin

pg_etl.p_etl_main(null,''D:\test'');

end;

',

dt,

'sysdate+1');

commit;

dbms_output.put_line(jobno);

end;

--用如下方法查看已存在的JOB

select * from dba_jobs

select * from user_jobs

select * from dba_jobs_running

--删除JOB

begin

dbms_job.remove(72);

end;

-----------------------------------

--测试JOB,五分钟一次

declare

jobno number;

dt date;

begin

select to_date('2010-07-12 13:50:00','YYYY-MM-DD HH24:MI:SS') into dt from dual; dbms_job.submit(jobno,

'

begin

pg_etl.p_etl_main(null,''D:\test'');

end;

',

dt,

'sysdate+5/(24*60)');

commit;

dbms_output.put_line(jobno);

end;

《英语语法大全(完全版)

v1.0可编辑可修改语法 1. 5种类型的谓语 1326 在一个完整的句子中,主语之外的部分称为谓语,- 谓语。 第一类包含一个不及物动词(IV): He came My wife cried 第二类包含一个及物动词及其宾语(TV+ O : Joh n likes me . His un cle wrote letters 第三类包含一个双宾动词、一个间接宾语和一个直接宾语(They teach me En glish . I bought Mary sugar . 第四类包含一个系动词及主语补语(LV+ C): He is a teacher . She looks sad . 第五类包含一个宾补动词、宾语及宾语补语(FV+ C+ C): 5种类型的DV+IO+DC :

v1.0可编辑可修改We made him king . She left the house dirty 1.基本成分 1302 根据其结构,句子可以分为5类: a.主语+ 不及物动词 Joh n came. (S)(IV) b.主语+ 及物动词+宾语 Joh n likes oranges . (S) (TV) (O) c.主语+ 双宾动词+ 间接兵语+直接宾语 Joh n gave Mary books . (S)(DV (10)(DO

d.主语+ 系动词+ 主语补语 Joh n is happy . (S)(LV)(SC e.主语+ 宾补动词+ 宾语+ 宾语补语 Joh n makes Mary angry . (S)(FV) ( O)(OC 主语、不及物动词、及物动词、双宾动词、系动词、宾补动词、宾语及补语可以称为基本句子成分。在上面的句子中,如把任何一个成分删除,都会成为病句。从上面例句也可看出,完整的句子一般至少包含2个基本成分,至多4个基本成分。 2 ?附属成分 1303 基本成分可以加修饰语:1)定语(即用来修饰名词的单词、短语或 从句)或2)状语(即用来修饰名词或代词以外的词的单词、短语或从句)。下面例句中,修饰语为斜体字,被修饰的词为黑体字: 1)Poor John tottered toward a hospital nearby . John likes oranges imported from the U . S..

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

完整版初中英语语法大全知识点总结

英语语法大全 初中英语语法 学习提纲 一、词类、句子成分和构词法: 1、词类:英语词类分十种: 名词、形容词、代词、数词、冠词、动词、副词、介词、连词、感叹词。 1、名词(n.):表示人、事物、地点或抽象概念的名称。如:boy, morning, bag, ball, class, orange. :who, she, you, it . 主要用来代替名词。如): 2、代词(pron.3、形容词(adj..):表示人或事物的性质或特征。如:good, right, white, orange . 4、数词(num.):表示数目或事物的顺序。如:one, two, three, first, second, third, fourth. 5、动词(v.):表示动作或状态。如:am, is,are,have,see . 6、副词(adv.):修饰动词、形容词或其他副词,说明时间、地点、程度等。如:now, very, here, often, quietly, slowly. 7、冠词(art..):用在名词前,帮助说明名词。如:a, an, the. 8、介词(prep.):表示它后面的名词或代词与其他句子成分的关系。如in, on, from, above, behind. 9、连词(conj.):用来连接词、短语或句子。如and, but, before . 10、感叹词(interj..)表示喜、怒、哀、乐等感情。如:oh, well, hi, hello. 2、句子成分:英语句子成分分为七种:主语、谓语、宾语、定语、状语、表语、宾语补足语。 1、主语是句子所要说的人或事物,回答是“谁”或者“什么”。通常用名词或代词担任。如:I'm Miss Green.(我是格林小姐) 2、谓语动词说明主语的动作或状态,回答“做(什么)”。主要由动词担任。如:Jack cleans the room every day. (杰克每天打扫房间) 3、表语在系动词之后,说明主语的身份或特征,回答是“什么”或者“怎么样”。通常由名词、 代词或形容词担任。如:My name is Ping ping .(我的名字叫萍萍) 4、宾语表示及物动词的对象或结果,回答做的是“什么”。通常由名词或代词担任。如:He can spell the word.(他能拼这个词) 有些及物动词带有两个宾语,一个指物,一个指人。指物的叫直接宾语,指人的叫间接宾语。间接 宾语一般放在直接宾语的前面。如:He wrote me a letter . (他给我写了 一封信) 有时可把介词to或for加在间接宾语前构成短语,放在直接宾语后面,来强调间接宾语。如:He wrote a letter to me . (他给我写了一封信)

大学英语语法大全_太经典了

大学英语语法 学习提纲 一、词类、句子成分和构词法: 1、词类:英语词类分十种: 名词、形容词、代词、数词、冠词、动词、副词、介词、连词、感叹词。 1、名词(n.):表示人、事物、地点或抽象概念的名称。如:boy, morning, bag, ball, class, orange. 2、代词(pron.):主要用来代替名词。如:who, she, you, it . 3、形容词(adj..):表示人或事物的性质或特征。如:good, right, white, orange . 4、数词(num.):表示数目或事物的顺序。如:one, two, three, first, second, third, fourth. 5、动词(v.):表示动作或状态。如:am, is,are,have,see . 6、副词(adv.):修饰动词、形容词或其他副词,说明时间、地点、程度等。如:now, very, here, often, quietly, slowly. 7、冠词(art..):用在名词前,帮助说明名词。如:a, an, the. 8、介词(prep.):表示它后面的名词或代词与其他句子成分的关系。如in, on, from, above, behind. 9、连词(conj.):用来连接词、短语或句子。如and, but, before . 10、感叹词(interj..)表示喜、怒、哀、乐等感情。如:oh, well, hi, hello. 2、句子成分:英语句子成分分为七种:主语、谓语、宾语、定语、状语、表语、宾语补足语。 1、主语是句子所要说的人或事物,回答是“谁”或者“什么”。通常用名词或代词担任。如: I’m Miss Green.(我是格林小姐) 2、谓语动词说明主语的动作或状态,回答“做(什么)”。主要由动词担任。如:Jack cleans the room every day. (杰克每天打扫房间) 3、表语在系动词之后,说明主语的身份或特征,回答是“什么”或者“怎么样”。通常由名词、 代词或形容词担任。如:My name is Ping ping .(我的名字叫萍萍) 4、宾语表示及物动词的对象或结果,回答做的是“什么”。通常由名词或代词担任。如: He can spell the word.(他能拼这个词) 有些及物动词带有两个宾语,一个指物,一个指人。指物的叫直接宾语,指人的叫间 接宾语。间接宾语一般放在直接宾语的前面。如:He wrote me a letter . (他给 我写了一封信) 有时可把介词to或for加在间接宾语前构成短语,放在直接宾语后面,来强调间接宾 语。如:He wrote a letter to me . (他给我写了一封信) 5、定语修饰名词或代词,通常由形容词、代词、数词等担任。如: Shanghai is a big city .(上海是个大城市)

Oracle基本语法

Oracle的历史 ?Oracle 公司( 甲骨文) 创始人: Larry Ellison 32岁,公司提供数据库服务. ?公司成立于1977 年, 83 年公司更名为Oracle ,原名为”软件开发实验室”. ?Oracle 数据库适用于大型企业 ?竞争对手 –微软的SQLServer –IBM 的DB2 ?目前的版本 – 2.0~7.0 , 8.0 , 8i , 9i , 10g Oracle的服务: 我的电脑右键选择管理--服务和应用程序—服务 -----是数据库或例程的系统标识符 ------是Oracle主目录名称 这几个服务之间的关系: 启动顺序:1、OracleTNSListener必须启动 2、OracleServer必须启动 3、OracleDBConsole启动依赖于OracleServer SqlPlus SqlPlus是Oracle任何版本都自带的数据库操作工具,使用它可以完成大部分的数据库操作。 SqlPlus可以“开始→程序→Oracle”启动,也可以命令行启动(互动) 1.命令行启动sqlPlus sqlplus 用户名/密码@orcl

或 sqlplus 用户名@orcl 如果用户是管理员要在sqlplus 用户名/密码@主机字符串as sysdba “/”是用户名和密码分隔符号 “@”是密码和数据库的分隔符号 “orcl”是数据库的名称,在安装时指定 常用命令(互动) connect 切换用户 show user 显示当前用户 set linesize 1000 设置行显示长度 set pagesize 1000 设置分页长度 desc dept 查看表结构 select table_name from user_tables 查询当前用户的表 / 运行上一条SQL语句 clear screen 清除屏幕 edit 编辑 spool d:/a 保存输出结果到某个位置 spool off 保存结束 quit 退出 list 查看最后一条语句 @ 文件名.sql 运行外部文件中的SQL语句

六年级英语语法知识点汇总

六年级语法总复习 一、词汇 (一)一般过去时态 一般过去时态表示在过去的某个时间发生的动作或存在的状态,常和表示过去的时间状语连用。例如yesterday, last weekend ,last Saturday ,等连用。基本句型:主语+动词的过去式+其他。例句——What did you do last weekend?你上周做什么了? ——I played football last weekend.我踢足球了。 ★规则动词过去式的构成 ⒈一般在动词原形末尾加-ed。例如:play—played ⒉词尾是e的动词直接加-d。例如:dance—danced ⒊末尾只有一个辅音字母的重读闭音节词,先双写这个辅音字母,再加-ed。例如stop(停止)--stopped ⒋结尾是“辅音字母+y”的动词,变“y”为“i”,再加-ed,例如:study--studied ★一些不规则变化的动词过去式 am/is—was are—were go—went swim—swam fly—flew do—did have—had say—said see—saw take—took come—came become—became get—got draw—drew hurt—hurt read—read tell—told will—would eat—ate take—took make—made drink—drank sleep(睡觉)—slept cut(切)--cut sit(坐)—sat begin(开始)—began think—thought find—found run(跑)---ran buy—bought win—won give(给)—gave sing—sang leave—left hear(听)--heart wear—wore (二)一般现在时态 一般现在时态表示包括现在时间在内的一段时间内经常发生的动作或存在的状态,表示习惯性或客观存在的事实和真理。常与often ,always ,usually ,sometimes ,every day等连用。基本句型分为两种情况: ●主语(非第三人称)+动词原形+其他。例句:——What do you usually do on the weekend?——I usually do my homework on the weekend. ●主语(第三人称)+动词的第三人称单数形式+其他。例句: ——What does Sarah usually do on the weekend?萨拉通常在周末干什么? ——She usually does her homework on the weekend.她通常在周末做她的家庭作业。 ★动词第三人称单数形式的变化规则 ⒈一般直接在动词词尾加-s.例如:play—plays ⒉以s ,x ,ch,sh结尾的动词加-es。例如:watch—watches ⒊以辅音字母加y结尾的动词,变y为i,再加es,例如:fly—flies ⒋个别不规则变化动词,需单独记忆,例如:do—does go—goes (三)现在进行时态 现在进行时态表示说话人现在正在进行的动作。基本句型:主语+be+动词的-ing+其他。 例如:——What are you doing ?你在干什么? ——I am doing my homework..我正在做作业。 ★动词现在分词的变化规则 ⒈一般直接在词尾加ing ,例如;wash—washing ⒉以不发音e字母结尾的动词,去掉e ,再加ing.例如:make—making ⒊末尾只有一个辅音字母的重读闭音节词,要双写最后一个辅音字母再加ing.例如swim—swimming (四)一般将来时态 一般将来时态表示将来某一时间或某一段时间内发生的动作或存在的状态。常与表示将来的时间如tomorrow ,next weeken ,this afternoon 等连用。我们通常用will,be going to+动词原形来表示一般将来时态。

英语语法大全(完整版)

【学英语必看】 《英语语法手册》 在实用英语备受青睐的现在,大家在学习英语和准备各种考试时,总是把 听说读写放在首位,诚然,学习语言重在实践。但是,请不要忽视语法的作用,特别是在阅读和写作中,他能帮助你分析清楚句子结构,准确抓住句子的要点,更能帮你写出复杂而优美的长句。 以下为你整理《英语语法手册》全集,不需背诵记忆,只要静下心阅读一遍,就能有所收获! 宝宝更希望你能把他们融在平时的阅读写作里. [英语语法手册]关于词类和句子成分 根据词的形式、意义及其在句中的功用将词分为若干类,叫做词类。一个 句子由各个功用不同的部分所构成,这些部分叫做句子成分。 学一个词,要学它的发音、拼法、意义,也要记它的词类;更重要的是要 了解它和其他词的关系,及其在句中作什么句子成分。如China is in East Asia(中国位于东亚)一句中的China这个单词所属的词类是名词,在句子中作主语。 词类(parts of speech) 英语的词通常分为十大类: 1)名词(noun,缩写为n.)是人和事物的名称,如pen(钢笔),English(英语),life(生活)。 2)代词(pronoun,缩写为pron.)是用来代替名词的词,如we(我们),his(他的),all(全部)。 3)形容词(adjective,缩写为adj.)用来修饰名词,如great(伟大的),honest(诚实的),difficult(困难的)。 4)数词(numeral,缩写为num.)是表示"多少"和"第几"的词,如four(四),eighteen(十八),first(第一),eighth(十八),hundred(一百)。

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

初三英语语法知识点归纳

初中英语语法速记口诀大全 很多同学认为语法枯燥难学,其实只要用心并采用适当的学习方法,我们就可以愉快地学会英语,掌握语法规则。笔者根据有关书目和多年教学经验,搜集、组编了以下语法口诀,希望对即将参加中考的同学们有所帮助。 一、冠词基本用法 【速记口诀】 名词是秃子,常要戴帽子, 可数名词单,须用a或an, 辅音前用a,an在元音前, 若为特指时,则须用定冠, 复数不可数,泛指the不见, 碰到代词时,冠词均不现。 【妙语诠释】冠词是中考必考的语法知识之一,也是中考考查的主要对象。以上口诀包括的意思有:①名词在一般情况下不单用,常常要和冠词连用;②表示不确指的可数名词单数前要用不定冠词a或an,确指时要用定冠词the;③如复数名词表示泛指,名词前有this,these,my,some等时就不用冠词。 二、名词单数变复数规则 【速记口诀】 单数变复数,规则要记住, 一般加s,特殊有几处: 末尾字母o,大多加s, 两人有两菜,es不离口, 词尾f、fe,s前有v和e; 没有规则词,必须单独记。 【妙语诠释】①大部分单数可数名词变为复数要加s,但如果单词以/t?蘩/、/?蘩/、/s/发音结尾(也就是单词如果以ch,sh,s,x等结尾),则一般加es;②以o结尾的单词除了两人(negro,hero)两菜(tomato,potato) 加es外,其余一般加s;③以f或fe结尾的单词一般是把f,fe变为ve再加s;④英语中还有些单词没有规则,需要特殊记忆,如child—children,mouse—mice,deer—deer,sheep—sheep,Chinese—Chinese,ox—oxen,man—men,woman—women,foot—feet,tooth —teeth。 三、名词所有格用法 【速记口诀】 名词所有格,表物是“谁的”, 若为生命词,加“’s”即可行, 词尾有s,仅把逗号择; 并列名词后,各自和共有, 前者分别加,后者最后加; 若为无生命词,of所有格, 前后须倒置,此是硬规则。 【妙语诠释】①有生命的名词所有格一般加s,但如果名词以s结尾,则只加“’”;②并列名词所有格表示各自所有时,分别加“’s”,如果是共有,则只在最后名词加“’s”;③

初中英语语法大全归纳总结

初中英语语法大全 1、名词 (一)概述 名词是表示人、地方、事物或抽象概念名称的词,可以说名词是万物之名称。它们可以是: 人的名字 Li Ming, Tom 地方名称 China, London 职业称呼 teacher, doctor 物品名称 pencil, dictionary 行为名称 study, invention 抽象概念history, grammar (二)普通名词和专有名词 1.普通名词 凡不属于特定的人名、地名、事物名称或概念名称的名词,都属于普通名词。这类名词在所有的名词中占绝大多数。普通名词大致有以下四种类型: 1)个体名词 个体名词指作为个体而存在的人或物。可以指具体的人或物,例如: He has two aunts. 他有两个姑姑。 Most classrooms have computers. 多数教室里都有电脑。 也可指抽象东西,例如: We’ve lived here for twenty years. 我们在这里住了二十年了。 I had a dream last night 我昨晚做了一个梦。 个体名词有复数形式,如:weeks, problems;单数形式可以和a/an连用,如:a week, a problem, an old man. 2)集体名词 集体名词表示由个体组成的集体,下面是一些常见的集体名词:

government(政府) group(小组,团体) public(公众) team(队;组) police(警方) 集体名词有时作单数看待,有时作复数看待。一般说来,视为整体时作单数看待,想到它的成员时作复数看待 有的集体名词通常用作单数,例如: Our company is sending him to work in Berlin. 我们公司将派他去柏林工作。 有的集体名词多作复数看待。例如: The police are looking for him. 警察正在找他。 3)物质名词 物质名词指无法分为个体的东西,我们学过的常见的物质名词有: beer, cloth, coal, coffee, coke, cotton, ice, ink, jam, juice, meat, medicine, metal, milk, oil paper, rain, salad, salt, sand, snow, soup, steel, sugar, tea, water, wine, wood, wool等。 一般说来,物质名词是不可数折,因而没有复数形式。但有一些特殊情况:

Oracle_基本建表语句

--创建用户 create user han identified by han default tablespace users Temporary TABLESPACE Temp; grant connect,resource,dba to han; //授予用户han开发人员的权利 --创建表 create table classes( id number(9) not null primary key, classname varchar2(40) not null) --查询表select * from classes; --删除表drop table students; --修改表的名称rename alist_table_copy to alist_table; --显示表结构 describe test --不对没查到 --增加列alter table test add address varchar2(40); --删除列alter table test drop column address; --修改列的名称alter table test modify address addresses varchar(40; --修改列的属性alter table test modi create table test1( id number(9) primary key not null, name varchar2(34) ) rename test2 to test; --创建自增的序列 create sequence class_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE; select class_seq.currval from dual --插入数据insert into classes values(class_seq.nextval,'软件一班') commit; --更新数据update stu_account set username='aaa' where count_id=2; commit; --创建唯一索引create unique index username on stu_account(username); --唯一索引不能插入相同的数据

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

英语语法大全(超全)

多音节词在前面加 most ,女口 "the most difficult 英语的基本 语序为SVO ,且基本上不能任意变换语序,除了在少数诗词以外; 另一方面, 有时英语会使用 OSV 的语序。(注: S : Subject [主语]; V : phrase [谓语];O : Object [宾语]) 英语中所有的词可分成十大类,每一类词在句子中都有其特定的位置和作用。这 十大词类是: 一、名 词: 表示人或事物的名称的词。 二、形容词: 表示人或事物的特征的词。 三、副 词: 修饰动词、形容词和 副词的词。 四、代 词: 是代替名词、形容词和 数词的词。 五、数 词: 表示数量和顺序的词。 六、动 词: 表示动作和状态的词。 七、冠 词: 与名词连用,其说明人或事物的作用。 八、介 词: 通常置于名词和代词之前,表示名词和代词与其他词的关系。 九、连 词: 连接词 与词、短语与短语、句子与句子的词。 十、感叹词: 表示说话人感情或语气的词。 英语的时态 英语共有十六个时态、 四个体。(注:四个体为 行。) 英语中的四个体相当于法语、西班牙语以及所有印欧语系 直陈 式,命令式等。 (1) 一般现在时 英语语法大全下载 1、所有格:He is Fred's best friend. (-'s ) 2、 动词现在时的第三人称单数 :Alfredo works. (-s ) 3、 动词过去式:Fred worked . (-ed ),但亦有不规则变化。 4、 现在分词/进行时态:Fred is 节为辅音结尾的闭音节,则须双写末辅音, 5、 过去分词:The car was stolen working . ( -ing )([注]如果动词的末音 女口 running ) .(-en ); Fred has talked to the police. (-ed ),但亦有不规则变化。 6、 动名词:Working 7、 名词的复数:Fred has is good for two blue eyes . the soul. (-ing ) (-s )([注]如果动词的尾字是 s, sh,x,ch ,则需加-es ,女口 dishes 8、 形容词的比较级:Fred 音节在前面"加more ,如"more 9、 形容词的最高级:Fred is smarter than difficult "。 has the fastest Rick. (-er )形容词末尾加 car. ( -est )形容词末尾加 -er ,多 -est , II 。 Verbal 般、进行、完成、完成进 罗曼语族中的式,如:

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

Oracle-SQL简单查询语句处理

Oracle-SQL简单查询语句处理笔记一 数据处理及进展–数据:是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据处理:是指对各种形式的数据进行收集、储存、加工和传播的一系列活动的综合。 其目的是从大量的、原始的数据中抽取、推导出对人们有价值的信息。 数据处理的3个阶段: ?人工管理阶段 ?文件系统阶段 ?数据库系统阶段 关系型数据库 ?数据模型–是数据库系统中,用于抽象、表示、处理现实世界中数据的一种形式架构。 ?数据模型三层次 概念模型:是现实世界到信息世界的第一层抽象,常用E-R 图表示。逻辑模型:是用户从数据库所看到的模型,是具体的DBMS 所支持的数据模型,常用的包括层次模型、网状模型、关系模型。

物理模型:是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且 V1.0 还与操作系统和硬件有关 关系型数据库 ?关系模型 关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成的。 关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。 在用户看来,关系就是一张由行和列组成的二维数据表。 关系操作:包括:选择、投影、连接、增加、删除、修改等。 关系完整性约束:包括实体完整性、参照完整性和用户定义的完整性。 算术运算符? 算术运算符优先级 乘除优先于加减 相同优先权的表达式按照从左至右的顺序依次计算 括弧可以提高优先权,并使表达式的描述更为清晰 空值NULL

?空值NULL –空值是指一种无效的、未赋值、未知的或不可用的值。 空值不同于零或者空格。 列别名 好处:方便查看 用来重新命名列的显示标题,如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。 ?使用列别名的方法 方式1:列名列别名 方式2:列名 AS 列别名 ?以下三种情况列别名两侧需要添加双引号 列别名中包含有空格 列别名中要求区分大小写 列别名中包含有特殊字符 连接操作符使用 || 去连接,相当于java中的 + 号呢。 消除重复行使用DISTINCT 关键字 习题整理一:简单的查询语句(查询oracle已经创建的表格,使用用户scott普通用户登陆) 说明:

小学英语语法知识点汇总

小学英语语法知识点汇总 一、名词复数规则 1. 一般情况下,直接加-s,如:book-books, bag-bags, cat-cats, bed-beds 2. 以s. x. sh. ch结尾,加-es,如:bus-buses, box-boxes, brush-brushes, watch-watches 3. 以“辅音字母+y”结尾,变y为i, 再加-es,如:family-families, strawberry-strawberries 4. 以“f或fe”结尾,变f或fe为v, 再加-es,如:knife-knives 5. 不规则名词复数,如: man-men, woman-women, policeman-policemen, policewoman-policewomen, mouse-mice child-children foot-feet,.tooth-teeth fish-fish, people-people, Chinese-Chinese, Japanese-Japanese 二、一般现在时 1.一般现在时表示经常或习惯性的动作,也可表示现在的状态或主语具备的性格和能力。 2.一般现在时中,没有be动词和情态动词,主语为第三人称单数的肯定句,动词要按规则加上s,主语是非第三人称单数的肯定句,动词用原形。 3.在一般现在时中,句中有be动词或情态动词时,否定句在be动词和情态动词后加not,一般疑问句将be动词或情态动词放在句首。 4.在一般现在时中,句中没有be动词或情态动词时,主语为第三人称单数的否定句在动词前加does+not (doesn’t),一般疑问句在句首加does,句子中原有动词用原形;主语为非第三人称单数,否定句用do+not (don’t),一般疑问句在句首加do,句子中动词用原形。 动词+s的变化规则 1.一般情况下,直接加-s,如:cook-cooks, milk-milks 2.以s. x. sh. ch. o结尾,加-es,如:guess-guesses, wash-washes, watch-watches, go-goes 3.以“辅音字母+y”结尾,变y为i, 再加-es,如:study-studies 三、现在进行时 1. 现在进行时表示现在正在进行或发生的动作,也可表示当前一段时间内的活动或现阶段正在进行的动作。 2. 现在进行时的肯定句基本结构为be+动词ing. 3. 现在进行时的否定句在be后加not。 4. 现在进行时的一般疑问句把be动词调到句首。 动词加ing的变化规则 1. 一般情况下,直接加ing,如:cook-cooking 2. 以不发音的e结尾,去e加ing,如:make-making, taste-tasting 3. 如果末尾是一个元音字母和一个辅音字母,双写末尾的辅音字母,再加ing,如:

相关文档
最新文档