Dokumentation

Simple Query Language

sql-logo

Live-Abfragen für einige Datenbanken können hier getätigt werden.

Grundlagen

Um ein Gefühl für SQL zu bekommen, erstmal eine Select-Query üblichen Ausmaßes:

SELECT person.name AS Name, election.label AS Wahl, COUNT(*) AS Stimmen
FROM person
    INNER JOIN election_result_person
        ON person.id = election_result_person.person_id
    INNER JOIN election_result_election
        ON election_result_person.election_result_id = election_result_election.election_result_id
    INNER JOIN election
        ON election_result_election.election_id = election.id
GROUP BY election_result_person.person_id;

Die obige Abfrage ergibt folgendes Ergebnis (als Diagramm dargestellt):

Diagramm

Unter manchen Konfigurationen gibt das obige Beispiel eine Fehlermeldung aus, da es sich nicht um ein vollständig qualifiziertes GROUP BY handelt (ohne HAVING). Die Konfiguration kann folgendermaßen geändert werden:

mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Um diese Konfiguration auch nach einem Neustart des Datenbankservice zu behalten, wird folgendes Kommando benötigt:

mysql > SET PERSIST sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Normalformen

1. Normalform

Definition

Eine Relation (Tabelle) ist in der ersten Normalform (1. NF), wenn die Werte der Attribute elementar (atomar) sind, d.h. pro Datenfeld darf nur maximal ein Wert enthalten sein.

1. Normalform

Prüfung (MNr, Name, PrüfFachNr, PrüfFachBezeichung, ProfNr, ProfName, Note)

2. Normalform

Definition

Eine Relation ist in der zweiten Normalform (2.NF), wenn sie sich in der 1.NF befindet und jedes nicht zum Primärschlüssel gehörige Attribut voll von diesem abhängig ist.

2. Normalform

Prüfung (↑MNr, ↑PrüfFachNr, Note)

Studenten (MNr, Name)

Prüfungsfächer (PrüfFachNr, PrüfFachBezeichung, ProfNr, ProfName)

3. Normalform

Definition

Eine Relation befindet sich dann in der dritten Normalform (3.NF), wenn sie sich in der 1.NF und in der 2.NF befindet und wenn alle Nichtschlüssel-Attribute ausschließlich vom Primärschlüssel funktional abhängig sind, und nicht transitiv über ein Nichtschlüssel-Attribut.

3. Normalform

Prüfung (↑MNr, ↑PrüfFachNr, Note)

Studenten (MNr, Name)

Prüfungsfächer (PrüfFachNr, PrüfFachBezeichung, ↑ProfNr)

Prüfer (ProfNr, ProfName)

Mitglied in