SQL Programmering Videregående

Formål

At give deltagere viden og færdigheder til at kunne opfylde mere komplekse rapportønsker fra virkelighedens verden - hvilket kræver:

  • Overblik
  • Valg af bedste strategi
  • Evne til at kombinere kommandoer
  • Udvidelse af SQL-værktøjskassen
  • Fortrolighed med SQL-tankegangen

Beskrivelse

Kurset er ikke et begynderkursus, og det er derfor vigtigt, at du har den fornødne forhåndsviden (se forudsætninger nedenfor).

Kurset fokuserer på praktisk anvendelse af SQL:

  • Du får en times repetition af grundkurset for at få hjernecellerne i sving
  • Du bliver trænet i den akrobatiske kunst at kombinere grundlæggende kommandoer
  • Du lærer at skrive mere komplekse SQL-konstruktioner
  • Du prøver kræfter med ”reverse engineering”, hvor du udleder rapportønsket på basis af eksisterende SQL-kode
  • Du får udbygget dit arsenal af gode SQL-vaner

En hjørnesten i kurset er at lære at ”tænke” SQL. Det starter gerne med et rapportønske. Først skal du finde den rigtige strategi. Derefter skal strategien omsættes til kode, der kan levere den ønskede rapport.

Undervejs gennemgås og demonstreres syntaks i dialog med kursusdeltagerne. Der gennemgås produkt-uafhængig syntaks, som virker lige godt på Microsoft SQL Server, Oracle, IBM DB2, Sybase m.m.

Kurset tager udgangspunkt i forskellige cases, og du opnår færdighed i velegnet SQL ved at løse opgaver til de enkelte cases. Løsningsforslag er inkluderet i materialet.

Forudsætninger

  • SU-240 - SQL Programmering Grundkursus

Videre forløb

  • SU-245 - SQL og Statistik

Materialer

Kursusmateriale på dansk

Tilhørende certificering

  • PS0241 - SCDP - SQL Certified Developer Professional

Tilhørende test

  • TSU-241 - SQL Advanced

Indhold

  • FORENINGSMÆNGDEN ( UNION / UNION ALL )
    • Foreningsmængder optræder, når du ønsker at samle/forene rækker fra to datakilder, ved at sætte rækkerne ”ovenpå hinanden”. Dette optræder f.eks. hvis man har to forskellige datagrundlag, som man ønsker at behandle under ét -- eller inden for samme datagrundlag ønsker at håndtere brøkdele af rækkerne på forskellige måder, for til sidst at forene resultatsættene.
  • COMMON TABLE EXPRESSIONS ( CTE )
    • CTE findes i to varianter: De almindelige samt rekursive. SU-241 gennemgår de almindelige CTE’er, som i høj grad kan gøre din kode læsbar, når komplekse løsninger kan brydes ned i mere håndgribelige brøkdele. CTE kan være et godt valg, når du implementerer din kode-strategi, og bagefter til vedligeholdelse af koden. (Rekursive CTE’er gennemgås på kursus SU-245).
  • EKSOTISKE JOINS
    • Elegante løsninger ved at joine på andet end ’=’ (fx kategorisere dine data i intervaller)
  • OUTER JOIN
    • Få alle kunder med i Rapporten, også dem som ikke købte noget
  • CROSS JOIN
    • Danne et udgangspunkt for de ”manglende værdier” i dine rapporter (fx alle kombinationer af { Kunder , Årstal } i dine rapporter)
  • HAVING
    • Stort emne på kurset - mange demoer og øvelser
    • Håndterer grupperede betingelser (fx finde kunder som købte mere end 3 gange / for mere end 500.000 etc.)
    • Lige så vigtig som Where-klausulen …
  • CORRELATED SUBQUERIES
    • Correlated DELETE -- hvordan slettes rækker i én tabel, ud fra værdier i en anden tabel? -- f.eks. en fejlliste, som ønskes benyttet til at slette rækker i en hovedtabel.
    • Correlated UPDATE -- hvordan opdateres felter i rækker i én tabel, ud fra værdier i en anden tabel? -- f.eks. en liste med transaktioner, som ønskes benyttet til at opdatere den samlede Saldo i en hovedtabel -- eller en fejlliste, som benyttes til at opdatere forkerte værdier i en hovedtabel.
    • Snedig syntax -- kan løse problemstillinger, hvor behandlede data er afhængig af rækkens/gruppens indhold
    • Beregne relative summer til rapporter (fx %-fordelingen af kundens varekøb)
    • Maximere/minimere inden for gruppering (fx angive hver kundes mindste enkeltkøb)
  • EXISTS
    • Man kan opnå høj performance, hvis man kan nøjes med at få bekræftet tilstedeværelsen af data frem for at få returneret data
    • Slette/opdatere rækker i én tabel, afhængigt af værdier i en anden tabel (fx opdatere saldi/salgskatalog afhængigt af tidligere års køb)
  • CASE
    • Byg logik ind i dine SQL statements
    • Hvornår kan man med fordel benytte CASE i SELECT , WHERE , GROUP BY , HAVING , ORDER BY - mange eksempler og opgaver
    • Undgå ”Division by Zero”-errors, så dine rapporter ikke blokerer
    • Metoder til ”Data vask” (Data Cleansing)
  • COALESCE
    • Behandle NULL-værdier i dine rapporter
    • Erstat NULL med en valgt værdi i rapporten (fx 0)
    • Prioritér din søgerækkefølge gennem flere kolonner og/eller tabeller, hvis der optræder NULL-værdier (fx Hvis kundens mobiltlf. ikke er registreret, returnér da kundens fastnetnr.)