Ò»¡¢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