SQL mit MySQL - Band 1 & 2 - Günter Neumann - E-Book

SQL mit MySQL - Band 1 & 2 E-Book

Günter Neumann

0,0
4,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Dieses Buch gibt eine Einführung in SQL auf Basis des relationalen Datenbanksystems MySQL. Zum Üben der SQL-Anfragen ist eine Online-DB verfügbar. Das Buch ist für alle geeignet, die sich aus beruflichen Gründen, im Rahmen einer Fortbildung oder aus Interesse diesem Thema zuwenden. Ihr könnt viele der im eBook beschriebenen SQL-Abfragen auch online mittels der verfügbaren Online-DB testen und variieren. Das Buch ist in zwei Abschnitte gegliedert: 1) Einführung 2) Für Fortgeschrittene.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Veröffentlichungsjahr: 2023

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Günter Neumann

SQL mit MySQL - Band 1 & 2

Einführung in SQL mit Online-DB zum Üben

Neu-Auslage Juni 2023Einführung in die Datenbanksprache SQL - Structured Query Language

Inhaltsverzeichnis

Einleitung

1.0 Stadt-Land-Fluss-Datenbank

2.0 Datenbanken und SQL

3.0 SQL-Anweisungen

4.0 Datentypen bei MySQL

4.1 Zeichensätze

4.2 Literale und Escape-Sequenzen

4.3 NULL

5.0 Die Online Stadt-Land-Fluss-Datenbank

5.1 Darstellung SQL-Anweisungen und Nutzung in der Online-DB

6.0 Erste einfache Abfragen

6.1 Alias Namen

6.2 WHERE – Klausel

6.3 AND, OR, NOT - Vergleichsbedingungen und Prädikate

6.4 Wildcards

6.5 Sortieren mit ORDER BY

6.6 Datum

6.7 Übungen - einfache Abfragen

7.0 Join - Arbeiten mit mehreren Tabellen

7.1 Cross-Join

7.2 Inner-Join

7.3 Inner-Join mit USING

7.4 Inner-Join mit USING und WHERE

7.5 Inner-Join mit ON, WHERE und ORDER BY

7.6 Natural-Join

8.0 Definition einer Datenbank

8.1 CREATE, USE und DROP DATABASE

8.2 CREATE und DROP TABLE

8.3 Indizes

8.4 Constraints

8.5 Checks

8.6 Storage-Engines

8.7 Übung - Anlegen einer kleinen Adress-Datenbank

9.0 INSERT - Daten in Tabellen einfügen

9.1 Selektieren eines einzelnen Datensatzes

9.2 Update

9.3 Delete

9.4 Übungen Adress-Datenbank - Insert, Update und Delete

10.0 UNION-Operator

10.1 Kommentarspalten

Anhang 1

A. Verwendete Abkürzungen

B. Zugangscode für die Stadt-Land-Fluss-Datenbank

C. Quellen-Hinweise

D. Index

E. Inhalte der Bände 1 bis 2 - SQL mit MySQL

F. Weitere Hinweise:

Band 2

Einleitung Band 2

2-1.0 Stadt-Land-Fluss-Datenbank

2-1.1 Die Online Datenbank

2-1.2 Darstellung SQL-Anweisungen und Nutzung in der Online-DB

2-2.0 Funktionen und Datentyp-Umwandlungen

2-2.1 Cast-Funktion

2-2.2 EXTRACT-Funktion

2-2.3 Datum-Funktionen

2-2.4 Zeit-Funktionen

2-2.5 Date-Format und Time-Format

2-2.6 Unix Timestamp

2-2.7 Weitere Datum- und Zeit-Funktionen

2-2.8 Umwandlung von Zahlen

2-2.9 String-Funktionen und Umwandlung von Text-Strings

2-2.10 Numerische Funktionen

2-2.11 Trigonometrische Funktionen

2-2.12 Beispiele für die Verwendung von Funktionen

2-2.13 Aggregatfunktionen

2-2.14 GROUP BY

2-3.0 Join - mit zwei oder mehr Tabellen

2-3.1 STRAIGHT_JOIN

2-3.2 Mehrfach dieselbe Tabelle

2-3.3 Übung - Join mit drei Tabellen

2-4.0 Join-Typen

2-4.1 Inner-Join

2-4.2 Cross-Join

2-4.3 Natural-Join

2-4.4 Self-Join

2-4.5 Equi-Join und Non-Equi-Join

2-4.6 Outer-Join

2-4.7 Übung - Join

2-5.0 Unterabfragen (Subqueries)

2-5.1 Korrelierte und nicht-korrelierte Unterabfragen

2-5.2 Skalare Unterabfragen

2-5.3 Unterabfragen mit IN-Operator (1 Spalte, n Zeilen)

2-5.4 Unterabfrage mit ALL-Operator ( 1 Spalte, n Zeilen)

2-5.5 Unterabfragen mit ANY-Operator (1 Spalte, n Zeilen)

2-5.6 Unterabfragen mit mehreren Spalten und Zeilen

2-5.7 Übung - nicht-korrelierte Unterabfragen

2-6.0 Korrelierte Unterabfragen

2-6.1 Unterabfragen mit Exists-Operator

2-6.2 Übung - korrelierte Unterabfragen

2-7.0 Weitere Anwendungsbeispiele mit Unterabfragen

2-8.0 Views

2-9.0 Case

2-9.1 Übung - Case

2-10.0 Transaktionen

2-11.0 NULL - Werte

2-11.1 Reguläre Ausdrücke

2-11.2 Limit-Klausel

2-11.3 Having-Klausel

2-11.4 INTO OUTFILE

2-11.5 Meta-Daten

Anhang 2

2-A. Verwendete Abkürzungen

2-B. Zugangscode für die Stadt-Land-Fluss-Datenbank

2-C. Quellen-Hinweise

2-D. Index

2-E. Inhalte der Bände 1 bis 7 - SQL mit MySQL

2-F. Weitere Hinweise

Impressum

Einleitung

Dieses Buch gibt eine Einführung in SQL auf Basis des relationalen Datenbanksystems MySQL Das Buch ist für alle geeignet, die sich aus beruflichen Gründen, im Rahmen einer Fortbildung oder aus Interesse diesem Thema zuwenden. Ihr könnt viele der im Buch beschriebenen SQL-Abfragen auch online mittels der verfügbaren Online-DB testen und variieren. Das Buch ist in zwei Abschnitte gegliedert: 1) Einführung 2) Für Fortgeschrittene. Hinweise zur Online-Nutzung finden ihr im Kapitel Die Online-Stadt-Land-Fluss-Datenbank. Die Übungsdatenbank ist auf den Seiten von www.SQL-Schule.de zu finden.

SQL ist eine Datenbanksprache für relationale Datenbanken. Mit ihrer Hilfe könnt ihr beispielsweise Datenstrukturen definieren, Daten bearbeiten (Einfügen, Ändern, Löschen) sowie Abfragen auf die enthaltenen Daten formulieren. Dieses Buch setzt einen Schwerpunkt auf die SQL-Abfragen, auch im besonderen Hinblick darauf, dass ihr diese online ausführen und ausprobieren können.

SQL ist die Abkürzung für Structured Query Language. Sie leitete sich von der Sprache SEQUEL (Structured English Query Language) ab, die in den 1970er Jahren von Edgar F. Codd, Donald D. Chamberlin und Raymond F. Boyce entwickelt wurde.

Heutzutage ist eine Datenverarbeitung bei mittleren und großen Anwendungen ohne Datenbanken und SQL kaum noch vorstellbar. Häufig eingesetzte relationale Datenbanksysteme sind:

- MySQL

- Oracle Database

- DB2

- SQL Server

- Ingres

- Informix

- PostgreSQL

- MariaDB

- SQLite und HSQL-DB

1.0 Stadt-Land-Fluss-Datenbank

Die in diesem Buch genutzte relationale Stadt-Land-Fluss-Datenbank ist Grundlage für die im Buch verwendeten Datenbezüge der SQL-Anweisungen und bei den Online-Übungen. Die folgende Abbildung zeigt das Datenbankschema der DB mit den darin enthaltenen Tabellen kontinent, land, stadt, einwohner, gebirge, berg, fluss und meer_see

2.0 Datenbanken und SQL

Datenbanken (engl. Data base, DB) sind Softwaresysteme zur Strukturierung, Speicherung und zum Wiederauffinden von Datensätzen. In aller Regel handelt es sich bei einem Einsatz von Datenbanken um große Datenmengen. Die Strukturierung der Daten sollte den gegebenen realen Zusammenhängen entsprechen. Der Zugriff auf die Daten und die Strukturierung dieser Daten erfolgen mit Hilfe eines Datenbankmanagementsystems (DBMS). Über entsprechende Schnittstellen können auch externe Anwendungen auf die Datensätze oder Datensatzelemente einer Datenbank zugreifen und Operationen wie Hinzufügen, Ändern und Löschen der Daten durchführen.

In den 1960er Jahre entwickelte Edgar F. Codd die Idee von relationalen Datenbanksystemen und schuf das erste relationale DB-System mit dem Namen R1. Die grundsätzliche Neuerung hierbei war, die Daten in der DB als Sätze miteinander verknüpfter Tabellen abzulegen. Als eine hierzu passende Datenmanipulations-.und Anfragesprache wurde die Structured Query Language (SQL) entwickelt.

Wichtige Themen bei Datenbanksystemen sind:

- das Speichern, Ändern und Löschung von Daten

- Maßnahmen zur Erhaltung der Datenintegrität

- die Verwaltung der Datenbankbeschreibungsdaten (z.B. Datenschema)

- die Datensicherheit (z.B. Sicherungskopien-Konzept)

- der Datenschutz (Verhinderung von unerlaubten Zugriffen)

- Zulassung Multi-User-Betrieb durch Transaktionskonzept

- Schaffung von Schnittstellen für Zugriffe auf Daten durch andere Programmen

- Mitführung von Protokollen und Statistiken

Bei relationalen Datenbanksystemen werden die Daten in Tabellen abgelegt. In den Zeilen stehen die Datensätze (engl. Records), in den Spalten die einzelnen Attribute (Satzelemente) der Sätze (z.B. bei der Land-Tabelle der Beispiel-Datenbank die Attribute: id_land, id_kontinent, iso_code, land, ...). Jeder Datensatz einer Tabelle erhält einen primären Schlüssel (engl. Primary Key), der einen Satz eindeutig identifiziert sowie optional weitere Schlüssel für gewichtige Satzelemente. Über diese Schlüssel werden die Sätze der Tabellen miteinander verknüpft - in Beziehung gesetzt. Für die Schlüsselfelder erfolgt das Anlegen von Index-Tabellen, um einen schnellen Zugriff auf die Datensätze oder eine schnelle Sortierung der Daten zu ermöglichen.

Um bei den Daten eine Datenredundanz (unnötige Doppellungen) von gleichen Inhalten und damit Änderungsanomalien auszuschließen, werden die Tabellen normalisiert. So werden zum Beispiel bei den Land-Sätzen die Kontinente, auf welchen sich die Länder geografisch befinden, nicht wiederholt eingetragen, sondern eine zweite Tabelle mit den Kontinenten und den Attributen id_kontinent sowie kontinent (Kontinentname) angelegt. Bei den land-Sätzen ist so die ID des Kontinents in id_kontinent einzutragen anstelle des Kontinentnamens. Auf diese Weise ist der Name des Kontinents nur einmal in der Kontinent-Tabelle vorhanden und alle Sätze aus der land-Tabelle beziehen sich auf einen der in der kontinent-Tabelle eingetragenen Kontinent-Sätze. So ergibt sich aus dieser Verfahrensweise eine Tabelle mit allen verwendeten Kontinenten. Ein land-Satz wird so über den Sekundärschlüssel id_kontinent der land-Tabelle mit dem entsprechenden Primärschlüssel id_kontinent eines kontinent-Satzes verbunden.

Moderne relationale Datenbanksysteme bieten eine eigene Entwicklungs- und Laufzeit-Umgebung. Für große Datenmengen gibt es Systeme, die die Verwaltung von Millionen oder auch Milliarden von Datensätzen zulassen, wie z.B. DB2, Oracle, Ingres, Informix, SQL Server. Bei PC-Systemen war bis in die 1990er Jahre dBase das am häufigsten genutzte DB-System. Es wurde jedoch von Access, Foxpro und anderen an dieser Position abgelöst. Im Zuge von vermehrt online-gestützten Anwendungen entwickelte sich im Internet-Bereich über die Jahre eine Dominanz der Open-Source DB-Systeme MySQL und Postgre.

SQL (Structured Query Language) ist die strukturierte Anfrage-Sprache für relationale Datenbanksysteme. Gleichfalls, wie die Konzeption von relationalen DBs, wurde die Grundlage für SQL durch Edgar F. Codd gelegt. Er wirkte maßgeblich an der Entwicklung der Structured Englisch Query Language (SEQUEL) mit. SEQUEL wurde später durch die Organisationen ANSI und ISO standardisiert und in SQL umbenannt.

Mit Hilfe von SQL-Anweisungen lassen sich Datenbanken definieren und Abfragen für gesuchte Daten formulieren. Zudem können Datensätze durch SQL-Anweisungen geändert, hinzugefügt und gelöscht werden (Daten-Manipulation). Die SQL-Anweisungen lassen sich am DB-System direkt absetzen oder können in dem Quelltext eines Programms eingebunden werden (Embedded SQL).

3.0 SQL-Anweisungen

Die SQL-Anweisungen lassen sich in drei Kategorien unterteilen:

- DDL: Data Definition Language (Definition Datenbankschema)

- DML: Data Manipulation Language (Ändern, Einfügen, Löschen und Lesen)

- DCL: Data Control Language (Rechteverwaltung, Transaktionskontrolle)

Als Beispiel sei hier schon einmal eine einfache DDL-Anweisung dargestellt:

CREATE TABLE kontinent

( id_kontinent CHAR(4),

kontinent VARCHAR(20),

qkm_mio SMALLINT,

CONSTRAINT id_kontinent_pk PRIMARY KEY(id_kontinent)

);

Diese Anweisung erstellt die Tabelle kontinent der Stadt-Land-Fluss-DB mit den Spalten id_kontinent, kontinent und qkm_mio .

Das Erstellen und Ändern von Tabellen sowie das Hinzufügen und Ändern von Datensätzen erläutere ich ausführlicher in den folgenden Kapiteln dieses Buches an Beispielen aus der Stadt-Land-Fluss-DB.

4.2 Literale und Escape-Sequenzen

Literale sind Zeichenfolgen für die Darstellung von Textzeichenketten, numerischen Werten, Datums- und logischen Werten. Literale werden in Programmiersprachen verwendet. In der Regel sind nicht-numerische Literale in Anführungszeichen eingeschlossen darzustellen.

Text-Literal: ‘Dies ist Text‘

Um ein Anführungszeichen selbst in einem Literal zu integrieren, ist das Anführungszeichen doppelt mitzugeben:

zum Beispiel: it’s a sentence als ‘it‘‘s a sentence‘

Für Sonderzeichen können in Text-Literalen bei MySQL folgende Escape-Sequenzen genutzt werden:

\0 ASCII 0 (NULL)

\n Zeilenumbruch chr(13)

\t Tabulator chr(9)

\r Wagenrücklauf chr(10)

\f Seitenvorschub

\b Rückschritt

\' einfaches Anführungszeichen

\" doppeltes Anführungszeichen

\\ Backslash

\% Prozentzeichen

\_ Unterstrich

sowie \octal und \xhexadezimal

Als numerische Literale können folgende Darstellungen verwendet werden:

Zahlen: 100 19.75 +18 -122 -122.01

oder 21.4E+3 100E-2 0.5E+10

Für Datum und Zeit sind nachstehende Literale einsetzbar:

Date: ‘YYYY-MM-DD‘

TIME: ‘HH:MI:SS‘ oder ‘{+|-}HHH:MI:SS‘

YEAR ‘YYYY‘

DATETIME ‘YYYY-MM-DD HH:MI:SS‘

TIMESTAMP ‘YYYY-MM-DD HH:MI:SS‘

mit :

YYYY Jahrhundert und Jahr von 1000 bis 9999

MM Monat von 01 bis 12

DD Tag von 01 bis 31

HH Stunde von 01 bis 23

MI Minute von 01 bis 59

SS Sekunde von 01 bis 59

HHH +/- 838 Stunden

Zum Beispiel ist das Datum 23. August 2014 als ‘2014-08-23‘ und die Uhrzeit 20 Uhr und 30 Minuten als ’20:30:00‘ darzustellen.

4.3 NULL

Ein besonderer Wert in der Datenverarbeitung ist der NULL-Wert. Ein NULL-Wert ist eine leere Menge, d.h. ein Speicherplatz / Speicherwert ist unbelegt - der Wert ist nicht bekannt. Der NULL-Wert ist nicht identisch mit der numerischen Null, der ja den konkreten Wert 0 auf der Zahlengeraden darstellt. Der Umgang mit NULL-Werten wird im Band 2 ausführlich behandelt.

5.0 Die Online Stadt-Land-Fluss-Datenbank

Alle in den anschließenden Kapiteln behandelten Abfragen und eure eigenen Variationen dieser Abfragen könnt ihr auch direkt online mit Hilfe der Stadt-Land-Fluss-Datenbank testen. Die Stadt-Land-Fluss-DB ist Teil der Welt-und-Wirtschaft-DB. Bei Nutzung der Online-DB erhaltet ihr die Ergebnislisten immer direkt angezeigt oder entsprechende Fehlermeldungen des MySQL-Systems.

Die Daten der Datenbank sind auf Grundlage verschiedener Quellen im Internet erfasst, zum Beispiel: www.die-erde.com, www.wikipedia.org, www.welt-blick.de, http://europa.eu und weitere Adressen. Durch Vergleich und nach Abschätzung kann von einer brauchbaren Güte der Daten ausgegangen werden. Für die Korrektheit im Einzelnen kann jedoch keine Garantie gegeben werden.

Die Internet-Adresse und den Freischaltungscode für die Online-Nutzung der Stadt-Land-Fluss-Datenbank findet ihr im Anhang dieses Buches.

5.1 Darstellung SQL-Anweisungen und Nutzung in der Online-DB

SQL-Anweisungen sind prinzipiell am Satzende immer mit einem Semikolon abzuschließen, jedoch

wichtige Hinweise Semikolon:

die Darstellung der SQL-Anweisungen in diesem Buch erfolgt ohne das abschließende Semikolon !!!

Gleichfalls sind auch die SQL-Anweisungen in der Übungs-DB ohne Semikolon auszuführen !!!

Gegebenenfalls ist ein Notieren und Kopieren von SQL-Anweisungen in einem Editor bei den Übungen hilfreich und sinnvoll.

6.0 Erste einfache Abfragen

Als erste Abfrage an die Stadt-Land-Fluss-Datenbank lassen wir uns alle Datensätze der Tabelle kontinent anzeigen. Hierzu gebt ihr folgende SQL-Anweisung - ohne Semikolon am Satzende - ein:

SELECT * FROM kontinent

Als Ergebnis der Anweisung erhaltet ihr nachstehende Liste als Antwort:

Das Auslassungszeichen (Wildcard) * steht für: liste alle Tabellenspalten (Satzelemente der Tabelle).

Sollen nur die Felder id_kontinent und kontinent gelistet werden, so geben wir folgenden Befehl ein:

SELECT id_kontinent, kontinent FROM kontinent

Ihr seht an diesem Beispiel, dass es für Tabellen und Tabellenspalten identische Namen geben kann. Im Beispiel oben ist der Name kontinent als Tabellenname und als Name für eine Tabellenspalte dieser Tabelle vergeben worden.

Wir listen alle Spalten und Sätze der Tabelle berg :

SELECT * FROM berg

Um zu sehen, von welchen Ländern die Berge in der Tabelle berg sind, gebt ihr folgende Anweisung:

SELECT DISTINCT id_land FROM berg

Durch die Angabe DISTINCT werden Sätze mit identischer id_land nur einmal gelistet statt mehrfach.

6.1 Alias Namen

In SQL ist es möglich, in den Anweisungen für die Spaltennamen einen anderen Namen zu verwenden – sogenannte Alias. Ihr seht nachfolgend solche Alias beispielhaft zu der oben gegebenen Anweisung:

SELECT id_kontinent AS ID, kontinent AS ”Name Kontinent” FROM kontinent

Bei den Alias-Namen ist das Wort AS, wie oben zu sehen, einfügbar oder es kann auch weggelassen werden. Nachstehende Anweisung ohne AS ist ebenfalls gültig und führt zum selben Ergebnis:

SELECT id_kontinent ID, kontinent 'Name Kontinent' FROM kontinent

Sollen Leerzeichen im Alias-Namen enthalten sein, wie im Beispiel bei ‚Name Kontinent‘, so ist dieser mit Anführungszeichen zu umschließen.

Zur Vereinfachung der Zuordnung von Spaltennamen zu einem Tabellennamen, könnt ihr gleichfalls für Tabellen-Namen Alias-Namen vergeben, wie es in den folgenden Beispielen zu sehen ist:

SELECT k.id_kontinent ID, k.kontinent 'Name Kontinent' FROM kontinent AS k

oder ohne AS

SELECT k.id_kontinent ID, k.kontinent 'Name Kontinent' FROM kontinent k

Der Tabellen-Alias wird später noch eine sinnvolle Verwendung bei Abfragen mit verknüpften Tabellen finden, um in diesem Zusammenhang gleichlautende Spaltennamen den Tabellen eindeutig zuzuweisen.

6.2 WHERE – Klausel

Ihr lasst euch zunächst alle Datensätze der Tabelle berg ausgeben.

SELECT * FROM berg

Anschließend wollt ihr euch alle in der Datenbank vorhandenen Berge Deutschlands zeigen lassen und hierbei nur die Spalten id_land, name und hoehe.

---ENDE DER LESEPROBE---