rm rm question_1 rm create table j (jno varchar2(5) not null primary key, jname varchar2(10) not null, city varchar2(10) default ' '); load data infile * into table j fields terminated by ',' optionally enclosed by '"' (jno,jname,city) begindata j1,sorter,paris j2,punch,rome j3,reader,athens j4,console,athens j5,collator,london j6,terminal,oslo j7,tape,london create table p (pno varchar2(5) not null primary key, pname varchar2(10) not null, color varchar2(10) default ' ', weight number(5,0) default null, city varchar2(10) default ' '); load data infile * into table p fields terminated by ',' optionally enclosed by '"' (pno,pname,color,weight,city) begindata p1,nut,red,12,london p2,bolt,green,17,paris p3,screw,blue,17,rome p4,screw,red,14,london p5,cam,blue,12,paris p6,cog,red,19,london create table s (sno varchar2(5) not null primary key, sname varchar2(10) not null, status number(5,0) default null, city varchar2(10) default ' '); load data infile * into table s fields terminated by ','optionally enclosed by '"' (sno,sname,status,city) begindata s1,smith,20,london s2,jones,10,paris s3,blake,30,paris s4,clark,20,london s5,adams,30,athens create table spj (sno varchar2(5) not null, pno varchar2(5) not null, jno varchar2(5) not null, qty number(5,0) default null, primary key(sno,pno,jno)); load data infile * into table spj fields terminated by ',' optionally enclosed by '"' (sno,pno,jno,qty) begindata s1,p1,j1,200 s1,p1,j4,700 s2,p3,j1,400 s2,p3,j2,200 s2,p3,j3,200 s2,p3,j4,500 s2,p3,j5,600 s2,p3,j6,400 s2,p3,j7,800 s2,p5,j2,100 s3,p3,j1,200 s3,p4,j2,500 s4,p6,j3,300 s4,p6,j7,300 s5,p2,j2,200 s5,p2,j4,100 s5,p5,j5,500 s5,p5,j7,100 s5,p6,j2,200 s5,p1,j4,100 s5,p3,j4,200 s5,p4,j4,800 s5,p5,j4,400 s5,p6,j4,500 rem rem question_2 rem create view project_in_london (jno,jname,city) as select jno,jname,city from j where city='london'; rem rem question_3 rem create view sp (sno,pno) as select distinct sno,pno from spj; rem rem question_4 rem create view project_city (jno,city) as select distinct j.jno,j.city from j,spj where j.jno=spj.jno and spj.sno= 's1' or spj.pno= 'p1'; rem rem question_5 rem create view supplier_part (sno,pno) as select distinct spj.sno,spj.pno from p,s,spj where p.pno=spj.pno and s.sno=spj.sno and s.city<>p.city; rem spool simple_q.lst rem question_6 rem select distinct j.*,spj.qty,s.*,p.* from j,spj,s,p where j.jno=spj.jno and spj.pno=p.pno and spj.sno=s.sno order by j.jno; rem rem question_7 rem select distinct j.*,spj.qty,s.*,p.* from j,spj,s,p where j.jno=spj.jno and spj.sno=s.sno and p.pno=spj.pno and j.city='london' order by j.jno; rem rem question_8 rem select distinct spj.sno from spj where jno='j1'; rem rem question_9 rem select * from spj where qty>=300 and qty<=750; rem rem question_10 rem select distinct color,city from p; rem rem question_11 rem select * from spj where not qty is null; rem rem question_12 rem select distinct jno,city from j where city like '_o%'; spool off rm rm output on simple queries from q6 to q12 rm JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j1 sorter paris 200 s1 smith 20 london p1 nut red 12 london j1 sorter paris 200 s3 blake 30 paris p3 screw blue 17 rome j1 sorter paris 400 s2 jones 10 paris p3 screw blue 17 rome JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j2 punch rome 100 s2 jones 10 paris p5 cam blue 12 paris j2 punch rome 200 s2 jones 10 paris p3 screw blue 17 rome j2 punch rome 200 s5 adams 30 athens p2 bolt green 17 paris JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j2 punch rome 200 s5 adams 30 athens p6 cog red 19 london j2 punch rome 500 s3 blake 30 paris p4 screw red 14 london j3 reader athens 200 s2 jones 10 paris p3 screw blue 17 rome JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j3 reader athens 300 s4 clark 20 london p6 cog red 19 london j4 console athens 100 s5 adams 30 athens p1 nut red 12 london j4 console athens 100 s5 adams 30 athens p2 bolt green 17 paris JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j4 console athens 200 s5 adams 30 athens p3 screw blue 17 rome j4 console athens 400 s5 adams 30 athens p5 cam blue 12 paris j4 console athens 500 s2 jones 10 paris p3 screw blue 17 rome JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j4 console athens 500 s5 adams 30 athens p6 cog red 19 london j4 console athens 700 s1 smith 20 london p1 nut red 12 london j4 console athens 800 s5 adams 30 athens p4 screw red 14 london JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j5 collator london 500 s5 adams 30 athens p5 cam blue 12 paris j5 collator london 600 s2 jones 10 paris p3 screw blue 17 rome j6 terminal oslo 400 s2 jones 10 paris p3 screw blue 17 rome JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j7 tape london 100 s5 adams 30 athens p5 cam blue 12 paris j7 tape london 300 s4 clark 20 london p6 cog red 19 london j7 tape london 800 s2 jones 10 paris p3 screw blue 17 rome 24 rows selected. JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j5 collator london 500 s5 adams 30 athens p5 cam blue 12 paris j5 collator london 600 s2 jones 10 paris p3 screw blue 17 rome j7 tape london 100 s5 adams 30 athens p5 cam blue 12 paris JNO JNAME CITY QTY SNO SNAME STATUS CITY ----- ---------- ---------- ---------- ----- ---------- ---------- ---------- PNO PNAME COLOR WEIGHT CITY ----- ---------- ---------- ---------- ---------- j7 tape london 300 s4 clark 20 london p6 cog red 19 london j7 tape london 800 s2 jones 10 paris p3 screw blue 17 rome SNO ----- s1 s2 s3 SNO PNO JNO QTY ----- ----- ----- ---------- s1 p1 j4 700 s2 p3 j1 400 s2 p3 j4 500 s2 p3 j5 600 s2 p3 j6 400 s3 p4 j2 500 s4 p6 j3 300 s4 p6 j7 300 s5 p5 j5 500 s5 p5 j4 400 s5 p6 j4 500 11 rows selected. COLOR CITY ---------- ---------- blue paris blue rome green paris red london SNO PNO JNO QTY ----- ----- ----- ---------- s1 p1 j1 200 s1 p1 j4 700 s2 p3 j1 400 s2 p3 j2 200 s2 p3 j3 200 s2 p3 j4 500 s2 p3 j5 600 s2 p3 j6 400 s2 p3 j7 800 s2 p5 j2 100 s3 p3 j1 200 SNO PNO JNO QTY ----- ----- ----- ---------- s3 p4 j2 500 s4 p6 j3 300 s4 p6 j7 300 s5 p2 j2 200 s5 p2 j4 100 s5 p5 j5 500 s5 p5 j7 100 s5 p6 j2 200 s5 p1 j4 100 s5 p3 j4 200 s5 p4 j4 800 SNO PNO JNO QTY ----- ----- ----- ---------- s5 p5 j4 400 s5 p6 j4 500 24 rows selected. JNO CITY ----- ---------- j2 rome j5 london j7 london rem spool joins.lst rem question_13 rem select distinct s.sno, p.pno, j.jno from s, p, j, spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and j.city=p.city and p.city=s.city; rem rem question_14 rem select distinct s.sno, p.pno, j.jno from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and not (s.city=p.city and p.city=j.city); rem rem question_15 rem select distinct s.sno, p.pno, j.jno from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and not (s.city=p.city or p.city=j.city or s.city=j.city); rem rem question_16 rem select distinct spj.pno from spj,s where spj.sno=s.sno and s.city='london'; rem rem question_17 rem select distinct spj.pno from s,spj,j where s.sno=spj.sno and j.jno=spj.jno and s.city='london' and j.city='london'; rem rem question_18 rem select distinct s.city,j.city from s,j,spj where s.sno=spj.sno and j.jno=spj.jno; rem rem question_19 rem select distinct spj.pno from s,spj,j where s.sno=spj.sno and j.jno=spj.jno and s.city=j.city; rem rem question_20 rem select distinct j.jno from s, j, spj where s.sno=spj.sno and j.jno=spj.jno and j.city<>s.city; rem rem question_21 rem select distinct spj.pno, spjx.pno from spj, spj spjx where spj.pno>spjx.pno and spj.sno=spjx.sno; spool off rem rem output on joins from q13 to q21 rem SNO PNO JNO ----- ----- ----- s4 p6 j7 SNO PNO JNO ----- ----- ----- s1 p1 j1 s1 p1 j4 s2 p3 j1 s2 p3 j2 s2 p3 j3 s2 p3 j4 s2 p3 j5 s2 p3 j6 s2 p3 j7 s2 p5 j2 s3 p3 j1 SNO PNO JNO ----- ----- ----- s3 p4 j2 s4 p6 j3 s5 p1 j4 s5 p2 j2 s5 p2 j4 s5 p3 j4 s5 p4 j4 s5 p5 j4 s5 p5 j5 s5 p5 j7 s5 p6 j2 SNO PNO JNO ----- ----- ----- s5 p6 j4 23 rows selected. SNO PNO JNO ----- ----- ----- s2 p3 j3 s2 p3 j4 s2 p3 j5 s2 p3 j6 s2 p3 j7 s3 p4 j2 s5 p2 j2 s5 p5 j5 s5 p5 j7 s5 p6 j2 10 rows selected. PNO ----- p1 p6 PNO ----- p6 CITY CITY ---------- ---------- athens athens athens london athens rome london athens london london london paris paris athens paris london paris oslo paris paris paris rome 11 rows selected. PNO ----- p1 p2 p3 p4 p5 p6 6 rows selected. JNO ----- j1 j2 j3 j4 j5 j6 j7 7 rows selected. PNO PNO ----- ----- p2 p1 p3 p1 p3 p2 p4 p1 p4 p2 p4 p3 p5 p1 p5 p2 p5 p3 p5 p4 p6 p1 PNO PNO ----- ----- p6 p2 p6 p3 p6 p4 p6 p5 15 rows selected. rem spool subq.lst rem question_22 rem select distinct j.jno from j where j.jno in (select spj.jno from spj where spj.sno='s1'); rem rem question_23 rem select distinct p.color from p where p.pno in (select spj.pno from spj where spj.sno='s1'); rem rem question_24 rem select distinct spj.pno from spj where spj.jno in (select j.jno from j where j.city='london'); rem rem question_25 rem select distinct spj.jno from spj where spj.pno in (select spj.pno from spj where spj.sno='s1'); rem rem question_26 rem select distinct spj.sno from spj where spj.pno in (select spj.pno from spj where spj.sno in (select spj.sno from spj where spj.pno in (select p.pno from p where p.color='red'))); rem rem question_27 rem select distinct s.sno from s where s.status < (select s.status from s where s.sno='s1'); rem rem question_28 rem select distinct spj.sno from spj where spj.pno= 'p1' and spj.qty > (select avg(spjx.qty) from spj spjx where spj.jno=spjx.jno and spjx.pno='p1'); rem rem question_29 rem select j.jno from j where not exists (select * from spj where spj.jno=j.jno and spj.pno in (select p.pno from p where p.color= 'red') and spj.sno in (select s.sno from s where s.city= 'london')); rem rem question_30 rem select distinct spjx.jno from spj spjx where not exists (select * from spj spjy where spjy.jno=spjx.jno and spjy.sno<>'s1'); rem rem question_31 rem select distinct spjx.pno from spj spjx where not exists (select * from j where j.city='london' and not exists (select * from spj spjy where spjy.pno=spjx.pno and spjy.jno=j.jno)); rem rem question_32 rem select distinct spjx.sno from spj spjx, p where exists (select p.pno from spj spjy where not exists (select j.jno from j where not exists (select * from spj spjz where spjz.sno=spjx.sno and spjz.pno=spjy.pno and spjz.jno=j.jno))); rem rem question_33 rem select distinct spjx.jno from spj spjx where not exists (select spjy.pno from spj spjy where spjy.sno='s1' and not exists (select * from spj spjz where spjz.pno=spjy.pno and spjz.jno=spjx.jno)); spool off rem rem output on subqueries from q22 to q33 rem JNO ----- j1 j4 COLOR ---------- red PNO ----- p3 p5 p6 JNO ----- j1 j4 SNO ----- s1 s2 s3 s4 s5 SNO ----- s2 SNO ----- s1 JNO ----- j2 j5 j6 no rows selected PNO ----- p3 p5 SNO ----- s2 JNO ----- j1 j4 rem spool builtin.lst rem question_34 rem select count (distinct jno) from spj where sno='s1'; rem rem question_35 rem select sum(qty) from spj where pno='p1' and sno='s1'; rem rem question_36 rem select distinct pno,jno,sum(qty) from spj group by pno,jno; rem rem question_37 rem select distinct jno from j where city= (select min(city) from j); rem rem question_38 rem select distinct spj.jno from spj where spj.pno='p1' group by spj.jno having avg(qty) > (select max(qty) from spj where spj.jno='j1'); rem rem question_39.sql rem select distinct spj.sno from spj where spj.pno='p1' and spj.qty > (select avg(spjx.qty) from spj spjx where spjx.pno='p1' and spjx.jno=spj.jno); rem rem question_40 rem select s.city from s union (select p.city from p union select j.city from j); spool off rem rem output on builtin functions and union from q34 to q40 rem COUNT(DISTINCTJNO) ------------------ 2 SUM(QTY) ---------- 900 PNO JNO SUM(QTY) ----- ----- ---------- p1 j1 200 p1 j4 800 p2 j2 200 p2 j4 100 p3 j1 600 p3 j2 200 p3 j3 200 p3 j4 700 p3 j5 600 p3 j6 400 p3 j7 800 PNO JNO SUM(QTY) ----- ----- ---------- p4 j2 500 p4 j4 800 p5 j2 100 p5 j4 400 p5 j5 500 p5 j7 100 p6 j2 200 p6 j3 300 p6 j4 500 p6 j7 300 21 rows selected. JNO ----- j3 j4 no rows selected SNO ----- s1 CITY ---------- athens london oslo paris rome rem rem question_41 rem update p set color='orange' where color='red'; rem rem question_42 rem delete from j where not exists (select * from spj where spj.jno=j.jno); rem rem question_43 rem update spj set qty=qty*1.1 where pno in (select pno from p where color='red'); rem rem question_44 rem delete from spj where spj.jno in (select j.jno from j where j.city='rome'); rem rem question_45 rem insert into s (sno,sname,city) values ('s10','white','new york'); rem rem question_46 rem create table x (pno varchar2(5) not null primary key); rem rem question_46 rem insert into x (pno) select distinct spj.pno from spj,s,j where spj.sno=s.sno and spj.jno=j.jno and (s.city='london' or j.city='london'); rem rem question_47 rem create table y (jno varchar2(5) not null primary key); rem rem question_47 rem insert into y (jno) select distinct spj.jno from spj,j,s where spj.jno=j.jno and spj.sno=s.sno and (j.city='london' or s.city='london'); rem rem question_48 rem update s set status=status+10 where status < (select status from s where sno='s4'); rem rem answer to question_49 see question_1 spool SQL.lst rem question_50 rem select distinct pno from spj where exists (select * from j where j.jno=spj.jno and j.city='london'); rem rem question_51 rem select distinct spj.jno from spj where exists (select * from spj spjx where spj.pno=spjx.pno and spjx.sno='s1'); spool off rem rem output on SQL for q50 and q51 rem PNO ----- p3 p5 p6 JNO ----- j1 j4 rem rem result of running question_52 rem COLOR ---------- blue green red Answers to question_53 to question_62: The query expressions to question_55, question_57, question_58, question_59, question_60, question_61, question_62 are illegal. The legal ones are question_53, question_54, question_56. The translated equivalents are as follows: question_53 select sno, pno, max(qty), min(qty), avg(qty) from spj group by sno, pno having sum(qty)>50; question_54 select sno, pno, max(qty), min(qty), avg(qty) from spj where sno<> ‘s1’ group by sno, pno having sum(qty)>50; question_56 select max(qty)-min(qty), sno, pno from spj where sno= ‘s1’ and pno= ‘p1’ group by sno, pno having sum(qty)>50;