当前位置:文档之家› _Oracle数据库_学习笔记

_Oracle数据库_学习笔记

_Oracle数据库_学习笔记
_Oracle数据库_学习笔记

笔记Edi ted w ith the trial version of Foxit Advanced PDF Editor

T o remove this notice, visit:

w https://www.doczj.com/doc/6316270514.html,/shopping

Oracle数据库 学习笔记

常见的数据库

小型数据库access(微软)

中型数据库mysql(瑞典MySql AB) sql server(美 微软) informix(美IBM)

大型数据库sybase(美sybase) oracle(美oracle) db2(美IBM)

Oracle基本操作

一、Oracle数据库基本命令:

1.SQL->show user; 显示用户

2.SQL->conn scott/tiger;用户连接

3.SQL->disc; 断开连接

4. SQL->passw; 修改密码

5. SQL->exit; 退出

6. SQL->start D:\test.sql; 运行D盘下test.sql脚本

7. SQL->edit D:\test.sql; 编辑D盘下test.sql脚本

8. SQL->spool D:\test.sql;

SQL->select * from emp;

SQL->spool off;

二、Oracle管理用户

1.创建用户(以DBA身份)

SQL->create user name identified by password(以字母开头)

注意:新建用户默认是没有任何权限的,需要DBA赋予权限(1、系统权限:对数据库的相关权限;2、对象权限:用户对其他用户数据对象(表、视图等)操作的权限)

2. grant赋予用户权限

SQL->grant connect to username;(把角色connect赋予username(dba 、resource))

SQL->grant select on emp to username;(emp表的用户scott或sys、system把select权限赋予username) username 用户可以进行select操作了,SQL->select * from scott.emp;(查询emp表的内容)

SQL->grant select on emp to username;(把全部权限赋予)

3.revoke回收用户权限

SQL->revoke select on emp from username; (scott收回用户username对用户scott表emp的select权限(必须是scott 赋予username的权限))

4.权限的传递

对象权限:SQL->grant select on emp to username with grant option;

系统权限:SQL->grant select on emp to username with admin option;

5.给用户修改密码

SQL->password username;(password scott ;sys修改scott密码)

SQL->password;(scott修改自己密码)

6.使用profile管理用户口令

账户锁定

SQL->create profile lockname limit failed_login_attempts3 password_lock_time2;(以dba身份)创建配置文件,名字为lockname。

SQL->alter user username profile lockname;

账户解锁: SQL->alter user username account unlock;

删除profile :SQL->drop profile lockname;

Oracle表的管理

一、表和列的命名规则

?不能使用oracle的保留字

?只能使用A-Z,a-z,0-9,$,#等

?长度限制为30个字符内

二、oracle的数据类型

1.字符型

char()定长 特点:查询速度快,效率高 ;浪费空间 最大:char(2000)

varchar2()可变长度 特点:节省空间,效率低 最大varvhar(4000)

clob()字符型大对象 最大4G

2.数字类型

number可以表示整数和小数

number(5,2)一个小数有5位有效数,2位小数-999.99~999,99

number(5)一个5位整数-99999~99999

3.日期类型

date包含年月日时分秒

4.图片类型

blob二进制数据 可以存放图片、声音

三、表的操作

1.创建表

SQL> create table student (

2 sID number(4),

3 sName varchar2(20),

4 sSex char(2),

5 sBirthday date,

6 sPay number(7,2) 区别于sql server 无逗号。

7 );

Table created

SQL> create table class(

2 cId number(2),

3 cName varchar2(20)

4 );

Table created

2.修改表

添加字段SQL> alter table student add (cId number(2));

删除某个字段 SQL> alter table student drop column cId; Table altered

查看表结构 SQL> desc student;

修改字段长度 SQL> alter table student modify (cId number(5);

删除表 SQL> drop table student;

修改表名字 SQL>rename student to stu;

3.添加数据

SQL>insert into student values(1,'小明','男','11-5月-2011',12345.1,12); 1 row inserted 日期格式默认为DD-MON-YY 天-月份-年

可以修改默认日期格式

SQL> alter session set nls_date_format ='yyyy-mm-dd';

Session altered

修改一个字段

SQL>update student set sSex='男' where sId='2';

1 row updated

SQL> insert into student (sId,sname,sbirthday) values (4,'小明',NULL);

1 row inserted

查询时注意:SQL> select * from student where sBirthday is null;

删除数据 SQL>delete from student;删除所有记录,表结构还在,如果再删除之前设置回滚点还可以回滚。

回滚操作

SQL>savepoint a;

SQL>delete from student;

SQL>rollback to a;

?SQL>drop table student;删除表结构和数据

?SQL>delete from student where sId=1;删一条记录

?SQL>truncate table student;删除所有记录,表结构还在,速度快对于大型表适用

oracle 表的基本查询

SQL> set timing on;显示执行时间 SQL> desc dept; 查看表结构

一、单表查询

取消重复行

SQL> select distinct deptno ,job from emp;

NULL处理

SQL>select sal+nvl(comm,0) from emp;当comm为null时变为0

SQL Server中为select sal+isnull(comm,0) from emp;

where子句

SQL>select ename,hiredate from emp where hiredate>'1-1月-1989';

like语句

SQL>select ename,sal from emp where ename like 'S%';

%:零个或多个字符

_:任意单个字符

逻辑操作符 or and

order by 子句

SQL>select * from emp order by sal;默认为升序

SQL>select * from emp order by sal asc;升序

SQL>select * from emp order by sal desc;降序

使用列的别名排序

SQL>select ename,(sal+nvl(comm,0))*12 as "年薪" from emp order by "年薪" desc;

Oracle复杂查询

max(),min(),avg(),sum(),count()

group by用于对查询结果分组统计

having子句用于限制分组显示结果

SQL>select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)>2000 order by avg(sal) asc;

二、多表查询

1.笛卡尔积

SQL>select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;

2.自连接

自连接指在同一张表的连接查询

SQL>select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno;

3.子查询(嵌套查询)

嵌入在其他sql语句中的select语句。

单行子查询

多行子查询

SQL>select * from emp where job in (select distinct job from emp where deptno = 10 );

多行子查询中使用all

SQL>select ename,sal,deptno from emp where sal>all (select sal from emp where deptno=30);

等价

SQL>select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);

多行子查询中使用any

SQL>select ename,sal,deptno from emp where sal>any (select sal from emp where deptno=30);

等价

SQL>select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30);

多列子查询

SQL>select ename,sal from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

SQL>select a2.ename,a2.sal,a2.deptno,a1.mysal from emp a2,(select deptno,avg(sal) mysal from emp group by deptno) a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal;

注意表取别名是不加as,列可以。

SQL> select a2.ename,a2.sal,a2.deptno,a1.mysal from emp a2 join (select deptno,avg(sal) as mysal from emp group by deptno) a1 on a2.deptno= a1.deptno where a2.sal>a1.mysal ;

4.分页查询

SQL> select * from (select a.*,rownum rn from (select * from emp) a where rownum<=10 ) where rn>=6;

SQL> select * from (select a.*,rownum rn from (select ename,sal from emp order by sal) a where rownum<=10 ) where rn>=6;

5.查询结果创建新表

SQL>create table mytable (id,ename,sal) as select empno,ename,sal from emp;

合并查询

集合操作符union

union all

intersect

minus 差集

6.创建新的数据库

数据库配置助手Database Configuration Assistant

oracle事务处理

sql函数

字符函数

lower()字符串转换为小写 upper()字符串转换为大写 length()求字符串长度

SQL> select lower(ename) from emp where length(ename)=5;

substr( ,m,n) m起始位置 n长度

select substr(ename,1,3) from emp;

SQL> select lower(ename) from emp where length(ename)=5;

Replace(char,serachstring,replacestring)

SQL> select replace(ename,'A','abcde') from emp;

SQL> select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp; 数学函数

round()四舍五入

SQL>select round(sal,2) from emp;

trunc()截取

SQL>select trunc(comm,1) from emp;

mod()模运算mod(10,3)=1 floor(n)小于或等于n的最大整数 ceil(n)大于或等于n的最小整数

日期函数

sysdate系统时间

last_day()

转换函数

to_char()

数据库管理

逻辑备份

cmd

导出表:

bin>exp userid=scott/tiger@myoracle tables=(emp,dept) file=d:\*.dmp;

方案:

bin>exp userid=system/manager@myoracle owner=scott file=d:\*.dmp;

导出数据库

bin>exp userid=system/manager@myoracle full=y inctype=complete file=d:\*.dmp;

导入表:

bin>imp userid=scott/tiger@myoracle tables=(emp) file=d:\*.dmp;

方案:

bin>imp userid=scott/tiger file=d:\*.dmp;

导出数据库

bin>imp userid=system/manager full=y file=d:\*.dmp;

物理备份

数据字典

记录数据库的系统信息,所有者sys,用户只能在数据字典上进行查询操作。

基表,存放静态数据

动态性能视图,动态数据

SQL>select table_name from user_tables;显示当前用户所拥有的所有表

SQL>select all_name from user_tables;显示当前用户可以访问的所有表

SQL>select table_name from dba_tables;

管理表空间和数据文件

数据库

表空间 区 段 块

建立表空间 create tablespace

改变表空间状态

SQL>alter tablespace 表空间名 offline;

SQL>alter tablespace 表空间名 online;

SQL>alter tablespace 表空间名 read only

SQL>alter tablespace 表空间名 read write;

维护数据的完整性

约束

not null(非空) unique(唯一) primary key(主键)foreign key(外键) 表级定义/列级定义

check

SQL>create table goods

(goodsId char(8) primary key,

goodsName() varchar2(30),

unitprice number(10,2) check (unitprice>0),

category varchar2(8),

provider varchar2(30)

);

SQL>create table custumer

(custumerId char(8) primary key,

name varchar2(50) not null,

provider varchar2(50),

email varchar2(50) unique,

sex char(2) default '男' check (sex in ('男','女')).

cardId char(18)

);

SQL>create table purchase

( custumerId char(8) references custumer(custumerId),

goodsId char(8) references goods(goodId),

nums number(10) check (nums between 1 and 30)

);

SQL>alter table goods modify goodsName not null;

SQL>alter table customer add constraint un_check unique(cardId);

SQL>alter table customer add constraint un_check check (address in ('','','')); 删除约束

SQL> alter table customer drop constraint un_check;

索引 加速数据存取

单列索引 SQL>create index nameindex on customer(name);

复合索引 SQL>create index nameindex on emp(name,job);

使用原则:

大表使用索引,经常使用的列建索引

触发器

应用程序(过程、函数)

权限 SQL> select * from system_privilege_map order by name;

角色 SQL> select * from dba_roles;

connect

resource

dba .ect

系统权限(权限不级联回收)SQL>grant create session to sb with admin option;

对象权限(权限级联回收)SQL>grant select on scott.emp to sb with grant option; PL/SQL

procedural language/sql 过程化语言

1.过程,函数,触发器是pl/sql编写

2.过程,函数,触发器是在oracle中

3.pl/sql是非常强大的数据库过程语言

4.过程,函数可以在java程序中调用

创建一个简单的表 SQL>create table mytest(name varchar2(20),passwd varchar2(10)); 创建过程 SQL>create or replace procedure proname is

begin

--执行部分

insert into mytest values('123','123');

end;

/

SQL>show error;--显示错误

调用该过程

SQL>exec 过程名(参数值1,参数值2,....);

SQL>call 过程名(参数值1,参数值2,....);

块编程

三部分组成:定义部分,执行部分,例外处理

declare(可选)

定义部分:定义常量,变量,游标,例外....

begin

执行部分:要执行的pl/sql语句和sql语句

exception(可选)

例外处理部分:处理运行的各种错误

end;

SQL> set serveroutput on;--打开输出选项

SQL>

SQL> begin

2 dbms_output.put_line('hello world');

3 end;

4 /

hello world

PL/SQL procedure successfully completed

SQL>declare--定义变量

2 v_ename varchar2(10);

3begin--执行部分

4 select ename into v_ename from emp where empno=&no;

5 dbms_output.put_line('用户名'||v_ename);

6 end;

7 /

预定义异常no_data_found

declare--定义变量

v_ename varchar2(10);

begin--执行部分

select ename into v_ename from emp where empno=&no;

dbms_output.put_line('用户名'||v_ename);

exception

when no_data_found then

dbms_output.put_line('未发现该编号');

end;

过程

用于执行特定的操作,当建立过程时,既可以指定输入参数(in)也可以指定输出参数(out)。 使用create procedure命令建立过程

存储过程

SQL> create procedure pro_select(proname varchar2,newsal number) is

2 begin

3 update emp set sal=newsal where ename=proname;

4 end;

5 /

Procedure created

函数

SQL> create function fun (funName varchar2) return number is toalsal number(7,2);

2 begin

3 select sal *12+nvl(comm,0)*12 into toalsal from emp where ename=funName;

4 return toalsal;

5 end;

6 /

Function created

SQL>var abc number;

SQL> call fun('SCOTT') into:abc;

Method called

abc

---------

36000

在逻辑上组合过程和函数

procedure pro_sal(name varchar2,newsal number)

is

begin

update emp set sal=newsal where ename=name;

end;

function fun_income(name varchar2)return number is

annual_salary number;

begin

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

end;

end;

标量(scalar)

定义并使用标量(scalar)

v_ename varchar2(10);变长字符串

v_sal number(6,2);定义一个小数

v_sal number(6,2):=5.4;定义一个小数并初始化

v_hiredate date;定义一个日期类型

v_valid boolean not null default false;定义一个布尔变量,不能为空,初始值为false

declare

c_taxrate number(3,2):=0.03;

v_name varchar2(10);

v_sal number(7,2);

v_taxsal number(7,2);

begin

select ename,sal into v_name,v_sal from emp where empno=&npo;

v_taxsal:=v_sal*c_taxrate;

dbms_output.put_line('姓名'||v_name||'工资'||v_sal||'交税'||v_taxsal);

end;

SQL> set serveroutput on;

SQL>

SQL> declare

2 c_taxrate number(3,2):=0.03;

3 v_name varchar2(10);

4 v_sal number(7,2);

5 v_taxsal number(7,2);

6 begin

7 select ename,sal into v_name,v_sal from emp where empno=&npo;

8 v_taxsal:=v_sal*c_taxrate;

9 dbms_output.put_line('姓名'||v_name||'工资'||v_sal||'交税'||v_taxsal);

10 end;

11 /

PL/SQL procedure successfully completed

declare

c_taxrate number(3,2):=0.03;

v_name emp.ename%type;

v_sal emp.sal%type;--与表中数据类型保持一致

v_taxsal number(7,2);

begin

select ename,sal into v_name,v_sal from emp where empno=&npo;

v_taxsal:=v_sal*c_taxrate;

dbms_output.put_line('姓名'||v_name||'工资'||v_sal||'交税'||v_taxsal);

end;

复合变量(composite)

pl/sql记录

类似于高级语言种结构体

SQL> declare

2 type emp_record_type is record(name emp.ename%type,sal emp.sal%type);

3 reco emp_record_type;

4 begin

5 select ename,sal into reco from emp where empno=7788;

6 dbms_output.put_line('姓名'||https://www.doczj.com/doc/6316270514.html,||'工资'||reco.sal);

7 end;

8 /

姓名SCOTT工资3000

PL/SQL procedure successfully completed

pl/sql表

相当于高级语言的数组

SQL> declare

2 type table_type is table of emp.ename%type index by binary_integer;--表示下标是整数

3 ename_table_type table_type;

4 begin

5 select ename into ename_table_type(0) from emp where empno=7788;

6 dbms_output.put_line('员工姓名'||ename_table_type(0));

7 end;

8 /

员工姓名SCOTT

PL/SQL procedure successfully completed

参照变量

游标变量(ref cursor)

SQL> declare

2 type emp_cursor is ref cursor;--游标变量

3 emp_cursor_test emp_cursor;

4 v_emame emp.ename%type;

5 v_sal emp.sal%type;

7 open emp_cursor_test for select ename,sal from emp where deptno=&no;

8 loop

9 fetch emp_cursor_test into v_emame,v_sal;

10 exit when emp_cursor_test%notfound;

11 dbms_output.put_line('姓名'||v_emame||'工资'||v_sal);

12 end loop;

13 end;

14 /

姓名CLARK工资2450

姓名KING工资5000

姓名MILLER工资1300

PL/SQL procedure successfully completed

PL/SQL进阶

控制结构

1.条件分支

if-then

if-then-else

if-then-elsif-else

SQL> create or replace procedure pro_select(proname varchar2) is

2 v_sal emp.sal%type;

3 begin

4 select sal into v_sal from emp where ename=proname;

5 if v_sal<4000 then

6 update emp set sal=sal*1.1 where ename=proname;

7 end if;

8 end;

9 /

Procedure created

create or replace procedure pro_select(proname varchar2)is

v_comm https://www.doczj.com/doc/6316270514.html,m%type;

begin

select comm into v_comm from emp where ename=proname;

if v_comm<>0then

update emp set comm=comm+100where ename=proname;

else

update emp set comm=comm+100where ename=proname;

end if;

end;

循环语句

loop-endloop;

create or replace procedure pro_select(proname varchar2)is

v_num number:=1;

begin

loop

exit when v_num=10;

v_num:=v_num+1;

end loop;

end;

while循环

create or replace procedure pro_select(proname varchar2)is v_num number:=11;

begin

while v_num<=20loop

insert into users(,)values(v_num,proname);

v_num:=v_num+1;

end loop;

end;

for循环

goto语句

declare

i number:=1;

begin

loop

dbms_output.put_line('i='||i);

if i=10then

goto loop_end;

end if;

i:=i+1;

end loop;

<>

dbms_output.put_line('loop end');

end;

null

SQL> declare

2 v_sal emp.sal%type;

3 begin

4 select sal into v_sal from emp where empno=&empno;

5 if v_sal<4000 then

6 update emp set sal=sal*1.1 where ename=proname;

7 else

8 null;

9 end if;

10 end;

11 /

create or replace procedure pro_select(proempno in number,proname out varchar2)is

begin

select ename intoproname from emp where empno=prompno;

end;

SQL>select * from (select emp1.*,rownum rn from (select * from emp) emp1 where rownum <=10) where rn>=6;

SQL> create or replace package cursorpack as

2 type cursorpoint is ref cursor;

3 end cursorpack;

4 /

Package created

SQL> create or replace procedure fenye

2 (tablename in varchar2,--表名称

3 recordnum in number,--一页显示记录数

4 pagenow in number,--当前页码

5 recordcount out number,--总记录数

6 pagecount out number,--总页数

7 p_cursor out cursorpack.cursorpoint--游标

8 ) is

9 v_sql varchar2(1000);--sql语句

10 v_begin number:=(pagenow-1)*recordnum+1;

11 v_end number:=pagenow*recordnum;

12 begin

13 v_sql:='select * from (select emp1.*,rownum rn from (select * from emp) emp1 where rownum <='||v_end||') where rn>='||v_begin;

14 open p_cursor for v_sql;

15 v_sql:='select count(*) from '||tablename;

16 execute immediate v_sql into recordcount;

17 if mod(recordcount,recordnum)=0 then

18 pagecount:=recordcount/recordnum;

19 else

20 pagecount:=recordcount/recordnum+1;

21 end if;

22 close p_cursor;

23 end;

24 /

Procedure created

例外

预定义例外

declare

v_name emp.ename%type;

begin

select ename into v_ename from emp where empno=&no;

dbms_output.put_line('姓名'||v_name);

exception

end;

case_not_found

cursor_already_open 游标已经存在

dup_val_on_index 唯一索引值所对应的列上插入重复值

invaild_cursor 在不合法的游标上执行操作。例:游标没有打开而提取数据 invaild_number 输入数据不合法

too_many_rows 返回超过一行

zero_divide 除数为零

value_error变量的长度不足以存储返回值

其他预定义例外

login denide 用户非法登录

not logged on 无用户登录

time on resource 链接资源超时

自定义例外

create or replace procedure excep(excepNo number)is

myexcep exception;

begin

update emp set sal=sal+1000where empno=excepNo;

if sql%notfound then

raise myexcep;

end if;

exception

when myexcep then

dbms_output.put_line('没有更新用户');

end;

Oracle视图

视图是一个虚拟表,内容有查询定义。

表需要占用空间,视图不需要

视图不能建立索引

视图有利于提高安全性

create view myview as select*from emp where sal<1000;

oracle系统表和视图说明

1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。 3.视图的作用 用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下: 通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制 隐藏数据复杂性 视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 简化用户的SQL 语句 用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。 以不同的角度来显示基表中的数据 视图的列名可以被任意改变,而不会影响此视图的基表 使应用程序不会受基表定义改变的影响 在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。 保存复杂查询 一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

Oracle BIEE官方文档学习笔记-创建RPD文件

Created By Benny_Zhou 仅为个人学习分享交流,请勿用作商业用途。 1.创建RPD 文件的物理层 物理层定义了BI 查询的数据来源。 建议通过导入数据库或者其他数据来源的元数据的方式产生物理层。 可以从已有的数据源中导入(部分)模型。 可以在物理层手工创建对象。 当你导入元数据后,很多数据源的属性会根据导入过程中收集的信息自动配置。导入之后,仍然可以定义物理数据源的其他属性,比如连接关系等。物理层可以存在包括数据库、平面文件(Flat File ),XML 文档等多个来源。 1.1 创建新的RPD 文件 打开BI 管理器-文件-新建-输入名称- 输入密码,点击下一步 1.2 导入元数据 选择连接类型为OCI 10g/11g ; 输入数据源名称orcl ,数据源名称与tnsnames.ora 中的Oracle 数据库实例名称一致; 输入用户名和密码,点击下一步; 接受默认元数据类型,点击下一步;(主键和外键是否需要导入?) 选择需要导入的表,下一步; Creating a Repository Using the Oracle BI 11gAdministration Tool/创 建RPD 文件 2014年7月8日 16:48

选择需要导入的表,下一步; 弹出连接池窗口,接受默认,下一步; 出现导入信息,导入完成后,展开查看表是否成功导入。 1.3 验证连接 选择工具-更新所有行;

更新完成后,鼠标悬停在表上,观察行信息中的更新时间; 展开表,右键查看数据; 1.4 创建别名 鼠标点在表上,右键选择新对象-别名;输入别名;输入描述。 1.5 创建键和连接 在物理层选择几个表,右键选择物理图表-仅限所选对象; 需要调整物理图表中的对象,可以再工具栏中使用放大、缩小、适合、全部隐藏、全部展开等等 点击工具栏中的新建连接,先点击F1 Revenue,然后点击D1 Time,物理外键窗口打开。 注意先点击哪个表是有关系的。连接产生了1:N的关系,将第一个表的主键列和第二个表的外键列连接。

Oracle创建视图

Oracle创建视图 在本练习中,将在HR模式中练习如何创建视图,查询视图的定义,并对视图进行更新。 (1)创建一个视图EMPLOYEES_IT,该视图是基于HR模式中的EMPLOYEES表,并且该视图只包括那些部门为IT的员工信息。在创建视图时使用WITH CHECK OPTION,防止更新视图时,输入非IT部门的员工信息。 create or replace view employees_it as select * from employees where department_id =( select department_id from departments where departments.department_name='IT') with check option; (2)创建一个联接视图EMP_DEPT,它包含EMPLOYEES表中的列和DEPARTMENTS 表中的DNAME列。 create or replace view emp_dept as select t1.employee_id,t1.first_name,https://www.doczj.com/doc/6316270514.html,st_name,t1.email, t1.phone_number,t1.hire_date,t1.job_id,t1.salary,t2.department_name from employees t1,departments t2 where t1.department_id=t2.department_id with check option; (3)Oracle针对创建的视图,只在数据字典中存储其定义。输入并执行如下的语句查看创建的视图定义: select text from user_views where view_name=UPPER('emp_dept'); (4)查看视图各个列是否允许更新。 col owner format a20 col table_name format a20 col column_name format a20 select * from user_updatable_columns where table_name=UPPER('emp_dept');

(Oracle数据库管理)玩转实战教程学习笔记最全版

(O管理)玩转实战教程(韩顺平)学习笔记

韩顺平—玩转oracle视频教程笔记 一:Oracle认证,与其它数据库比较,安装 oracle的卸载 1.停止所有与ORACLE相关的服务。 2. 使用OUI(Oracle Universal Installer)卸载Oracle软件。 “开始”->“程序”->“Oracle-OraDb110g_home1|Oracle installation product|Universal installer. 3.删除注册表内容。运行regedit命令,删除下面内容:HKEY_LOCAL_MACHINE|SOFTWARE|ORACLE注册表键,删除此键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services,删除Services键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services|Eventlog|Application,删除此键下所有以oracle为首的键。 HKEY_CLASSES_ROOT,删除此键下所有以Ora,Oracle,Orcl,EnumOra 为前缀的键。 HKEY_CURRENT_USER|Software| Microsoft|Windows|CurrentVersion|Explorer|MenuOrder|Start Menu|Programs,删除此键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SOFTWARE|ODBC|ODBCINST.INI注册表键,删除了

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、使用外连接

oracle的sqlplus学习笔记

使用SQLPLUS 可以用它运行SQL查询和PL/SQL代码块并接收结果信息 可以发布DBA命令并自动工作 可以启动和关闭数据库 一种创建数据库管理报告的便利方法 设置环境变量 在调用SQLplus前,必须正确设置oracle环境变量, 包括设置ORACLE_SID,ORACLE_HOME和LD_LIBBARY_PATH,有时还须设置NLS_LANG和ORA_NLS11 用CONNECT(conn)命令连接 CONNECT(conn)命令可以以一个不同的用户身份进行连接 例: SQL> conn scott/tiger 已连接。 SQL> connect scott/tiger 已连接。 SQL*Plus登录模式 C:\>sqlplus -h SQL*Plus: Release 10.2.0.1.0 - Production Copyright (c) 1982, 2005, Oracle. All rights reserved. 用法1: sqlplus -H | -V -H 显示SQL*Plus 版本和用法帮助。 -V 显示SQL*Plus 版本。 为: ([/][@] | /) [AS SYSDBA | AS SYSOPER] | /NOLOG 指定数据库帐户用户名, 口令和数据库连接 的连接标识符。如果没有连接 标识符, SQL*Plus 将连接到默认数据库。 AS SYSDBA 和AS SYSOPER 选项是数据库管理 权限。

/NOLOG 选项可启动SQL*Plus 而不连接到 数据库。 为: @|[.] [ ...] 使用将分配给脚本中的替代变量的指定参数 从Web 服务器(URL) 或本地文件系统(filename.ext) 运行指定的SQL*Plus 脚本。 在启动SQL*Plus 并且执行CONNECT 命令后, 将运行站点概要 文件(例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件 (例如, 工作目录中的login.sql)。这些文件 可包含SQL*Plus 命令。 SQLPLUS的执行操作 一条SQL语句由一个分号(;)或一个反斜杠(/)结束 一个PL/SQL块由一个反斜杠(/)结束 可以使用连字符(-)作为语句行的继续字符 例: SQL> select 200 - <==此时sqlplus自动将'-'字符解释成继续字符并发布一条错误信息 > 100 from dual; select 200 100 from dual * 第 1 行出现错误: ORA-00923: 未找到要求的FROM 关键字 SQL> select 200 - - > 100 from dual; 200-100 ---------- 100 退出SQLPlus 在SQL*Plus输入exit(quit)命令正常退出会话,则事务立即被提交.如果不打算提交事务,必须在退出前执行rollback命令,就算autocommit设置值为off也是如此.在使用exit/quit时,会出现以下情况 ?所有未决的更改被回滚或提交; ?用户退出oraclesqlplus会话终止 ?控制权返回到操作系统

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中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图

oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图(https://www.doczj.com/doc/6316270514.html,/gzz%5Fgzz/blog/item/1f6ef92a67599392033bf6de.html) 2009年08月10日星期一 17:06 oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图dba_开头 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session 会话审计结果信息 dba_indexes 用户模式的索引信息 user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息 user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 关于这个还涉及到两个常用的例子如下: 1、oracle中查询某个字段属于哪个表 Sql代码 select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%'); select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like

oracle笔记七(其他)

1.如何限定特定IP访问数据库 可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqlnet.ora: 增加如下内容: tcp.validnode_checking=yes #允许访问的ip tcp.inited_nodes=(ip1,ip2,...) #不允许访问的ip tcp.excluded_nodes=(ip1,ip2,...) 2.如何穿过防火墙连接数据库 这个问题只会在WIN平台出现,UNIX平台会自动解决。 解决方法: 在服务器端的SQLNET.ORA应类似 SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) TRACE_LEVEL_CLIENT = 16 注册表的HOME0加[HKEY_LOCAL_MACHINE] USE_SHARED_SOCKET=TRUE 3.如何利用hostname方式连接数据库 host name方式只支持tcp/ip协议的小局域网 修改listener.ora中的如下信息 (SID_DESC = (GLOBAL_DBNAME = ur_hostname) --你的机器名 (ORACLE_HOME = E:\oracle\ora92) --oracle home (SID_NAME = orcl) --sid name ) 然后在客户端 的sqlnet.ora中,确保有 NAMES.DIRECTORY_PATH= (HOSTNAME) 你就可以利用数据库服务器的名称访问数据库了 4.dbms_repcat_admin能带来什么安全隐患 如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。 以下情况可能获得该包的执行权限: 1、在sys下grant execute on dbms_repcat_admin to public[|user_name] 2、用户拥有execute any procedure特权(仅限于9i以下,9i必须显示授权) 如果用户通过执行如下语句: exec sys.dbms_repcat_admin.grant_admin_any_schema('user_name'); 该用户将获得极大的系统特权 可以从user_sys_privs中获得详细信息

Oracle EBS常用表和视图

fnd_user 系统用户表 fnd_application 应用信息表 FND_PROFILE_OPTIONS_VL 系统配置文件 fnd_menus 菜单 fnd_menu_entries_tl FND_NEW_MESSAGES 消息表 FND_FORM 表单表 FND_CONCURRENT_PROGRAMS_VL 并发程序视图 FND_CONCURRENT_PROGRAMS_TL FND_CONCURRENT_PROGRAMS FND_DESCR_FLEX_COL_USAGE_VL FND_DESCR_FLEX_COL_USAGE_TL FND_DESCR_FLEX_COLUMN_USAGES FND_EXECUTABLES_FORM_V 可执行并发程序视图FND_EXECUTABLES_TL FND_EXECUTABLES FND_DESCRIPTIVE_FLEXS FND_CONC_REQ_SUMMARY_V 并发请求视图FND_CONCURRENT_REQUESTS FND_RESPONSIBILITY 职责表

FND_RESPONSIBILITY_VL 职责FND_USER_RESP_GROUPS 用户职责 fnd_flex_value_sets 值集表 FND_FLEX_VALUES FND_IREP_ALL_INTERFACES 接口表 FND_IREP_CLASSES Fnd_Irep_Classes_Tl fnd_territories_vl 国家视图 fnd_log_messages 日志表 fnd_form_functions 功能 FND_DOCUMENT_SEQUENCES 单据序列 FND_DOC_SEQUENCE_ASSIGNMENTS 序列分配 fnd_id_flexs 关键弹性域定义表 FND_ID_FLEX_STRUCTURES 弹性域结构表 FND_ID_FLEX_SEGMENTS 弹性域段表 fnd_descriptive_flexs 描述性弹性域属性表 FND_DESCR_FLEX_CONTEXTS 弹性域列类别表 FND_DESCR_FLEX_COLUMN_USAGES 弹性域列类别属性表FND_FLEX_VALUE_SETS 值集表 FND_FLEX_VALUES 值表 Fnd_Flex_Values_Tl 值描述表

Oracle数据库学习笔记

Oracle数据库学习笔记 作者:高达 第一天: DBMS--数据库管理系统: Date base Manage System 数据模型: (1)层次模型类似于“倒树”型的结构 (2)网状模型 (3)关系模型RDBMS--Relation Date base System 记录和记录之间通过属性之间的关系来进行连接,保证数据独立性,并形成数据集之间的关系。 主键:关键词--PRIMARY KEY 用于行的区分,不会重复。主键可以由两列组成,叫做组合键。主键非空。如果为空则失去实体完整性。 外键:关键词--FOREIGN KEY 外键表示两个表之间的相关联系。外键的范围不能超过主键的范围,如果超过则失去引用完整性。 完整性: 是为保证数据库中数据的正确性和一致性。 (1).实体完整性: 数据行不能存在重复,也不能为空。即PK不重复不为空。

(2).引用完整性: 指建立两个关系建立联系的主外键的约束 1.要求子表中的相关项必须在主表中存在。 2.如果建立了主表和子表的关系,则:a.子表中的相关项目的数据,在主表中必须存在;b.主表中相关项的数据更改了,则子表对应的数据项也应当随之更改;c.在删除子表之前,不能够删除主表。 (3).域完整性: 保证表中数据的合理性 check 检查 default 默认 not null 不为空 unique 唯一约束 (4).自定义完整性: 根据用户需要自己定义。除了上述关键字,可以使用触发器来编写约束。 约束:关键词--CONSTRAINT 在创建表的时候添加约束。 目的: 确保表中数据的完整型 常用约束类型: 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空。 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束。 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”。外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列。 不为空(not null):不可以为空。

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数据库学习笔记心得

select* |字段表名 from 表名 where 布尔表达式【条件】 externalcandidate 职员相关信息 contractrecruiter 猎头公司 查看表里所有字段 describe[描述] contractrecruiter select cname,nperecentagecharge from contractrecruiter 不显示原来名字,显示现在名字【用AS】 select cname as "Recruiter Name",nperecentagecharge as "Hire Fees" from contractrecruiter 不显示原来名字,显示现在名字【可不用AS】 select cname "Recruiter Name",nperecentagecharge "Hire Fees" from contractrecruiter 【双引号是否写】 双引号是为了区分大小写 职位表 position select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position

select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position 显示非重复运行 查询来源地的人数 describe externalcandidate 查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】select distinct ccity,cstate from externalcandidate 运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate 学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California' 一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1月-70'

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

Oracle常用数据字典表(系统表或系统视图)及查询SQL

Oracle常用数据字典表(系统表或系统视图)及查询SQL 2014年12月15日?数据库?共4187字?暂无评论?阅读861 次 文章目录 ?数据字典分类 ?dba_开头 ?user_开头 ?v$开头 ?all_开头 ?session_开头 ?index_开头 ?伪表 ?数据字典常用SQL查询 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息的视图等。 数据字典系统表,保存在system表空间中。查询所有数据字典可用语句“select * from dictionary;”。 数据字典分类 数据字典主要可分为四部分: 1)内部RDBMS表:x$*,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。

2)数据字典表:*$,如tab$,obj$,ts$等,用来存储表、索引、约束以及其他数据库结构的信息。 3)动态性能视图:gv$*,v$*,记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 4)数据字典视图:user_*、all_*、dba_*,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。 数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)。 数据字典视图可分为静态数据字典视图和动态数据字典视图。 静态数据字典是指在用户访问数据字典时内容不会发生改变。这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。 静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*(该用户方案对象的信息)、all_*(该用户可以访问的所有对象的信息)、dba_*(全部数据库对象的信息)。 动态数据字典是Oracle包含的一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。 dba_开头 dba_users数据库用户信息

oracle数据库工作原理

oracle工作原理 (2007-05-18 08:47:40) 转载▼ 分类:计算机技术 第一篇Oracle架构总览 先让我们来看一张图 这张就是Oracle 9i的架构全图。看上去,很繁杂。是的,是这样的。现在让我们来梳理一下: 一、数据库、表空间、数据文件 1.数据库 数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。 数据库的数据存储在表中。数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。数据以行(我们通常称为记录)的方式存储在表中。表之间可以相互关联。以上就是关系模型数据库的一个最简单的描述。 当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。关于OO型数据库,以后利用专门的篇幅来讨论。一般情况下我们的讨论都基于关系模型。 2.表空间、文件 无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。这些逻辑划分称作表空间。

表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。 为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。在Oracle7.2以后,数据文件创建可以改变大小。创建新的表空间需要创建新的数 据文件。 数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。 如果数据库存储在多个表空间中,可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割。在规划和协调数据库I/O请求的方法中,上述的数据分割是一种很重要的方法。数据库、表空间、文件之间的关系如下图所示: 二、数据库实例 为了访问数据库中的数据,Oracle使用一组所有用户共享的后台进程。此外,还有一些存储结构(统 称为System Gloabl Area,即SGA),用来存储最近从数据库查询的数据。数据块缓存区和SQL共享池(Shared SQL Pool)是SGA的最大部分,一般占SGA内存的95%以上。通过减少对数据文件的I/O次数,这些存储区域可以改善数据库的性能。 数据库实例(instance)也称作服务器(server),是用来访问数据库文件集的存储结构及后台进程的集合。一个数据库可以被多个实例访问(这是Oracle并行服务器选项)。实例与数据库的关系如下图所示: 决定实例大小及组成的参数存储的init.ora文件中(在9i中是spfile)。实例启动时需要读这个文件,并且在运行时可以由数据库管理员修改。对该文件的任何修改都只有在下一次启动时才启作用。实例的init.ora文件件通常包含实例的名字:如果一个实例名为orcl,那么init.ora文件通常被命名为initorcl.ora。另一个配置文件config.ora用来存放在数据库创建后就不再改变的变量值(如数据库的块 大小)。实例的config.ora文件通常也包含该实例的名字:如果实例的名字为orcl,则config.ora一般 将被命名为configorcl.ora。为了便于使用config.ora文件的设置值,在实例的init.ora文件中,该文件必须通过IFILE参数作为包含文件列出。

ORACLE数据库基础测试题oracle数据库复习题

ORACLE数据库基础测试题 提示:本题为ORACLE数据库基础测试题,适合初学者对基础知识进行测试,以便查漏补缺。 1、 DDL指得就是:()。 A、数据定义语言 B、数据操作语言 C、数据查询语言 D、数据控制语言 正确答案:A解析: 2、 下列创建表语句正确得就是:(). A、create table emp(id number(4),); B、createtable emp(id number(4)); C、alter table emp(id number(4)) ; D、alter tableemp(id number(4),) ;

正确答案:B解析: 3、 下列Oracle函数中能够返回两个字符串连接后得结果得就是:()。 A、initcap B、instr C、trim D、concat 正确答案:D解析: 4、 下列SQL语句得查询结果就是:()。selectround(45、925,0),trunc(45、925)fromdual; A、4545 B、4645 C、4546 D、46 46 正确答案:B解析:

5、 关于函数nvl(d1,d2)得用法说法正确得就是:()。 A、表示如果d1为null则d2必须为null B、表示如果d1为null则忽略d2 C、表示如果d1不为null则用d2替代 D、表示如果d1为null则用d2替代 正确答案:D解析: 6、 显示emp表得所有行,所有列,下列SQL语句正确得就是:()。 A、select*fromemp; B、select all、*from emp; C、selectallfromemp; D、select/* from emp; 正确答案:A解析: 7、 查询职员得姓名及其直接领导,如果没有直接领导得职员,则显示为“NoManager",下列SQL语句正确得就是:()。

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