Skip to main content

SQL

Befehle

'Normale' Abfragen
SELECT * FROM klasse ORDER BY name (ASC); --> aufsteigend Sortieren (Default)

SELECT * FROM klasse ORDER BY name DESC; --> absteigend Sortieren

SELECT * FROM klasse LIMIT 10; --> Nur die ersten 10 Datensätze anzeigen lassen

SELECT datum AS 'Fehlzeit' FROM fehlzeiten; --> Spalte in Ausgabe "umbenennen"

SELECT Datum AS 'Fehlzeit' FROM fehlzeiten GROUP BY Datum; --> Gruppieren / Zusammenführen von gleichen Einträgen
Filter und Bedingungen
SELECT * FROM `user` WHERE `name`="Felix";

SELECT * FROM schueler WHERE SchuelerId > 15000;

SELECT * FROM fehlzeiten WHERE SchuelerId = 16165 AND Stunde = 1; --> Verkettete Bedingung

SELECT * FROM fehlzeiten WHERE Datum BETWEEN "2007-06-01" AND "2007-07-31"; --> Range Between

SELECT * FROM klasse WHERE Name LIKE "%FI%" ORDER BY Name; --> Filter "Like"; Wort enthält irgendwo "FI"
TODO

Ergänzung um Joins und Aggregatfunktionen!

Normalisierung

Probleme eines unsystematischen Entwurfs:

  • Verschwendung von Speicher
  • Inkonsistente Daten
  • Wenig Übersichtlichkeit

--> Entwurf einer Datenbank in drei Schritten normalisiert.

1. Normalform

  • Alle Attribute sind elementar (atomar)
    • Keine Doppelten Werte pro Attribut
KursIdAnbieterIdNameSkriptPreis
1005,7Kurz / Maier80 / 904,50 /15,00
2005Kurz12010,00

--> Nicht in der 1. Normalform, da Name, Skript und Preis mehrere Werte enthalten!

2. Normalform

  • Jedes Nicht-Schlüsselattribut hängt voll funktional vom Primärschlüssel ab.
  • Nicht-Schlüsselattribut darf nicht nur von einem Teil des PK abhängen
KursIdAnbieterIdNameSkriptPreis
1005Kurz807,50
2005Kurz12010,00
1007Maier9015,00

--> PK ist Kombination aus AnbieterId und KursId

Lösung: --> Eigene Tabelle für Anbieter; Name fällt aus Tabelle weg, da hier Redundanzen entstehen

AnbIdName
5Kurz
7Maier

3. Normalform

  • Jedes Nicht-Schlüsselattribut muss vom PK abhängig sein

Im Beispiel: Preis hängt vom Skript ab. Preis / Skript wird in weitere Tabelle ausgelagert:

KursIdAnbieterIdSkript
100580
2005120
100790
SkriptPreis
807,50
12010,00
9015,00
AnbIdName
5Kurz
7Maier