Oracle课程实验指导ä¹?- 百度文库 ÏÂÔØ±¾ÎÄ

Ò»¡¢Oracle»ù´¡

1¡¢SQLÓïÑÔ»ù´¡

ʵÑé×¼±¸

1¡¢ ÌáǰÕÒ°àÖ÷ÈÎÄõ½»ú·¿ÉÏ»ú¿¨¡¢µÇ¼·þÎñÆ÷µÄÓû§ÃûºÍÃÜÂë¡£ 2¡¢ ׼ʱµ½Ö¸¶¨»ú·¿£¬×÷ºÃʵÑé×¼±¸£¬½øÈëxp64ϵͳ£» 3¡¢ °´ÒÔϲ½ÖèµÇ¼Êý¾Ý¿â·þÎñÆ÷£º

(1) µÇ¼±¾µØÊý¾Ý¿â·þÎñÆ÷£º¿ªÊ¼->ÔËÐУ¬ÊäÈëcmd½øÈëDOS»·¾³ºóÊäÈ룺

sqlplus / as sysdba (2) ²é¿´SCOTTÓû§×´Ì¬£º

select username,account_status from dba_users where username='SCOTT'; Èôaccount_statusΪ¡®LOCKED¡¯£¬ÐÞ¸ÄÓû§µ½¡®OPEN¡¯×´Ì¬£º alter user SCOTT account unlock;

(3) ÒÔSCOTTÓû§Éí·ÝÔÚsqlplusÖеǽÊý¾Ý¿â£º

Óû§Ãû£ºscott

ÃÜ Â룺tiger

4¡¢ ³É¹¦µÇ¼ºó£¬ÉèÖúÃsqlplusµÄʹÓû·¾³;

(1) set pagesize 100 (2) set linesize 100

ʵÑéÒ» ²éѯÓï¾äÁ·Ï°

1. ʵÑéÄÚÈÝÓëÄ¿µÄ

ÊìÁ·Ê¹ÓÃselectÓï¾ä½øÐмòµ¥Ìõ¼þºÍ¸´ºÏÌõ¼þµÄ²éѯ²Ù×÷£¬ÕÆÎÕ×Ó²éѯ¡¢·Ö×é¼°º¯ÊýµÄÓ¦Óᣠ2. ʵÑé²½Öè

(1) ͨ¹ý²éÊý¾Ý×ÖµäÁ˽âSCOTTÓû§ÏÂÓµÓÐÄÇЩÊý¾Ý¿â¶ÔÏ󣬲¢Á˽âËùÓбí

µÄ½á¹¹£» (2) ²éѯemp±íÖÐËùÓÐÐÅÏ¢£¬²¢°´ÕÕÖ°Ô±ÐÕÃûµÄ×ÖĸÉýÐòÅÅÁУ»

1

(3) ÏÔʾËùÓв¿ÃÅÖеØÖ·²»ÒÔ¡°N¡±×Öĸ´òÍ·µÄ²¿ÃÅÐÅÏ¢£» (4) ²éѯ¹«Ë¾ÖÐËùÓÐÖ°Ô±Ëù׬¹¤×ʼ°Ëù´¦µÄ¹¤×ʼ¶±ð£¬ (5) ͳ¼Æ¹¤×ʼ¶±ðΪ4µÄ×ÜÈËÊý£»

(6) ÏÔʾ²¿ÃÅ30ÖÐËùÓÐÖ°Ô±µÄ¹¤×Ê×ܺͣ¬²¢Ê¹ÏÔʾ½á¹ûÒÔTOTAL30ΪÁÐÍ·¡£ (7) ²éѯ¹¤×ÊÓëÓ¶½ð×ܺ͵ÍÓÚ1000ÔªµÄÖ°Ô±ÃûÓî¡¢¹¤×Ê¡¢Ó¶½ðºÍËùÔÚ²¿Ãźš£ (8) ²éѯ1981Äê6ÔÂ30ÈÕÖ®ºóÊܹ͵ÄÖ°Ô±µÄ×î¸ß±¨³ê£¨°üÀ¨¹¤×ʺÍÓ¶½ð£©¡£ (9) ²éѯƽ¾ù¹¤×Ê´óÓÚ1500ÔªµÄ²¿ÃŵIJ¿Ãźţ¬Ö°Ô±ÈËÊýºÍƽ¾ù¹¤×Ê¡£ (10) ÏÔʾ¸÷²¿ÃŵIJ¿Ãźż°ËùÊô³§Ö°Ô±µÄƽ¾ù¹¤×Ê£¬²¢°´Æ½¾ùÖµÓÉ´óµ½Ð¡µÄ´Î

ÐòÅÅÁС£

(11) ²éѯEMP±íÖÐÔÚ²¿ÃÅ10ºÍ²¿ÃÅ20Öй¤×÷£¬ÇÒÔÚ1981Äê3ÔÂ30ÈÕÒÔºó

¹ÍÓõÄÖ°Ô±µÄÃû×Ö¡¢¹¤×Ê¡¢ÊܹÍÈÕÆÚ¡¢²¢°´ÕÕÊܹÍÈÕÆÚµÄÏȺó˳ÐòÅÅÐò¡£ (12) ²éѯ²¿ÃÅ20Öй¤×Ê´óÓڸò¿ÃÅÆ½¾ù¹¤×ʵÄÖ°Ô±ÐÅÏ¢£»

(13) ²éѯÄÜ»ñµÃºìÀû£¨¼´ÔÚBONUS±íÖдæÔÚ£©µÄÍÆÏúÔ±µÄÃû×Ö£¬ÊܹÍÈÕÆÚ¼°

¹¤×ʶ (14) ²éѯÔÚµÚ30ºÅ²¿Ãʤ×÷µÄËùÓÐÊܹÍʱ¼äÔçÓÚËûµÄÀϰåµÄÖ°Ô±µÄÃû×ÖºÍÊÜ

¹ÍÈÕÆÚ¼°ÆäÀϰåµÄÃû×Ö¼°ÊܹÍÈÕÆÚ¡£ (15) ²éѯ×îÏÈÊܹ͵ÄÖ°Ô±ÐÕÃû¼°ÊܹÍÈÕÆÚ¡£ 3. ʵÑé´ð°¸

(1) select * from cat; desc emp; desc dept; desc salgrade; ±í½á¹¹ÈçÏ£º

emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) dept(deptno,dname,loc) salgrade(grade,losal,hisal) bonus(ename,job,sal,comm); ˵Ã÷£ºcommΪӶ½ð

×¢Ò⣺ÈÕÆÚ1981-3-30°´¸ñʽ¡¯yyyy-mon-dd¡¯ÏÔʾ£¬Ó¢ÎÄϵͳ±íʾΪ¡®1981-March-30¡¯£¬¶øÖÐÎÄϵͳ±íʾΪ¡¯1981-3ÔÂ-30¡¯¡£ (2) select * from emp order by ename asc; (3) select * from dept where loc not like ¡®N%¡¯;

(4) select e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between

s.losal and s.hisal;

2

(5) select count(*) from emp e, salgrade s where s.grade=4 and e.sal between

s.losal and s.hisal; (6) select deptno, ename, sal+nvl(comm,0) total30 from emp where deptno=30; (7) select ename, sal, comm, deptno from emp where (sal+nvl(comm,0))<1000; (8) select max(sal+nvl(comm,0)) from emp where hiredate> to_date('1981-6-30',

'yyyy-mm-dd'); (9) select deptno,count(*),avg(sal) from emp group by deptno having avg(sal)

>1500; (10) select deptno,count(*),avg(sal) from emp group by deptno order by 3;

×¢Ò⣺ȱʡΪÉýÐòÅÅÁУ¬3±íʾµÚÈý¸ö±äÁ¿£¬group byÖв»ÄÜÓã» (11) select ename,sal,hiredate from emp where hiredate > to_date('1981-3-30',

'yyyy-mm-dd') and (deptno=10 or deptno=20) order by hiredate; (12) select * from emp where deptno=20 and sal > (select avg(sal) from emp where

deptno =20); (13) select ename,hiredate,sal from emp where job=¡¯SALESMAN¡¯ and ename in

(select ename from bonus); (14) select e.ename,e.hiredate,m.ename,m.hiredate from emp e,emp m where

e.deptno=30 and e.hiredate < m.hiredate and e.mgr=m.empno;

(15) select ename,hiredate from emp where hiredate=(select min(hiredate) from

emp);

ʵÑé¶þ DML/DDLÓï¾äÁ·Ï°

1. ʵÑéÄÚÈÝÓëÄ¿µÄ

ÊìÁ·Ê¹ÓÃinsert¡¢update¡¢deleteÓï¾ä¶ÔÊý¾Ý½øÐÐά»¤£¬²¢ÕÆÎÕ´´½¨ºÍɾ³ýÊý¾Ý¿â±íºÍÊÓͼµÄ·½·¨¡£ 2. ʵÑé²½Öè

(1) Ìí¼ÓÒ»Ìõ¼Ç¼µ½EMP±íÖУº»ù±¾ÐÅÏ¢ÈçÏ£º

? ÐÕÃû£ºKELLY£¬²¿ÃźÅ10£¬Ô±¹¤±àºÅ7935£¬¹¤×÷ΪCLERK£¬¾­Àí±à

ºÅΪ7782£¬¹ÍÓÃÈÕÆÚΪ82Äê5ÔÂ23ÈÕ£¬¹¤×Ê1300£¬Ã»ÓÐÓ¶½ð£» (2) ÐÞ¸ÄÔ±¹¤KELLYµÄÐÅÏ¢£¬½«ÆäÓ¶½ð¸ÄΪ0£» (3) ɾ³ýÃû×ÖΪKELLYµÄÔ±¹¤ÐÅÏ¢£»

3

(4) ³·Ïú£¨3£©ÖеÄɾ³ý²Ù×÷£¬»¹Ô­KELLYµÄÐÅÏ¢£»Èç¹û£¨3£©ÖвÙ×÷ÓÃcommit

Ìá½»ÊÇ·ñ»¹¿ÉÒÔ»¹Ô­KELLYµÄÐÅÏ¢£¬Çë×ÔÐÐʵÑéÑéÖ¤¡£ (5) ÓÃreplaceº¯Êý½«job×Ö¶ÎÖеÄÄÚÈݼÓÉÏÒýºÅ¡°¡±£¬²é¿´Ð§¹û£¬²¢»Ø¹ö£» (6) ½«²¿ÃÅ30µÄËùÓÐÖ°Ô±µÄ¹¤×ʶ¼ÌáÉý10£¥¡£

(7) ´´½¨±íname(ename varchar2(20), mgrname varchar2(20));

(8) ½«emp±íÖÐְҵΪCLERK£¬ÇÒ±ÈËûµÄÉÏ˾ÊܹÍʱ¼äÔçµÄÖ°¹¤µÄÃû×Ö¼°Æä

ÉÏ˾µÄÃû×Ö´æÈëн¨µÄ±íNAMEÖУ»²é¿´name±íÖеÄÄÚÈÝ¡£ (9) £¬ÔÚsystemÓû§Ï´´½¨±ítest_system£¬×Ö¶Î×Ô¼º¶¨Ò壬Ȼºó²åÈëÒ»ÌõÊý¾Ý£¬

²¢½«±ítest_systemµÄ²é¿´È¨ÏÞÊÚȨ¸øSCOTTÓû§£¬ÓÃSCOTTÓû§²é¿´

±ítest_systemÄÚÈÝ£»

(10) ÔÚsystemÓû§Ï³·Ïú£¨9£©ÖÐÊÚÓèµÄȨÏÞ£¬¿´¿´ÊÇ·ñ¿ÉÒÔ³·Ïú¸Ã²Ù×÷£¬²¢

½âÊÍ·¢ÉúµÄÏÖÏó£» (11) ÔÚsystemÓû§ÏÂɾ³ý±ítest_system±í£¬¿´¿´ÊÇ·ñ¿ÉÒÔ³·Ïú¸Ã²Ù×÷£¬²¢½â

ÊÍ·¢ÉúµÄÏÖÏó£» 3. ʵÑé´ð°¸

(1) insert into emp values(7935, 'kelly', 'CLERK', 7782, to_date('23-05-1982',

'dd-mm-yyyy'), 1300, NULL, 10); (2) update emp set comm=0 where ename=¡¯KELLY¡¯; (3) delete from emp where ename =¡¯KELLY¡¯; (4) rollback;

×¢Ò⣺Èç¹ûÓÃcommitÌá½»ÁËÊDz»ÄܻعöµÄ¡£

(5) update emp set job=replace(job,job,¡¯ ¡± ¡¯||job||¡¯ ¡± ¡¯); select * from emp; rollback; ×¢£ºjob×Ӷγ¤¶È²»¹»Ê±ÐëÐ޸ıí½á¹¹alter table emp modify(job varchar2(20))¡£ (6) update emp set sal=sal*1.1 where deptno=30;

(7) create table name(ename varchar2(20), mgrname varchar2(20));

(8) insert into name select e1.ename, e2.ename from emp e1,emp e2 where

e1.job='CLERK' and e1.mgr=e2.empno and e1.hiredate < e2.hiredate; (9) ÐÞ¸ÄsystemÓû§ÃÜÂëΪsystempass: ¿ªÊ¼->ÔËÐУ¬ÊäÈëcmd½øÈëDOS»·¾³

ºóÊäÈ룺 sqlplus / as sysdba

4