alter alter user system identified by systempass;
systemûݵ½sqlplusִУ
Create table test_system(ename varchar2(20), mgrname varchar2(20)); Insert into test_system values(Ա,쵼);
select * from test_system; grant select on test_system to SCOTT; (10) revoke select on test_system from SCOTT; rollback;
عûãrevokeԶύ (11) drop table test_system; rollback; ͬϣ
2ݿϰ
ʵһ PL/SQLѵ
1. ʵĿ
ջıдPL/SQLɼ 2. ʵ鲽
(1) PL/SQLEMPְԱ'SMITH'Ĺ100Ԫύݿ; (2) MARTINӶ1500Ԫ乤Ϊ1500Ԫ;
(3) ѯְҵΪCLERKұ˾ܹʱְּ˾
֣½ıNAMEСַ𣺢ùWHILEѭʵ֣ùFORѭʵ֡ (4) 裨3У蹤Ϊ CLERKְԱǹ˾ƸԱ
ְԱΪMANAGER 3. ʵ
(1) £
declare
name varchar2(10):=SMITH; begin
update emp set sal=sal+100 where ename=name; commit; end;
5
(2) :
declare
salary number(7,2); begin select nvl(comm,0) into salary from emp where ename=MARTIN; if salary < 1500 then update emp set sal=1500 where ename=MARTIN; end if; commit; end; (3) :
WHILEѭʵ declare cursor c1 is
select e1.ename, e2.ename from emp e1,emp e2 where e1.job='CLERK' and e1.mgr=e2.empno and e1.hiredate < e2.hiredate; empname emp.ename%TYPE; mgrname emp.ename%TYPE; begin
open c1;
fetch c1 into empname,mgrname; while c1%FOUND loop insert into name values(empname, mgrname); fetch c1 into empname,mgrname; end loop; close c1; end;
FORѭʵ: declare cursor c1 is
select e1.ename empname, e2.ename mgrname from emp e1,emp e2 where e1.job='CLERK' and e1.mgr=e2.empno and e1.hiredate < e2.hiredate; emp_rec c1%ROWTYPE; begin
6
for emp_rec in c1 loop insert into name values(emp_rec.empname, emp_rec.mgrname); end loop; end; (4) :
declare edate date; sdate date; begin
select min(hiredate) into edate from emp;
select min(hiredate) into sdate from emp where job='CLERK';
if sdate = edate then update emp set job='MANAGER' where hiredate=sdate and job=CLERK; end if; end;
ʵ ݿϰ
1. ʵĿ
մͼݿİ취
˽صֵuser_objects, user_source, user_constraints 2. ʵ鲽
(1) EMPһԱ;ӦETABõ£
? Ա ? ? űţ ? ƣ
(2) ϱǰнΪEINDX
(3) EMPϱݵͼEVIEWҪûظ¼; (4) һESEQ
(5) ETABһдеȡֵEMPDEPTн
Ӧ䵽ETABС (6) ETABӵԼ
7
(7) EMPϱдһκζSalcommеģÿ
Ĵеݿûĵʱ䣬ĵûǰĺеֵ½һƱУȻ乤Ƿ 3. ʵ
(1) create table etab(
empname varchar2(10), mgrname varchar2(10), deptno number(2), deptname varchar2(14) );
(2) create index eindx on etab(empname,mgrname);
(3) create view eview as select distinct e1.ename empname,e2.ename
mgrname,e1.deptno deptno,dname deptname from emp e1,emp e2,dept where e1.mgr=e2.empno and e1.deptno=dept.deptno; (4) create sequence eseq increment by 1 start with 10000 maxvalue 19999; (5) alter table etab add( no number(5));
insert into etab select e1.ename empname,e2.ename mgrname,e1.deptno deptno,dname deptname,eseq.nextval from emp e1,emp e2,dept where e1.mgr=e2.empno and e1.deptno=dept.deptno
(6) alter table etab add ( constraint c1 primary key(no)); (7)
create table audit_emp ( database_user modify_date modify_user );
varchar2(30), date,
number(4),
sal_before_update number(7,2), sal_after_update number(7,2), comm_before_update number(7,2), comm_after_update number(7,2)
create or replace trigger audit_emp before update of sal, comm on emp for each row
8

