SQL-Kurs: Einführung in SQL mit MySQL
Teil 0 Grundlagen
Kapitel 0 Einführung
- >723022 Lektion 0.0. Überblick über den SQL-Kurs
Dieses Kapitel soll einen ersten kurzen Überblick über relationale Datenbanken geben. Es ist nicht nötig, alle Details dieses Kapitels genau zu verstehen, da diese Details im weiteren Verlaufe des Kurses noch einmal wiederholt und langsamer erklärt werden werden.
- >723778 Lektion 0.1. Datenbanken
- >722491 Lektion 0.2. Zellen
- >723779 Lektion 0.3. Relationale Datensätze
- >723780 Lektion 0.4. Relationale Tabellen
- >723858 Lektion 0.5. Relationale Operationen
- >723859 Lektion 0.6. Relationale Datenbanksysteme
- >724179 Lektion 0.7. Gestaltungsprinzipien relationaler Datenbanken
- >722363 Lektion 0.8. SQL
- >722364 Lektion 0.9. MySQL
Kapitel 1 Handhabung von MySQL
- >722366 Lektion 1.0. MySQL-Installation
- >724614 Lektion W-0 ℋ Die Eingabetaste
- >723849 Lektion 1.1. Aspekte der IBM-PC -Tastatur
- >724121 Lektion 1.2. Start des MySQL-Monitors
- >723882 Lektion 1.3. Konsolen-Grundlagen für Programmierkurse
- >722367 Lektion 1.4. Bedienung des MySQL-Monitors
Kapitel 2 Tabellen in SQL (MySQL )
Dieses Kapitel enthält zusammen mit dem folgenden Kapitel das Wichtigste, was man über SQL wissen muß. Dabei werden in den einzelnen Lektionen dieses Kapitels nach Möglichkeit Kommandos verwendet, die nicht nur in MySQL verfügbar sind, sondern auch dem ISO -Standard entsprechen und die daher auch in vielen anderen Datenbanksystemen verfügbar sind.
Dieses und das folgende Kapitel enthalten vorwiegend Inhalte, welche zur relationalen Algebra gehören. Die nicht direkt zur relationalen Algebra gehörenden arithmetischen Ausdrücke, Gruppierungsoperationen und statistischen Operationen werden dann in späteren Kapiteln behandelt.
- >722373 Lektion 2.0. »CREATE SCHEMA« – Erzeugen und Einstellen von Schemata mit SQL (MySQL )
- Mit Syntax des 〈direct SQL statement〉.
- >723462 Lektion 2.1. Schlüsselwörter in SQL (MySQL )
- >722933 Lektion 2.2. » « – Lexikalische Einheiten und Leerraum in SQL (MySQL )
- >723033 Lektion 2.3. SQL -Skripte in MySQL
- >722576 Lektion 2.4. »CREATE TABLE« – Anlegen von Tabellenspeichern mit SQL (MySQL )
- >722402 Lektion 2.5. »FROM« – Angabe einer Datenquelle in SQL (MySQL )
- >722371 Lektion 2.6. »INSERT INTO« – Einfügen von Zeilen mit SQL (MySQL )
- >723160 Lektion 2.7. »INSERT INTO« – Tabellenspeicher mit mehreren Zeilen in SQL (MySQL )
- >722946 Lektion 2.8. »,« – Tabellenspeicher mit mehreren Spalten in SQL (MySQL )
- >723866 Lektion 2.9. Fehlermeldungen von MySQL
- >722935 Lektion 2.10. »-- « – Kommentare in SQL (MySQL )
- >723873 Lektion 2.11. Die Dokumentation von Tabellen mit SQL
- >722404 Lektion 2.12. »SELECT« – Projektion in SQL (MySQL )
- >722405 Lektion 2.13. »*« – Der Stern als Auswahlliste in SQL (MySQL )
- >723061 Lektion 2.14. »DROP TABLE« – Entfernen von Tabellen in MySQL
- >722409 Lektion 2.15. »DISTINCT« – Ausblenden mehrfacher Zeilen in SQL (MySQL )
- >722368 Lektion 2.16. »CREATE VIEW« – Ansichten in SQL (MySQL )
Bis zu dieser Stelle wurden die Lektionen des Grundkurses 2020 überarbeitet und ausformuliert. Von den restlichen Lektionen können einige Lektionen noch weniger ausformuliert oder ausgereift sein, insbesondere je weiter hinten sie stehen.
- >722408 Lektion 2.17. »WHERE … =« – Äquiselektion (Äquirestriktion, Teilmengenbildung) in SQL (MySQL )
- >723615 Lektion 2.18. »INSERT … SELECT« – Persistierung abgeleiteter Tabellen mit SQL (MySQL )
- >722942 Lektion 2.19. »UPDATE … WHERE« – Änderungen von Zelleninhalten mit SQL (MySQL )
- >722943 Lektion 2.20. »DELETE … WHERE« – Löschen von Zeilen mit SQL (MySQL )
- >723064 Lektion 2.21. Aktualisierbare Views in SQL (MySQL ) 〈0〉 ⃗
- >722961 Lektion 2.22. ».« – Qualifizierte Namen in SQL (MySQL )
Kapitel 3 Verbindungen in SQL (MySQL )
- >722412 Lektion 3.0. »,« – Kartesische Produkte in SQL (MySQL )
- >722963 Lektion 3.1. », … WHERE … =« – Verbindungen (Äquijoins) in SQL (MySQL )
- 1:1-Beziehungen, Join-Abhängigkeiten
- >722737 Lektion 3.2. ON-Verbindungen in SQL (MySQL )
- >723361 Lektion 3.3. Normalisierung von Tabellen in SQL (MySQL )
- >722413 Lektion 3.4. USING-Feldauswahl in SQL (MySQL )
- >722533 Lektion 3.5. Natürliche Verbindungen in SQL (MySQL )
- >722369 Lektion 3.6. »AS« – Lokale Namen für Tabellen in SQL (MySQL )
- >722406 Lektion 3.7. »AS« – Spaltennamen abgeleiteter Tabelle in SQL (MySQL )
- >723195 Lektion 3.8. Einstellungen von MySQL
- >723287 Lektion 3.9. »"« – Begrenzte Namen in SQL (MySQL ) 〈1〉 ⃗
- >723130 Lektion 3.10. n:1-Beziehungen in SQL (MySQL )
- >723131 Lektion 3.11. Primärschlüssel und Fremdschlüssel in SQL (MySQL )
- Entitäten, Primärschlüssel, Fremdschlüssel, künstliche numerische Primärschlüssel
- >723632 Lektion 3.12. Schlüssel anderer Parteien
- >723132 Lektion 3.13. 1:n-Beziehungen in SQL (MySQL )
- >724234 Lektion 3.14. »DESCRIBE« – Die Beschreibung von Tabellen in MySQL
- >720660 Lektion 3.15. Der Wert »NULL« in SQL
- »DESCRIBE«
- >724447 Lektion 3.16. Optionale Felder in SQL
- >722370 Lektion 3.17. »UNION« – Vereinigungsmengen in SQL (MySQL )
- >722984 Lektion 3.18. Äußere Verbindungen in SQL
- >723062 Lektion 3.19. »ALTER« – Ändern der Struktur in MySQL
- >722965 Lektion 3.20. Anzeige von Metainformationen mit MySQL
- >722982 Lektion 3.21. Mehrfachverbindungen (n:m) in SQL (MySQL )
- >723059 Lektion 3.22. Primärschlüsselspalten in MySQL
- >723060 Lektion 3.23. Referentielle Integrität in MySQL
- >722537 Lektion 3.24. Datenexport mit MySQL
- >722538 Lektion 3.25. Datenimport mit MySQL
- >723290 Lektion 3.26. Datensicherung mit MySQL *
- >722529 Lektion 3.27. Register in MySQL *
Kurs SQL -Aufbaukurs
Da die SQL-Grundkurse unterschiedlich lange dauern (von 21 bis 40 UE), kann leider keine Stelle für den Beginn des Aufbaukurses festgelegt werden, die für alle Teilnehmer eines Grundkurses Überschneidungen und/oder Lücken vermeidet. So wurde hier willkürlich eine bestimmte Stelle festgelegt.
In Aufbaukursen kann an dieser Stelle ein kurzer Rückblick auf den Grundkurs gegeben werden. Er sollte aber nicht mehr als 10 Prozent der Zeit des Aufbaukurses umfassen.
Kapitel 4 Operatorausdrücke
Nachdem wir uns bisher mit den Tabellen beschäftigt haben und dabei auch schon skalare Ausdrücke verwendet haben, widmen wir uns in diesem Kapitel nun besonders den Skalaren, also den Werte, die in einer Zelle stehen können. Wir behandeln ihre Notation, ihre Typen, und ihre Verarbeitung mit Operatoren und Funktionen.
- >723460 Lektion 4.0. Zeichenfolgenliterale in SQL
- >723301 Lektion 4.1. Zeichenfolgenliterale in der Auswahlliste in SQL (MySQL )
- >723270 Lektion 4.2. Abfragen ohne Basistabellen in MySQL
- >722399 Lektion 4.3. »123« – Literale in SQL (MySQL )
Bis zu dieser Stelle wurden die Lektionen des Aufbaukurses 2020 überarbeitet und ausformuliert. Von den folgenden Lektionen dieses Aufbaukurses können einige Lektionen noch weniger ausformuliert oder ausgereift sein, insbesondere je weiter hinten sie stehen.
- >724227 Lektion 4.4. Der Typ »VARCHAR« in SQL (MySQL )
- >724224 Lektion 4.5. Der Typ »INT« in SQL (MySQL )
- >724229 Lektion 4.6. Der Typ »DECIMAL« in SQL (MySQL )
- >724230 Lektion 4.7. Der Typ »DOUBLE« in SQL (MySQL)
- >724233 Lektion 4.8. Der Typ »CHAR« in SQL (MySQL)
- >724232 Lektion 4.9. Das Schlüsselwort »AUTO_INCREMENT« in MySQL
- >724231 Lektion 4.10. Das Alias »SERIAL« in MySQL
- >722931 Lektion 4.11. »-« – Der Vorzeichenwechsel »-…« in SQL (MySQL )
- >722407 Lektion 4.12. Sortieren in SQL (MySQL )
- >724036 Lektion 4.13. Operatoren und Operanden
- >722936 Lektion 4.14. »(①)« – Die Ausdruckklammern in SQL (MySQL )
- >722937 Lektion 4.15. »/x« – Die Division von Spalten in SQL (MySQL )
- >723266 Lektion 4.16. »/2« – Die Division mit Literalen in SQL (MySQL )
- >722938 Lektion 4.17. »+« – Die Addition in SQL (MySQL )
- >722939 Lektion 4.18. »-« – Die Subtraktion in SQL (MySQL )
- >722940 Lektion 4.19. »*« – Die Multiplikation in SQL (MySQL )
- >722401 Lektion 4.20. Operatoren in SQL (MySQL )
Kapitel 5 Funktionsaufrufe
- >722398 Lektion 5.0. Funktionsaufrufe in SQL (MySQL )
- >722941 Lektion 5.1. Dokumentation von SQL (MySQL )
- >723281 Lektion 5.2. Rückgabewerte in SQL (MySQL )
- >723282 Lektion 5.3. Laufzeitwerte in SQL (MySQL )
- >723283 Lektion 5.4. Aufrufausdrücke in Operatorausdrücken in SQL (MySQL )
- >723277 Lektion 5.5. Argumente in SQL (MySQL )
- >723285 Lektion 5.6. Parameter der Dokumentation in SQL (MySQL )
- >723286 Lektion 5.7. Aufrufwandlung in SQL (MySQL )
- >723278 Lektion 5.8. Aufrufe mit mehreren Argumenten in SQL (MySQL )
- >723288 Lektion 5.9. Überladung in SQL (MySQL ) 〈1〉 *
- >723289 Lektion 5.10. optionale Argumente in SQL (MySQL )
- >723279 Lektion 5.11. »SUBSTRING_INDEX« in SQL (MySQL )
- >724284 Lektion 5.12. Weitere extrahierende String-Funktionen in SQL
- >724283 Lektion 5.13. Weitere Textfunktionen in SQL (MySQL )
- >722410 Lektion 5.14. Statistikfunktionen in SQL (MySQL )
- >722411 Lektion 5.15. Aggregate mit Gruppierung in SQL (MySQL )
Kapitel 6 Wahrheitswerte
- >723291 Lektion 6.0. Der WHERE-Ausdruck in SQL (MySQL )
- >723292 Lektion 6.1. Der 0-Detektor »NOT« in SQL (MySQL )
- >723293 Lektion 6.2. Der Vergleichsoperator "=" in SQL (MySQL )
- >723298 Lektion 6.3. Wahrheitsliterale in SQL (MySQL )
- >723294 Lektion 6.4. Der Datentyp »BOOL« in SQL (MySQL )
- >723295 Lektion 6.5. Die Konjunktion in SQL (MySQL )
- >723296 Lektion 6.6. Die Disjunktion in SQL (MySQL )
- >723297 Lektion 6.7. Die Vergleichsoperatoren in SQL (MySQL )
- >722966 Lektion 6.8. Mustersuchen in MySQL
- >722738 Lektion 6.9. Der NULL-Wert in MySQL
- >722414 Lektion 6.10. CASE- und IF-Ausdrücke in MySQL
Kapitel 7 Weitere Themen
- >723063 Lektion 7.0. Spaltentypen in MySQL
- >722527 Lektion 7.1. Benutzerrechte in MySQL (data control language, DCL )
- >722531 Lektion 7.2. Transaktionen in MySQL
- >722981 Lektion 7.3. Selbstverbindungen in SQL (MySQL )
- >722736 Lektion 7.4. HAVING in SQL (MySQL ) 〈1〉 *
Kapitel 8 Unterabfragen
- >722523 Lektion 8.5. »FROM ( SELECT … )« – Unterabfragen in SQL (MySQL )
Kapitel 9 Diverses
Kapitel 10 Beispiele und Übungen
- >723000 Beispiel 10.0. Statistische Auswertung mit SQL
- >722948 Beispiel 10.1. Ermittlung einer bedingten Übersetzung mit SQL
- >722534 Lektion 10.2. Beispiele und Übungen zu MySQL
- >722944 Beispiele und Übungen mit der Datenbank R
Kapitel 11 Was nicht gut mit SQL geht
Einige Aufgaben lassen sich mit deklarativem SQL schlecht direkt lösen. Teilweise hängt dies damit zusammen, daß Zeilen einer Tabelle als Menge keine Reihenfolge haben oder daß die Anzahl der Spalten einer Abfrage durch den Quelltext bestimmt ist.
Solche Aufgaben lassen sich dann zwar mit SQL irgendwie lösen, aber die Lösungen sind manchmal ineffizient oder setzen prozedurale Techniken, wie das Generieren und Interpretieren einer Abfrage ein.
In solchen Fällen kann es besser sein, die schwierigen Teile der Aufgabe mit deklarativem SQL oder mit einem deklarativen Klienten zu erledigen.
- >722947 Beispiel 11.0. Ermittlung eines Rangs mit SQL
- >723363 Beispiel 11.1. Mediane in MySQL
- >722949 Beispiel 11.2. Pivot-Tabellen mit SQL
Kapitel 12 MySQL -Themen
- >722525 Lektion 12.0. Routinendefinitionen in MySQL , Funktionen und Prozeduren in MySQL
- >722526 Lektion 12.1. Trigger in MySQL
- >722764 Lektion 12.2. Der MySQL -Server und Java
Kapitel 13 Semantik und Gestaltung
In den folgenden Lektionen werden einige Begriffe noch einmal von Grund auf erklärt, dabei gibt es einige Überschneidungen mit früheren Lektionen, wo einige dieser Begriffe bei Bedarf bereits einmal vorläufig erklärt wurden.
- >723066 Lektion 13.0. Die erste Normalform (1NF) in relationalen Datenbanken
Kapitel 14 Relationale Algebra
Kapitel 15 Normalformen
- >722528 Lektion 15.0. Die Boyce-Codd-Normalform in Relationalen Datenbanken
Anhang
Kapitel 16
- >724734 16.0. Regeln für relationale Datenbanken
- >722932 16.1. Optimierung
- >722375 Notiz 16.2. Diverse Notizen zum SQL-Kurs
- >722758 Notiz 16.3. Aktuelle Notizen zum MySQL-Kurs
- Rückgängigmachen von »USE« für ein Schema – ERROR 1820: You must SET PASSWORD before executing this statement – Verbindung mit Excel – Between – LIKE – Microsoft SQL Server und Oracle –
- >722374 Das MySQL -Skript »R.SQL«
Mögliche Ergänzungen:
Cast und weitere Funktionen
Format von Daten/Zeiten (in der Tabelle immer ISO)
Check-Constraints
elephantdolphin.blogspot.com/2019/04/mysql-8016-check-constraints.html
dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html
prozedurales SQL
Python und MySQL
dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html
Benutzerrechte
Seit SQL-92 geht HAVING auch ohne GROUP BY