当前位置:文档之家› Oracle复习题总结

Oracle复习题总结

Oracle复习题总结
Oracle复习题总结

绪论:

1、Oracle,甲骨文,1977年开始研发,总部位于美国加州红木滩市,创始人为Larry Ellison(埃里森) 、

Bob Miner、Ed Oates

2、Oracle服务器=实例+数据库;Oracle实例=内存+后台进程;

第四章:表空间的创建与删除

例4.1 建立名称为data_ts1的数据表空间,大小为50M,区间统一为128KB大小。

SQL> conn system/systempwd@orcl

SQL> drop tablespace data _ts1 including conntents;

SQL> create tablespace data _ts1

2 tempfile ‘ %oracle_home%\database\data_ts1.dbf ’ SIZE 50M REUSE

3 uniform size 128K;

例4.2 建立名称为temp_ts1的临时表空间,使用temp_ts1.dbf文件存放临时数据。

SQL> conn system/systempwd@orcl

SQL> drop tablespace temp_ts1 including conntents;

SQL> create temporary tablespace temp_ts1

2 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse

3 uniform size 128k;

例4.3创建10号部门经理用户EMP_MGR10,指定该用户的数据表空间为data_ts1,临时表空间为temp_ts1。授权该用户可以查看SCOTT用户下雇员表中的记录。

SQL> conn system/systempwd@orcl

SQL> drop user emp_mgr10 cascade;

SQL> create user emp_mgr10 identified by emp_mgr10pwd

2 default tablespace data_ts1 temporary tablespace temp_ts1;

SQL> grant connect to emp_mgr10;

SQL> conn scott/tiger@orcl

4 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse

5 uniform size 128k;

例4.4 创建和应用撤销表空间。

SQL> conn system/systempwd@orcl

SQL> drop tablespace undo_ts1 including conntents;

SQL> create undo tablespace undo_ts1

2 datafile ‘ %oracle_home%\database\undo_ts1.dbf ’ size 50M reuse;

例4.5 创建大文件表空间,并指定为SCOTT用户的默认数据表空间。

SQL> conn system/systempwd@orcl

SQL> drop tablespace bigfile_ts1 including conntents;

SQL> create bigfile tablespace bigfile_ts1

2 datafile ‘ %oracle_home%\database\bigfile_ts1.dbf ’ size 50M reuse;

SQL> alter user scott default tablespace bigfile_ts1;

需要注意的是,大文件表空间的段空间管理不能为手工(MANUAL),只能为自动(AUTO)。

例4.6调整数据表空间data_ts1的大小。

SQL> conn system/systempwd@orcl

--为表空间data_ts1增加一数据文件,大小为1M。

SQL> alter tablespace data_ts1

2 add datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ size 1M;

--重置该数据文件大小为2M。

SQL> alter tablespace

2 datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ siz e 2M;

--修改该数据库,允许该文件自动扩展,每次扩展1M,文件最大扩展到10M。

SQL> alter database datafile ‘ %oracle_home%\database\data_ts2.dbf ’

2 autoextend on next 1M maxsize 10M;

例4.7 删除temp_ts1表空间。

SQL> conn system/systempwd@orcl

SQL > drop tablespace temp_ts1

2 including contents and datafiles

3 cascade constraints ;

第5章:常用方案对象类型:

表:table 索引:index 视图:view 序列:sequence 用户:user

约束:constraint 表空间:tablespace 回退段:rollback segment

同义词:synonym 数据库链接:database link 聚簇:cluster

分区:partition 函数/过程/包:func tion/procedure/package

触发器:trigger 类型:type

约束的类型:

NOT NULL:非空约束

check :检查约束,用于限制该列的取值范围

Unique :唯一性约束,指定某列值不能重复

primary key :主键约束

Foreign key :外键约束,也叫参照完整性约束

Ref :定义列对象的参照关系

References :参照完整性约束

例5.1 创建采用系统默认存储参数值的关系表。EXA_05_01.SQL

例5.2 为SCOTT的雇员表emp创建一个备份表emp_bak。

SQL> conn scott/tiger@emp_orcl

SQL> dorp table emp_bak;

SQL> create table emp_bak

SQL> as select * from emp;

SQL> desc emp_bak

SQL> select * from emp_bak;

例5.3 创建表stu2,并指定它的存储参数。EXA_05_03.SQL

例5.4 创建学生相关表,在列中定义约束。EXA_05_04.SQL

例5.5 创建学生相关表,在列之外定义约束。EXA_05_05.SQL

例5.6 创建学生相关表,在列之外定义约束。EXA_05_06.SQL

例7.1某电子商务网站估计每月产生近千万条订单记录。该网站采用年YYYY+月MM+当月流水号nnnnnnnn的形式标识和区分每一份订单。当有用户提交一份订单时,系统自动生成该订单的编号并告

知用户这个唯一的订单号。创建一序列,用于生成每月的订单流水号。(老师要求例子) conn scott/tiger@orcl

drop sequence order_seq;

create sequence order_seq

increment by 1

start with 10000000

cache 500

nocycle;

col sequence_name format a13

select sequence_name, min_value, max_value,

increment_by, last_number

from user_sequences;

select order_seq.currval from dual;

select order_seq.nextval from dual;

select order_seq.currval from dual;

select order_seq.nextval from dual;

select order_seq.currval from dual;

--函数案例:案例1.返回工人年工资。

create or replace function xxc_fun1(newname varchar2)

return number is yearSal number(10,2);

begin

select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=newname; return yearSal;

end;

例9.编写函数按YYYY-MM-DD HH24:MI:SS格式以字符串形式返回当前系统时间。

connect scott/tiger@orcl

create or replace function current_time return varchar2

as

begin

return to_char(sysdate,'yyyy-mm-dd hh24')||':'

|| to_char(sysdate,'mi')||':'||to_char(sysdate,'ss');

end;

/

select current_time from dual;

例9.21 查询指定编号雇员的名字、工资和佣金。存储过程

conn scott/tiger@orcl

create or replace procedure query_emp

(p_no in emp.empno%type,

p_name out emp.ename%type,

p_sal out emp.sal%type,

p_comm out https://www.doczj.com/doc/6716412860.html,m%type)

is

begin

select ename,sal,comm

into p_name,p_sal,p_comm

from emp

where empno = p_no;

end query_emp;

/

variable g_name varchar2(25)

variable g_sal number

variable g_comm number

execute query_emp(7369,:g_name,:g_sal,:g_comm)

print g_name

例9.39创建触发器:

1.在scott的emp表上建立语句前触发器emp_permit_changes。

Create or replace trigger scott.emp_hello

Before D elete or insert or update On scott.emp Begin

raise_application_error(-20001,'how are you!'); End;

2.修改触发器

使emp_hello触发器不能触发:

alter trigger scott.emp_hello disable;

3.删除触发器

drop trigger scott.emp_hello;

end;

/

update emp set sal=100 where empno=7369;

例9.37 为雇员表emp创建一触发器,确保插入记录的工资列sal不小于0,同时新记录的sal列值不能高于已有记录最高工资的2倍。

conn scott/tiger@orcl

create or replace trigger check_sal_emp

before insert or update on emp

referencing old as old new as new

for each row

begin

if :new.sal < 0 then

raise_application_error (-20501,'雇员工资不能为负数');

end if;

if :new.sal > 2 * wage_package3.g_sal then

raise_application_error(-20502,'雇员工资超过现有最高工资2倍');

end if;

end;

/

insert into emp (empno, ename, hiredate,job, sal, deptno)

values (300, 'jordan', sysdate,'it_prog', -3, 10);

insert into emp (empno, ename, hiredate,job, sal, deptno)

values (300, 'tracyzhou', sysdate,'acc.offi.', 16000, 10);

Oracle实例有两种类:单进程实例和多进程实例。

多进程系统中,进程分为两类:用户进程和Oracle进程。

Oracle进程又分为两类:服务器进程(server process)和后台进程(background process)。Oracle数据库的索引模式:

(1) B-树索引(2) B-树簇索引(3) 散列簇索引(4) 全局和本地索引

(5) 反序索引(6) 位图索引(7) 基于函数的索引(8) 域索引

创建视图:

1、生成一个部门号是10的视图:

create view d10emp as select empno, ename, sal from emp where deptno = 10;

2、删除视图:drop view d10emp;

3、创建索引:

create index i_ename on emp(ename);

create unique index i_empno on emp(empno);

索引应用

如果查询语句如下则没有用到索引i_ename:select ename,job,sal from emp;

如果查询语句如下则用到索引i_ename:selct * from emp where ename = ‘jones’;

4、删除索引:drop index i_ename;

5、创建一个用户:create user myself identified by my;

6、修改用户口令:alter user myself identified by me;

7、对象权限授权:把dept 的select对象权限授给myself用户:

grant select on dept to myself;

把emp的select权限授给所有用户:grant select on emp to public;

8、收回对象权限:

从myself收回所有dept的对象权限:revoke all on dept from myself;

收回所有用户对emp的select权限:revoke select on emp from public;

9、删除用户:drop user myself;

实验三:数据插入(insert)、修改update和删除delete

1.用Insert在基本表customer中插入数据

SQL>insert into customer values (‘nicholson’,’ca’,6989.99);

2.在表STATE中插入指定的字段

SQL>insert into state (state_name,state_cd)

2 values (‘massachusetttes’,’MA’);

1 row created.

3.修改数据

把state表中newyork改为florida,ny改为fd:

update state set state_name = ‘florida’, state_cd = ‘fd’

where state_name = ‘newyork’ and state_cd = ‘ny’;

4.删除数据

从state表删除state_name为Florida和state_cd为fd的记录:

delete from state wher e state_name = ‘florida’ and state_cd = ‘fd’;

删除表全部数据:delete from hzx.sc

2、对s、c、sc表进行操作:

s (s#,sname,age,sex) 对应的中文为:(学号,姓名,年龄,性别)]

sc (s#,c#,grade) 对应的中文为:[学习(学号,课程号,成绩)]

c(c#,cname,teacher) 对应的中文为:[课程(课程号,课程名,任课教师)] 1)、把c2课程的非空成绩提高10%。

update stu.sc set grade = grade*1.1 where c# = 'c2' and c# is not null;

2)、在sc表中删除课程名为physics的成绩的元组。

delete from stu.sc where c#='physisc';

3)、在s和sc表中删除学号为s8的所有数据。

delete from stu.sc where s#='s8'; delete from stu.s where s#='s8';

实验四:索引、视图

1.建立男学生的视图,属性包括学号、姓名、选修课程和成绩。

create view man as select s.s#,sname ,cname ,grade from c,s,sc

where sex='m' and s.s#=sc.s# and c.c#=sc.c#;

2.在男学生视图中查询平均成绩大于80分的学生学号和姓名。

select distinct s#,sname from man w here sname in (

select sname from man group by sname having avg(grade)>80);

3.撤消生成的视图。SQL> drop view man;

4.创建一个新用户newuser。执行语句:create user newuser identified by my; 5.使用grant语句,把对基本表s、c、sc的使用权限授给newuser用户。

grant all on s to newuser ; grant all on c to newuser ;

grant all on sc to newuser ;

6.使用revoke语句从newuser手中收回基本表s、c、sc的使用权。

revoke all on s from newuser ; revoke all on c from newuser ;

revoke all on sc rom newuser ;

7.删除用户newuser。执行语句:drop user newuser;

8.对基本表S按照S#生成一个索引。执行语句:CREATE INDEX ss ON S(S#); 9.对基本表C按照C#生成一个索引。执行语句:CREATE INDEX cc ON C(C#); 10. 删除基本表C建立的索引。执行语句:DROP INDEX ss;

Oracle中分析函数用法小结

Oracle中分析函数用法小结 一.分析函数适用场景: ○1需要对同样的数据进行不同级别的聚合操作 ○2需要在表内将多条数据和同一条数据进行多次的比较 ○3需要在排序完的结果集上进行额外的过滤操作 二.分析函数语法: FUNCTION_NAME(,...) OVER () 例: sum(sal) over (partition by deptno order by ename) new_alias sum就是函数名 (sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:sum(sal+comm) over 是一个关键字,用于标识分析函数,否则查询分析器不能区别sum()聚集函数和sum()分析函数 partition by deptno 是可选的分区子句,如果不存在任何分区子句,则全部的结果集可看作一个单一的大区 order by ename 是可选的order by 子句,有些函数需要它,有些则不需要.依靠已排序数据的那些函数,如:用于访问结果集中前一行和后一行的LAG和LEAD,必须使用,其它函数,如AVG,则不需要.在使用了任何排序的开窗函数时,该子句是强制性的,它指定了在计算分析函数时一组内的数据是如何排序的. 1)FUNCTION子句 ORACLE提供了26个分析函数,按功能分5类 分析函数分类 等级(ranking)函数:用于寻找前N种查询 开窗(windowing)函数:用于计算不同的累计,如SUM,COUNT,AVG,MIN,MAX等,作用于数据的一个窗口上 例: sum(t.sal) over (order by t.deptno,t.ename) running_total, sum(t.sal) over (partition by t.deptno order by t.ename) department_total 制表(reporting)函数:与开窗函数同名,作用于一个分区或一组上的所有列 例: sum(t.sal) over () running_total2, sum(t.sal) over (partition by t.deptno) department_total2 制表函数与开窗函数的关键不同之处在于OVER语句上缺少一个ORDER BY子句! LAG,LEAD函数:这类函数允许在结果集中向前或向后检索值,为了避免数据的自连接,它们是非常有用的. VAR_POP,VAR_SAMP,STDEV_POPE及线性的衰减函数:计算任何未排序分区的统计值 2)PARTITION子句 按照表达式分区(就是分组),如果省略了分区子句,则全部的结果集被看作是一个单一的组 3)ORDER BY子句

oracle复习大纲(1)

chapter 7 1.Oracle数据库物理存储结构的组成及各个部分的功能、性质。 数据文件:用于存储数据库中的所有数据 控制文件:用于记录和描述数据库的物理存储结构信息 重做日志文件:用于记录外部程序(用户)对数据库的改变操作 归档文件:用于保存已经写满的重做日志文件 初始化参数文件:用于设置数据库启动时的参数初始化值 跟踪文件:用于记录用户进程、数据库后台进程等的运行情况 口令文件:用于保存具有SYSDBA,SYSOPER权限的用户名和SYS用户口令; 警告文件:用于记录数据库的重要活动以及发生的错误; 备份文件:用于存放数据库备份所产生的文件。 2.数据文件管理: (1)数据文件与表空间的关系 从物理角度看,数据库由数据文件构成,数据存储在数据文件中;从逻辑角度看,数据库是由表空间构成的,数据存储在表空间中。一个表空间包含多个数据文件,但一个数据文件只能属于一个表空间。 在oracle数据库中,数据文件是依附于表空间而存在。一个表空间可以包含多个数据文件,但一个数据文件只能从属于一个表空间。在逻辑上,数据库对象都存放在表空间中,实质上是存放在表空间所对应的数据文件中。 (2)数据文件的添加、数据文件大小的修改autoextend on 、resize(操作)、数据文件的移植 添加: 向表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB; 向表空间添加一个自动增长的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB autoextend on next 1M maxsize 50MB; 向临时表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名 add tempfile‘路径\*.dbf’ size xMB; 修改: ①修改大小 修改数据文件大小为yMB: Alter database datafile ‘路径\*.dbf’ resize yMB; 修改文件的自动增长方式: Alter database datafile ‘路径\*.dbf’ autoextend on next 1M maxsize unlimited;

oracle视图总结

oracle视图总结(转) 视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图。 视图的分类: 视图分为简单视图和复杂视图。 两者区别如下: 1.简单视图只从单表里获取数据,复杂视图从多表获取数据; 2.简单视图不包含函数和数据组,复杂视图包含; 3.简单视图可以实现DML操作,复杂视图不可以。 视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 例如: Sql代码 1.CREATE OR REPLACE VIEW dept_sum_vw 2.(name,minsal,maxsal,avgsal)

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

Oracle复习

一.创建用户 在YGGL数据库中创建一个用户MANAGER,授予DBA角色和SYSDBA系统权限,它可以替代system系统用户。 CONNECT SYSTEM/123456 AS SYSDAB CREATE USER MANAGER PROFILE "DEFAULT" IDENTIFIED BY manager DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT SYSDBA TO "MANAGER"; GRANT "COUNTNECT" TO "MANAGER"; GRANT "DBA" TO "MANAGER"; ALTER user MANGER GRANT CONNECT THROUGH SYSTEM; 二:创建角色 在YGGL数据库中创建一个角色ADMIN,授予DBA角色和SYSDBA系统权限。CREATE ROLE ADMIN IDENTIFILED BY "manager"; GRANT SYSDAB TO ADMIN ; GRANT SYSOPER TO ADMIN; GRANT "CONNECT" TO ADMIN; GRANT "DBA" TO "ADMIN"; 一.创建概要文件 在YGGL数据库中创建概要文件YGGL_PROFILE并分配给用户MANAGER。CREATE PROFILE "XSCJ _PROFILE"LIMIT COMPOSITE_LIMIT DEFAULT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 20 PASSWORD_GRACE_TIME 60 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME 120 PASSWORD_VERIFY_FUNCTION DEFAULT (1)使用命令方式分别向YGGL数据库个表中插入一行记录 INSERT INTO ZPEMPLOYEES V ALUES('011112','罗林 ',TO_DATE('26-06-1973','DD-MM-YYYY'),1,'解放路100 ',210002,4055663,5); INSERT INTO ZPDEPARTMENTS V ALUES('6','人力资源',NULL); INSERT INTO ZPSALARY V ALUES ('011112',1200.09,50) (2)修改表salry的记录值 UPDATE ZPSALARY SET InCome=2890 WHERE EmployeeID='011112'; (3)删除Salary中的一行记录 DELETE FROM ZPSALARY WHERE EmployeeID='01112'; 3.索引和完整性 (1).对YGGL数据库中的Employees表的DepartmentID列建立索引 CREATE INDEX PK_XS_BAK ON ZPEMPLOYEES(DepartmentID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INITIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20

Oracle实验总结

Oracle实验总结 Oracle实验总结 Oracle实验总结 近日做了基于ORACLE的数据库安全、对象sql数据库,XML数据库的实验,其中遇到很多问题,先总结如下。 1、安装Oracle的过程中可以‘选择建立数据库’,也可以选择‘只安装软件’,后者可在安装好软件后,建立数据库,可参考网上的很多安装步骤。 2、Oracle的默认用户有sys和system,在命令行或者sQl*plus中登陆时,写法如下: Connectsys/123456assysdba;其中123456是密码,在创建数据库的时候设置的。 普通用户登录,connectzhangsan/123456; 3、grantselect不支持对表中选定的几列授权,只能将整个表的select权限授权出去。所以实验中先建立了基于选课信息表的视图SelectiveInfo1,视图中包含成绩列,学号列以及班级列(不包含其他的列),再将对视图SelectiveInfo1的select权限授予角色teacher。 4、创建用户的时候,一定要说明该用户对表空间的权限即(quotaunlimitedontablespace或者具体限定大小的句子),否则该用户即使被授予了建表权限,也不能建表。 创建用户的时候必须给用户授予createsession的权限,这是最基本的权限。 5、不同的用户可以创建相同的表格,例如,teacher用户创建了table1,student 用户也创建了table1,且这两个表格式完全相同的,那么其他用户需要用这两个表格时,可以用teacher.table1和student.table1加以区分。系统用户创建的

oracle的sqlldr的使用总结

oracle的sqlldr的使用总结 part i一:sql loader 的特点 oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle 公司自己产品的兼容性的问题吧。 sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob 等类型的数据就有点麻烦了。 二:sql loader 的帮助 C:\>sqlldr SQL*Loader: Release 9.2.0.1.0 - Production on 星期六10月9 14:48:12 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 用法: SQLLDR keyword=value [,keyword=value,...] 有效的关键字: userid -- ORACLE username/password control -- Control file name log -- Log file name bad -- Bad file name data -- Data file name discard -- Discard file name discardmax -- Number of discards to allow (全部默认) skip -- Number of logical records to skip (默认0) load -- Number of logical records to load (全部默认) errors -- Number of errors to allow (默认50) rows -- Number of rows in conventional path bind array or between direct p ath data saves (默认: 常规路径64, 所有直接路径) bindsize -- Size of conventional path bind array in bytes(默认256000) silent -- Suppress messages during run (header,feedback,errors,discards,part itions) direct -- use direct path (默认FALSE) parfile -- parameter file: name of file that contains parameter specification s parallel -- do parallel load (默认FALSE) file -- File to allocate extents from skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默 认FALSE) skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

oracle体系结构总结

oracle体系结构总结 传统上Oracle体系结构由内存结构、进程结构、存储结构组成。其中,内存结构由SGA、PGA组成;进程结构由用户进程和Oracle进程组成;存储结构由逻辑存储、物理存储组成。 通过数据库的启动过程和一条sql的执行过程可以将oracle的内存结构、进程结构、存储结构串起来。 一、内存结构 (1)SGA(System Global Area):一个包含实例数据和控制信息的共享内存区域 (2)PGA(Program Global Area):一个包含服务器进程和后台进程的数据和控制信息的共享内存区域 1.1系统全局区SGA 系统全局区,是DB Server 中实例的必要组成部分,由很多小内存区共同构成,各个小内存区存放不同的信息,系统全局区用于暂存可以被所有进程(包括server process 以及background process)共享的信息,对系统的运行性能有好处,SGA 在实例启动的时候自动分配,实例关闭时自动释放。 SGA 暂存系统的大量共享数据,对系统有相当的性能影响,所以需要为SGA 选择适当的管理方式,根据所使用的数据库版本不同,SGA 的管理有三种方式:1)8i:SGA 的大小由所有内存组件大小之和决定,不能直接定义SGA 大小,对内存组件的大小可后台进行修改,但只能通过直接修改参数文件的内存参数大小,而且修改完数据库必须重起后才能生效,所以这种内存管理方法叫做SGA 的静态管理。 2)9i:SGA 的大小由初始化参数SGA_MAX_SIZ E 确定,各个内存组件大小之和不能超过这个参数。可以直接通过命令进行修改内存组件大小而不用重启,这种叫做SGA 的动态管理

Oracle高级查询总结

高级查询总结 A.层次查询:start with……connec by prior…….. select lpad(' ',3*level)||ename,job,level from emp start with mgr is null connect by prior empno=mgr; 从根结点向下查,lpad()为左添加,level为第几层,prior为查找的方向;此句若省掉start with….则表示要遍历整个树型结构;若出现level,则后面一定要跟connect by B.交叉报表(case when then end 与decode()) select ename,case when sal>=1500then sal*1.01 else sal*1.1 end工资 from emp; select姓名, max(case课程when'语文'then分数end) 语文, max(case课程when'数学'then分数end) 数学, max(case课程when'历史'then分数end) 历史 from学生group by姓名;------(交叉报表与函数一起使用) select ename,sum(decode(sal,'sal',comm,null)) 奖金from emp group by ename;--可实现分支 decode(条件,(值),(返回值),…………,(默认值)) 部门 select sal,decode(sign(sal-1500),-1,1.1*sal,0,1.1*sal,1,1.05*sal) from emp; C.连接查询 1.等值: select * from emp,dept where emp.deptno(+)=dept.deptno; ‘+’在左则以右表为主,反之亦然 2.非等值:where的运算符不是等号 3.自然连接: select * from emp natural join dept 4.99乘法: select * from emp e full join dept d using (deptno) where deptno=10; --where必须放在using(on)的后面 D集合查询: 1.A Union B:消除重复行,有all则可以重复,默认第一列升序select ename,sal from deptno=20 union select ename,sal from job=’CLERK’; 2.A intersect B:A与B的交集 select ename,sal from deptno=20 intersect select ename,sal from job=’CLERK’; 3.A minus B:在A中减去既属于A又属于B的一部分

关于数据库知识点的再学习和整理

个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~ 1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。 2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象: 由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些: 首先是安装了mysql数据库之后,进入dos命令提示窗口, 接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下, 然后输入mysql -u root -p,然后会提示输入密码,然后进入, 进入后的命令提示符是mysql> 在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库, Create database 数据库名字; 增 A.首先是新建表:create table table_name( [列级完整性约束条件] [,[列级完整性约束条件]] ...... [,<表级完整性约束条件>]); E.g creatable table students( id int(4) primary key, Name char(20) not null, Foreign key id references teachers(no)); B.接着是添加信息:insert into [[,]...] values(常量[,常量]...); E.g insert into students values(1,'tom'); 注意,如果不列出来表格的属性的话,就说明添加一条完整的信息。 如果列出来表格的属性的话,那么没有列出来的就做,空值处理。 C.添加约束条件(注意,下面的语法只在oracle 10g中验证过,仅供参考)。 关于创建表格约束的时候是使用add constraint还是modify语法,我进行了可行性的测试,现在结果如下: 《》关于创建外键,两种语法都可以,语法如下 1,alter table 表格名add constraint 外键名foreign key(列名)references 被参照的表名(列名); 2,alter table 表格名modify foreign key(列名)references 被参照的表名(列名); 注意:alter table 表格名modify 列名foreign key references 被参照的表名(列名);是不可以的。 《》关于创建主键,两种方法都可以,语法如下 1,alter table 表格名add constraint 外键名primary key(列名) enable; 2,alter table 表格名modify 列名primary key;

Oracle_RAC知识汇总

一、Oracle RAC原理 ORACLE RAC原理在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。 逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。 二、RAC中的特点是: 每一个节点的instance都有自己的SGA 每一个节点的instance都有自己的background process 每一个节点的instance都有自己的redo logs 每一个节点的instance都有自己的undo表空间 所有节点都共享一份datafiles和controlfiles Oracle还提出了一个缓存融合的技术(Cache fusion) 目的有两个 1.保证缓存的一致性 2.减少共享磁盘IO的消耗 因此在RAC环境中多个节点保留了同一份的DB CACHE 缓存融合(Cache fusion)工作原理: -**************************************** 1.其中一个节点会从共享数据库中读取一个block到db cache中 2.这个节点会在所有的节点进行交叉db block copy 3.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改 4.为了达到存储的一致最终修改的结果也会写到磁盘上 三、ClusterWare组件 ******************* 有四种Service Crsd - 集群资源服务 Cssd - 集群同步服务 Evmd - 事件管理服务 oprocd - 节点检测监控 有三类Resource VIP - 虚拟IP地址(Virtual IP) OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息

Oracle数据库心得体会

学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.doczj.com/doc/6716412860.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.doczj.com/doc/6716412860.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

oracle数据库 复习提纲 及其答案详解

Oracle数据库复习提纲 一、Oracle10g简介 1、Oracle10g一共有哪几个版本? Oracle数据库10g标准版1,Oracle数据库10g标准版,Oracle数据库10g企业版,Oracle数据库10g个人版. 2、 Oracle10g中的g是什么含义? Oracle 10g的g就代表grid computing。 3、理解Oracle数据库中的方案、数据块、区间、段、表、表空间之间的关系。 Oracle 数据库的逻辑结构包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间则由数据块组成 4、标准数据块大小由初始参数(DB_BLOCK_SIZE)指定。 5、理解数据库、表空间、数据文件之间的关系。 每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。 表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量为2MB,用户表空间的存储容量为4MB)。 数据库中表空间的存储容量之和就是数据库的存储容量。 6、叙述Oracle数据库的物理结构。(每个Oracle数据库都由3类文件组成:数据文件、日志文件、控制文件,……) Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。数据文件有下列特征: 一个数据文件仅与一个数据库联系。 当数据库容量越界时,数据文件能够自动扩展。 一个或多个数据文件组成一个表空间。 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。 日志的主要功能是记录对数据所作的修改,所有对数据库作的全部修改记录在日志中。 每个Oracle数据库有一个控制文件,记录数据库的物理结构。 控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

Oracle数据库开发知识点

Oracle数据库开发指南 前言 参考 第一部分基础 一、数据库对象 表空间Tablespace:存储数据库对象的容器 模式Schema 表Table 表名最长为30个字符,不能以数字开头。一个表最多254个列。 CREATE TABLE tablename AS select_statement,通过子查询建立新表 DESC tablename,查看表或其它数据库对象的定义 ALTER TABLE tablename RENAME new_tablename,修改表名 RENAME tablename TO new_tablename,修改表名,注意修改表名后,视图必须重建。 索引Index 保证表中数据的唯一性;减少定位和检索数据所需要的I/O操作 Oracle允许对列值创建索引,也可对表达式创建索引。所以既可是UNIQUE,也可是UNIQUE Oracle对DESC(降序)索引认为是基于函数的索引。 序列Sequence 使用序列为表的码值生成唯一的序列值 聚簇Cluster 视图View 由一个预定义的查询构成,可看作为数据库的逻辑表。 SELECT text_length FROM user_views WHERE view_name = …viewname? Set long 5000 SELECT text FROM user_views WHERE view_name = …viewname? 快照Snapshot 快照与视图都是基于查询结果的。但快照使用物理的存储空间,快照中的数据一般都是静态的,只有刷新时才改变。 快照的目的是提供某个时间点的数据。 二、数据类型 CHAR(n),255字符 V ARCHAR2(n):2000字符 LONG,2G字符,只能用在列SELECT列表,UPDATE语句的SET子句或INSERT语句的V ALUES子句中,一个表中只能有一个LONG列,LONG列不能建索引,也不能有完整性约束,不能用于表达式。DATE

相关主题
文本预览
相关文档 最新文档