
SQL
Beschreibung
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Weitere Details
Weitere Ausgaben
Andere Ausgaben


Person
ISNI: 0000 0003 8343 9547
Inhalt
- 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
Systemvoraussetzungen
Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Systemvoraussetzungen:
- Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).
- Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions oder die App PocketBook (siehe E-Book Hilfe).
- E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m.
Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.
Weitere Informationen finden Sie in unserer E-Book Hilfe.