
SQL
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


Person
ISNI: 0000 0003 8343 9547
Content
- Intro
- Inhalt
- Vorwort zur 5. 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 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.2.1 Wann liegt eine 1:1-Verknüpfung vor?
- 2.2.2.2 Wie kann ich eine 1:1-Verknüpfung darstellen?
- 2.2.2.3 Kann ich die Kardinalität genauer beschreiben?
- 2.2.3 1:n-Verknüpfung
- 2.2.3.1 Wann liegt eine 1:n-Verknüpfung vor?
- 2.2.3.2 Wie kann ich eine 1:n-Verknüpfung darstellen?
- 2.2.3.3 Kann ich die Kardinalität genauer beschreiben?
- 2.2.4 n:m-Verknüpfung
- 2.2.4.1 Wann liegt eine n:m-Verknüpfung vor?
- 2.2.4.2 Wie kann ich eine n:m-Verknüpfung darstellen?
- 2.2.4.3 Kann ich die Kardinalität genauer beschreiben?
- 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 11
- 4.2 MariaDB unter Windows 11
- 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 CSV-Daten laden mit 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.1.1 Beispiel 1: Banken mit höchster BLZ
- 13.2.1.2 Beispiel 2: Überdurchschnittlich teure Artikel
- 13.2.1.3 Beispiel 3: Überdurchschnittlich wertvolle Bestellungen
- 13.2.2 Listenunterabfrage
- 13.2.2.1 Beispiel 1: IN()
- 13.2.2.2 Beispiel 2: ALL()
- 13.2.2.3 Beispiel 3: ALL()
- 13.2.2.4 Beispiel 4: ANY()
- 13.2.2.5 Unterschied zwischen IN(), ALL() und ANY()
- 13.2.2.6 Unterschied zwischen NOT IN() und && ALL()
- 13.2.3 Tabellenunterabfrage
- 13.3 Korrelierende Unterabfrage
- 13.3.1 Beispiel 1: Rechnungen mit vielen Positionen
- 13.3.2 Beispiel 2: EXISTS
- 13.4 Common Table Expression versus Unterabfrage
- 13.5 Fallstudie Datenimport
- 13.6 Wie ticken Unterabfragen intern?
- 13.7 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 Transaktionen
- 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 Prozeduren
- 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 Funktionen
- 22 Auslöser
- 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 Ereignisse
- 23.1 Wie lege ich ein Ereignis an?
- 23.2 Wie werde ich Ereignisse wieder los?
- Teil VI Anhänge
- 24 Datenbank administrieren
- 24.1 Daten sichern und wiederherstellen
- 24.1.1 Backup
- 24.1.2 Restore
- 24.2 Benutzerrechte
- 24.2.1 Benutzerrechte und Privilegien
- 24.2.2 Benutzer anlegen und Rechte zuweisen
- 24.2.2.1 CREATE USER bzw. CREATE ROLE
- 24.2.2.2 Rechte vergeben mit GRANT
- 24.2.2.3 Rechte entziehen mit REVOKE
- 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.2.1 Verwenden Sie Prozeduren oder Funktionen
- 25.3.2.2 Verwenden Sie Prepared Statements
- 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.3.2.1 NOT, Negation,
- 26.3.2.2 AND, Konjunktion,
- 26.3.2.3 OR, Disjunktion,
- 26.3.2.4 XOR, Antivalenz,
- 26.3.2.5 Verallgemeinerung auf mehr als zwei Operanden
- 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
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.