Tijdens deze KC avond presenteert Lucas over Query Structuur.
De stof komt uit 7Up en omvat ondermeer In-Line Views, Scalar Subqueries, Analytical Functions, Joins, nieuwe Connect By functies, rollup, cube en grouping sets. Ook zal er gelegenheid zijn om een en ander achter de PC uit te proberen middels een work shoppie.
Gaarne tijdig aangeven of je wel of niet gaat komen, ajb, in verband met avondeten.
Iedereen weet hoe een SQL query eruit ziet. Zoiets als:
select column [,column,...] | SQL Function(column) from table | view where <condition> | <join condition> order by
(eventueel nog aangevuld met:
connect by group by having
)
Sinds Oracle 7.1 is er behoorlijk wat veranderd in die simpele query. Een schets van de standaard SQL query in Oracle 9i zou er ongeveer als volgt uit zien:
with inline view[,inline view,...] select column [,column,...] | SQL Function(column) | user defined function| scalar subquery | user defined aggregate | cursor expression | case expression | analytical function from table [AS OF or VERSIONS] [SAMPLE clause] | view | inline view | external table | table function | cast nested table where <condition> | <join condition>|new join syntax| 10g Query Partition (Partition Outer Join) order [siblings] by [nulls first|nulls last]
Eventueel aangevuld met:
connect by group by [ ROLLUP | CUBE | GROUPING SETS] having model (10g)
Natuurlijk zijn niet al die aanvullingen even belangrijk, maar met name de In-Line View, Scalar Subsquery, Analytische Functie, External Table en Table Function zijn zeer bruikbaar en de moeite van een nadere kennismaking meer dan waard.
Tijdens de KC Server Development bijeenkomst op donderdag 22 november van 16.30 tot ca. 20.30 gaan we de krenten in de pap van de “nieuwe� SQL structuur leren kennen. Door uitleg en demo maar ook door een workshop. Eigenlijk is deze bijeenkomst geschikt voor iedereen die SQL kent (of denkt te kennen) en nog wel eens een query schrijft.
Meld je aan bij BU OM of reageer op de invite in je Calendar (KC leden).
Een voorbeeld query die je na deze avond kan lezen en schrijven:
select ename , deptno , sal , (select varchar2_sum(ename) from emp colleagues where colleagues.deptno = emp.deptno) list_of_colleagues , old_sal sal_100days_ago , sum(sal) over (order by deptno, ename) running_total , sum(sal) over (partition by deptno order by ename) department_total , row_number() over (partition by deptno order by sal desc) sal_rank_in_dept from (select * from emp where job not in ‘UITVRETER’) emp JOIN (select old_sal from emp as of TIMESTAMP to_timestamp(sysdate - 100) old_sal using (empno) order by (select mgr.ename from emp mgr where mgr.empno = emp.mgr) , ename