Notizen
Generelle Anmerkungen zur Syntax
- SQL-Befehle sollten GROSS geschrieben werden
- Datenbanken, Tabellen und Felder sind CASE-INSESITIVE
- !! AUSNAHME: MySQL nutzt CASE-SENSITIVE
- SQL-Abfragen (Statements) sollen so formuliert werden, dass sie als englische Sätze ausgesprochen werden können.
- Ein ausgeführtes Statement nennt man Transaktion
- Namen von Tabellen, Spalten und Feldern sollten *so kurz wie möglich* aber *so ausführlich wie nötig* sein.
- Als Zeichensatz sollte *immer* UTF-8 genutzt werden, da UTF-8 alle existieren Zeichen (angeblich auch klingonisch) beinhaltet.
- Eine SQL-Datenbank garantiert mir vier Eigenschaften: ACID
- Atomarität: eine Abfrage wird entweder ganz ausgeführt oder gar nicht, sie ist unteilbar
- Konsistenz: ich kann die (z.B. bei CREATE TABLE gesetzten) Eigenschaften einer DB nicht verletzen
- Isolation: auch wenn mehrere Benutzer gleichzeitig auf einer DB arbeiten sind Teilzustände nicht vermischt
- Dauerhaftigkeit: wenn eine Veränderung vorgenommen wurde, bleibt diese Dauerhaft im System
- Der Befehl SELECT liefert Daten in Tabellenform zurück; SQL arbeitet auf der Grundlage von Tabellen; die durch SELECT ausgegebene Tabelle kann über INSERT INTO direkt wieder in eine Tabelle eingefügt werden
- Es kann nichts mit NULL durch Operatoren verglichen werden, denn NULL existiert nicht bzw. definiert nichts; etwas, was nicht existiert, kann nicht mit etwas anderem verglichen werden; NULL wird durch "IS NULL" oder "IS NOT NULL" abgefragt.
- Beim Löschen folgenden Rat beherzigen: Erst einen SELECT * auf die zu löschenden Werte generieren; werden nur noch die zu löschenden Werte angezeigt, so kann SELECT * durch DELETE ersetzt werden.
- Bei einem SELECT * auf mehrere Tabellen werden alle möglichen Kombinationen der Inhalte ausgegeben; daher müssen die sinnvollen Kombinationen mittels WHERE in Relation gesetzt werden.
- CROSS JOIN bzw. das , ist immer der schlechteste Weg, Tabellen zu verbinden; besser ist der INNER JOIN