SQL: Der Grundkurs für Ausbildung und Praxis. Mit Beispielen in MySQL/MariaDB, PostgreSQL und T-SQL

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Lernen Sie SQL ohne Datenbank-Vorkenntnisse Als Einsteiger werden Sie in diesem Buch Schritt für Schritt an die Arbeit mit SQL herangeführt. Vom Aufbau über das Ändern einer Datenbank und die Auswertung der Daten bis hin zur Administration und zum Verteilen der Datenbank auf verschiedene Server lernen Sie alle wesentlichen Aufgabenstellungen kennen. Die Beispiele sind für MySQL/MariaDB, PostgreSQL und T-SQL getestet. Grundlagen und praktischer Einsatz Sie erhalten eine kurze Einführung in die wichtigsten Grundbegriffe und Designregeln für relationale Datenbanken wie ER-Modell, Schlüssel, referenzielle Integrität und Normalformen. Anhand einer Beispieldatenbank, die unter MySQL/MariaDB, PostgreSQL und T-SQL verwendet werden kann, erfahren Sie dann, wie Sie SQL sinnvoll anwenden. Kenntnisse mit Übungsaufgaben festigen Jedes Kapitel enthält Übungen, mit denen Sie Ihr frisch erworbenes Wissen testen können. Wenn Sie SQL-Befehle einfach nachschlagen wollen, hilft Ihnen der MySQL-Befehlsindex am Ende des Buches. Darüber hinaus geht der Autor auch auf weiterführendeThemen wie NoSQL und SQL Injection ein, die Lust machen, sich über den Grundkurs hinaus vertiefend mit SQL zu beschäftigen. Unter plus.hanser-fachbuch.de finden Sie die Beispieldatenbank mit rund 1.170 SQL-Anweisungen und die Lösungen zu den Übungsaufgaben zum Download. Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches

Author(s): Ralf Adams
Edition: 4
Publisher: Carl Hanser Verlag GmbH & Co.
Year: 2021

Language: German
Pages: 491
Tags: SQL; MySQL; MariaDB; PostgreSQL; T-SQL

Inhalt
Vorwort zur 4. Auflage
Teil I Was man so wissen sollte
1 Datenbanksystem
1.1 Aufgaben und Komponenten
1.1.1 Datenbank
1.1.2 Datenbankmanagementsystem
1.2 Im Buch verwendete Server
1.2.1 MySQL und MariaDB
1.2.2 PostgreSQL
1.2.3 Microsoft SQL Server
2 Relationale Datenbanken
2.1 Ein Einführung
2.1.1 Abgrenzung zu anderen Datenbanken
2.1.2 Tabelle, Zeile und Spalte
2.1.3 Schlüssel, Primärschlüssel und Fremdschlüssel
2.2 Kardinalitäten und ER-Modell
2.2.1 Darstellung von Tabellen im ER-Modell
2.2.2 1:1-Verknüpfung
2.2.3 1:n-Verknüpfung
2.2.4 n:m-Verknüpfung
2.2.5 Aufgaben zum ER-Modell
2.3 Referenzielle Integrität
2.3.1 Verletzung der referenziellen Integrität durch Löschen
2.3.2 Verletzung der referenziellen Integrität durch Änderungen
2.4 Normalformen
2.4.1 Normalform 1
2.4.2 Normalform 2
2.4.3 Normalform 3
2.4.4 Normalform Rest
3 Unser Beispiel: Ein Online-Shop
3.1 Kundenverwaltung
3.2 Artikelverwaltung
3.3 Bestellwesen
Teil II Datenbank aufbauen
4 Installation des Servers
4.1 MySQL unter Windows 10
4.2 MariaDB unter Windows 10
4.3 Andere Installationen mit Docker
4.3.1 MySQL
4.3.2 MariaDB
4.3.3 PostgreSQL
4.3.4 Microsoft SQL Server
5 Datenbank und Tabellen anlegen
5.1 Die Programmiersprache SQL
5.2 Anlegen der Datenbank
5.2.1 Wie rufe ich den MySQL Client auf?
5.2.2 Wie lege ich eine Datenbank an?
5.2.3 Wie lösche ich eine Datenbank?
5.2.4 Wie weise ich einen Zeichensatz zu?
5.2.5 Wie weise ich eine Sortierung zu?
5.3 Anlegen der Tabellen
5.3.1 Welche Datentypen gibt es?
5.3.2 Wie lege ich eine Tabelle an?
5.3.3 Wann eine Aufzählung (ENUM) und wann eine neue Tabelle?
5.3.4 Wann ein DECIMAL und wann ein DOUBLE?
5.3.5 Wann verwende ich NOT NULL?
5.3.6 Wie lege ich einen Fremdschlüssel fest?
5.3.7 Wie kann ich Tabellen aus anderen herleiten?
5.3.8 Ich brauche mal eben kurz 'ne Tabelle!
6 Indizes anlegen
6.1 Index für Anfänger
6.1.1 Wann wird ein Index automatisch erstellt?
6.1.2 Wie kann ich einen Index manuell erstellen?
6.2 Und jetzt etwas genauer
6.2.1 Wie kann ich die Schlüsseleigenschaft erzwingen?
6.2.2 Wie kann ich Dubletten verhindern?
6.2.3 Was bedeutet Indexselektivität?
6.2.4 Wie kann ich einen Index löschen?
7 Werte in Tabellen einfügen
7.1 Daten importieren
7.1.1 Das CSV-Format
7.1.2 LOAD DATA INFILE
7.1.3 Was ist, wenn ich geänderte Werte importieren will?
7.2 Daten anlegen
7.2.1 Wie lege ich mehrere Zeilen mit einem Befehl an?
7.2.2 Wie kann ich eine einzelne Zeile anlegen?
7.2.3 Vorsicht Constraints!
7.2.4 Einfügen von binären Daten über einen C#-Client
7.2.5 Einfügen von binären Daten LOAD FILE
7.3 Daten kopieren
Teil III Datenbank ändern
8 Datenbank und Tabellen umbauen
8.1 Eine Datenbank ändern
8.2 Eine Datenbank löschen
8.3 Eine Tabelle ändern
8.3.1 Wie kann ich den Namen der Tabelle ändern?
8.3.2 Wie kann ich eine Spalte hinzufügen?
8.3.3 Wie kann ich die Spezifikation einer Spalte ändern?
8.3.4 Zeichenbasierte Spalten in der Länge verändern
8.3.5 Zeichensatz verändern
8.3.6 Zeichenbasierte Spalten in numerische Spalten verändern
8.3.7 Numerische Spalten im Wertebereich verändern
8.3.8 Datum- oder Zeitspalten verändern
8.3.9 Wie kann ich aus einer Tabelle Spalten entfernen?
8.4 Eine Tabelle löschen
8.4.1 Einfach löschen
8.4.2 Was bedeuten CASCADE und RESTRICT?
9 Werte in Tabellen verändern
9.1 WHERE-Klausel
9.1.1 Wie formuliere ich eine einfache Bedingung?
9.1.2 Wird zwischen Groß- und Kleinschreibung unterschieden?
9.1.3 Wie formuliere ich eine zusammengesetzte Bedingung?
9.2 Tabelleninhalte verändern
9.2.1 Szenario 1: Einfache Wertzuweisung
9.2.2 Szenario 2: Berechnete Werte
9.2.3 Szenario 3: Gebastelte Zeichenketten
9.2.4 Was bedeuten LOW_PRIORITY und IGNORE?
9.3 Tabelleninhalte löschen
9.3.1 Und was passiert bei Constraints?
9.3.2 Was passiert mit dem AUTO_INCREMENT?
9.3.3 Was bedeuten LOW_PRIORITY, QUICK und IGNORE?
9.3.4 Wie kann ich eine Tabelle komplett leeren?
Teil IV Datenbank auswerten
10 Einfache Auswertungen
10.1 Ausdrücke
10.1.1 Konstanten
10.1.2 Wie kann ich Berechnungen vornehmen?
10.1.3 Wie ermittele ich Zufallszahlen?
10.1.4 Wie stecke ich das Berechnungsergebnis in eine Variable?
10.2 Zeilen- und Spaltenwahl
10.3 Sortierung
10.3.1 Was muss ich bei der Sortierung von Texten beachten?
10.3.2 Wird zwischen Groß- und Kleinschreibung unterschieden?
10.3.3 Wie werden Datums- und Uhrzeitwerte sortiert?
10.3.4 Wie kann ich das Sortieren beschleunigen?
10.4 Mehrfachausgaben unterbinden
10.4.1 Fallstudie: Datenimport von Bankdaten
10.4.2 Was muss ich beim DISTINCT bzgl. der Performance beachten?
10.5 Ergebnismenge ausschneiden
10.5.1 Wie kann ich die ersten n Datensätze ausschneiden?
10.5.2 Wie kann ich Teilmengen mittendrin ausschneiden?
10.6 Ergebnisse exportieren
10.6.1 Wie lege ich eine Exportdatei auf dem Server an?
10.6.2 Wie lege ich eine Exportdatei auf dem Client an?
10.6.3 Wie lese ich mithilfe eines C#-Client binäre Daten aus?
11 Tabellen verbinden
11.1 Heiße Liebe: Primär-Fremdschlüsselpaare
11.2 INNER JOIN zwischen zwei Tabellen
11.2.1 Bauanleitung für einen INNER JOIN
11.2.2 Abkürzende Schreibweisen
11.2.3 Als Datenquelle für temporäre Tabellen
11.2.4 JOIN über Nichtschlüsselspalten
11.3 INNER JOIN über mehr als zwei Tabellen
11.4 Es muss nicht immer heiße Liebe sein: OUTER JOIN
11.5 Narzissmus pur: SELF JOIN
11.6 Eine Verknüpfung beschleunigen
12 Differenzierte Auswertungen
12.1 Statistisches mit Aggregatfunktionen
12.2 Tabelle in Gruppen zerlegen
12.3 Gruppenergebnisse filtern
12.4 Noch Fragen?
12.4.1 Kann ich nach Ausdrücken gruppieren?
12.4.2 Kann ich nach mehr als einer Spalte gruppieren?
12.4.3 Wie kann ich GROUP BY beschleunigen?
12.4.4 Parallele Bearbeitung – unterschiedliche Ergebnisse?
12.5 Aufgaben
13 Auswertungen mit Unterabfragen
13.1 Das Problem und die Lösung
13.2 Nicht korrelierende Unterabfrage
13.2.1 Skalarunterabfrage
13.2.2 Listenunterabfrage
13.2.3 Unterschied zwischen IN(), ALL() und ANY()
13.2.4 Unterschied zwischen NOT IN() und <> ALL()
13.2.5 Tabellenunterabfrage
13.3 Korrelierende Unterabfrage
13.3.1 Beispiel 1: Rechnungen mit vielen Positionen
13.3.2 Beispiel 2: EXISTS
13.4 Fallstudie Datenimport
13.5 Aufgaben
14 Mengenoperationen
14.1 Die Vereinigung mit UNION
14.2 Die Schnittmenge
14.2.1 Mit INTERSECT
14.2.2 Mit Unterabfragen
14.3 Die Differenzmenge
14.3.1 Mit EXCEPT
14.3.2 Mit Unterabfragen
14.4 UNION, INTERSECT und EXCEPT ... versteh' ich nicht!
15 Bedingungslogik
15.1 Warum ein CASE?
15.2 Einfacher CASE
15.3 Searched CASE
15.4 Fallbeispiele
15.4.1 Lagerbestand überprüfen
15.4.2 Kundengruppen ermitteln
15.4.3 Aktive Lieferanten ermitteln
15.4.4 Aufgaben
16 Ansichtssache
16.1 Was ist eine Ansicht?
16.1.1 Wie lege ich eine Ansicht an?
16.1.2 Wie wird eine Ansicht verarbeitet?
16.1.3 Wie lösche ich eine Ansicht?
16.1.4 Wie ändere ich eine Ansicht?
16.2 Anwendungsgebiet: Vereinfachung
16.3 Anwendungsgebiet: Datenschutz
16.4 Grenzen einer Ansicht
17 Exkurs NoSQL
17.1 Vorbereitung der MySQL-Shell
17.2 Datenmodellierung des Warenkorbs
17.2.1 JavaScript Object Notation (JSON)
17.2.2 Struktur unseres JSON-Dokuments
17.3 NoSQL: MySQL mit JavaScript-Client
17.3.1 Anlegen eines Warenkorbs
17.3.2 Inhalte des Warenkorbs anlegen
17.3.3 Inhalte des Warenkorbs auswerten
17.3.4 Inhalte des Warenkorbs verändern
17.4 NoSQL: klassisches SQL mit JSON-Funktionen
17.4.1 Anlegen eines Warenkorbs
17.4.2 Inhalte des Warenkorbs anlegen
17.4.3 Inhalte des Warenkorbs auswerten
17.4.4 Inhalte des Warenkorbs verändern
17.4.5 Inhalte des Warenkorbs löschen
Teil V Anweisungen kapseln
18 Locking
19 Transaktion
19.1 Das Problem
19.2 Was ist eine Transaktion?
19.3 Isolationsebenen
19.3.1 READ UNCOMMITTED
19.3.2 READ COMMITTED
19.3.3 REPEATABLE READ
19.3.4 SERIALIZABLE
19.4 Fallbeispiel in C#
19.5 Deadlock
20 STORED PROCEDURE
20.1 Einstieg und Variablen
20.2 Verzweigung
20.2.1 Einfache Verzweigung mit IF
20.2.2 Mehrfache Verzweigung mit CASE
20.3 Schleifen
20.3.1 LOOP-Schleife
20.3.2 WHILE-Schleife
20.3.3 REPEAT-Schleife
20.4 Transaktion innerhalb einer Prozedur
20.5 CURSOR
20.6 Aufgaben
21 Funktion
22 TRIGGER
22.1 Was ist das?
22.2 Ein Beispiel für einen INSERT-Trigger
22.3 Ein Beispiel für einen UPDATE-Trigger
22.4 Ein Beispiel für einen DELETE-Trigger
23 EVENT
23.1 Wie lege ich ein Ereignis an?
23.2 Wie werde ich ein Ereignis wieder los?
Teil VI Anhänge
24 Datenbank administrieren
24.1 Backup und Restore
24.1.1 Backup mit mysqldump
24.1.2 Restore mit mysqldump
24.2 Benutzerrechte
24.2.1 Benutzerrechte und Privilegien
24.2.2 Benutzer anlegen/Recht zuweisen
24.3 MySQL und MariaDB Engines
25 SQL Injection
25.1 Das Problem
25.2 Beispiel: Suchmaske
25.3 Gegenmaßnahmen
25.3.1 Never Trust an Unknown Input
25.3.2 Trennung von Anweisungen und Daten
25.3.3 Ich darf nur, was ich soll
25.3.4 Nichtssagende Fehlermeldungen
26 SQL-Referenz
26.1 Datentypen
26.1.1 Numerische Datentypen
26.1.1.1 Ganze Zahlen
26.1.1.2 Gebrochene Zahlen
26.1.2 Zeichen-Datentypen
26.1.3 Datums- und Zeit-Datentypen
26.1.4 Binäre Datentypen
26.1.5 JSON
26.1.6 Räumliche Datentypen
26.1.7 Standardwerte
26.1.8 Zusätze für Datentypen
26.2 Operatoren und Funktionen
26.2.1 Mathematische Operatoren
26.2.2 Mathematische Funktionen
26.2.3 Aggregatfunktionen
26.3 Bedingungen
26.3.1 Vergleichsoperatoren
26.3.2 Logikoperatoren
26.4 Befehle
26.4.1 Data Definition Language
26.4.2 Data Manipulation Language
26.4.3 Benutzerverwaltung
27 Ausgewählte Quelltexte
27.1 DOUBLE versus DECIMAL
27.2 Rundungsfehler
27.3 NULL versus NOT NULL
27.4 Suchen mit und ohne Index
27.5 Messen der Performance der Einfügeoperation
27.6 Messen der Indexselektivität
27.7 Sortieren ohne und mit Index
28 Quelltexte
28.1 MySQL/MariaDB
28.1.1 Quelltexte zu Teil II
28.1.2 Quelltexte zu Teil III
28.1.3 Quelltexte zu Teil IV
28.1.4 Quelltexte zu Teil V
28.1.5 Quelltexte zu Teil VI
28.2 PostgreSQL
28.2.1 Quelltexte zu Teil II
28.2.2 Quelltexte zu Teil III
28.2.3 Quelltexte zu Teil IV
28.2.4 Quelltexte zu Teil V
28.3 Microsoft SQL Server
28.3.1 Quelltexte zu Teil II
28.3.2 Quelltexte zu Teil III
28.3.3 Quelltexte zu Teil IV
Literatur
Stichwortverzeichnis