U8: SQL
https://www.youtube.com/watch?v=r0Eyhl7AQrM&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=1
Wir zeigen wie die Daten aus einem HTML Formular in einer Datenbank gespeichert und auch ausgelesen werden können.
Damit die SQL Befehl besser erklärt werden können, benötigen wir eine Übersicht der Datenbank. In dieser Skizze sind alle wesentlichen Elemente und ihre Beziehungen zueinander dargestellt. ER-Modell bietet sich dafür an und bedeutet Entitiy-Relationship Modell. Es ist weit verbreitet und wird oft im Zusammenhang mit Datenbank und dem Entwurf von Datenbanken genutzt.
https://www.youtube.com/watch?v=hAxnxdCj4KQ&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=2
Um eine Datenbank betreiben zu können, müssen wir eine Datenbank erzeugen. Dies geschieht mit dem SQL Befhl CREATE Database.
Die Daten werden dann in den Tabellen der Datenbank gespeichert. Diese legen wir ebenfalls mit CREATE und dem zusatz Table an. Jetzt wird es etwas detailerter. Die Tabellen in der Anwendung sind verknüpft. Diese Verknüpfung geschieht über Primärschlüssel und Fremdschlüssel. Datenkonsitenz wird auch über genügen Attribute und eindeutige Datentypen sowie korrekten Zeichensatz hergestellt. Wir sorgen auch für Referenzielle Integrität indem die Fremdschlüssel exakt eingestellt sind.
SQL
SQL (Structured Query Language) hat sich als Abfragesprache für relationale Datenbanken durchgesetzt.
Zu den bekanntesten freien SQL-Datenbanken zählen MySQL, PostgreSQL und MaxDB.
Zu den größten kommerziellen Datenbankherstellern zählen Oracle und IBM.
Statisch/dynamisches SQL
Bei statischem SQL ist die SQL-Anweisung dem Datenbanksystem zum Zeitpunkt der Programmübersetzung bekannt und festgelegt (z. B. wenn die Abfrage eines Kontos vorformuliert ist und zur Laufzeit nur die Kontonummer eingesetzt wird).
Bei dynamischem SQL ist die SQL-Anweisung dem Datenbanksystem erst zum Zeitpunkt der Programmausführung bekannt (z. B. weil der Benutzer die komplette Abfrage eingibt). So sind z. B. alle SQL-Anweisungen, die mittels SQL/CLI oder JDBC ausgeführt werden grundsätzlich dynamisch. Ausgeführt werden dynamische SQL-Anweisungen im Allgemeinen mit execute immediate (SQL-String).
MySQL-Abfragen
CRUD-Prinzip: Das Akronym "CRUD" beschreibt die Datenbankoperationen, auf denen jegliche Kommunikation mit der Datenbank beruht.
Alle Datensätze anzeigen
zeigt alle Datensätze der Tabelle tabellenname
an.
Einzelne Felder aller Datensätze anzeigen
zeigt alle Felder kunde_name
aller Datensätze der Tabelle tabellenname
an.
zeigt alle Felder kunde_name
und kunde_vorname
aller Datensätze der Tabelle tabellenname
an.
Einschränkungen mit WHERE
Schränkt die Ausgabe auf alle Kunden aus Hamburg ein. Groß- und Kleinschreibung ist hier nicht relevant (Hamburg, hamburg).
Platzhalter mit LIKE %
findet die Orte “Ostfreiburg”, “Freiburg West” und “Freiburg-Süd”. Die Prozentzeichen sind Platzhalter für eine beliebige (oder keine) Zeichenfolge.
Verknüpfung von Abfragen mit OR und AND
Ausgabe sortieren mit ORDER BY
sortiert nach Kunde-ID aufsteigend (bei Text: alphabetisch aufsteigend).
sortiert nach Ort und dann nach Name (d.h. innerhalb eines Ortes nach Name, alphabetisch aufsteigend).
Um nicht aufsteigend, sondern absteigend zu sortieren, hängt man ein DESC an:
SELECT * FROM tabellenname ORDER BY kunde_name DESC
Aktualisierung eines Datensatzes durch UPDATE:
Statt id=3 kann auch ein anderes eindeutig identifizierendes Feld benutzt werden.
Ändern der Tabellenstruktur mit ALTER TABLE:
Mit ALTER TABLE tabellenname [Spezifikation]
wird eine Tabelle verändert. Mögliche Spezifikationen:
RENAME
– benennt die Tabelle um, z.B.
ADD COLUMN
– fügt ein Feld hinzu, z.B.
Die Position kann mit FIRST und AFTER angegeben werden (FIRST = neues Feld wird an den Anfang gesetzt, AFTER feldname
= neues Feld wird nach feldname
eingefügt).
DROP COLUMN
– löscht ein Feld, z.B.
CHANGE
– Änderung eines Feldes, wobei die Attribute des Feldes neu angegeben werden müssen, z.B.
oder um nur die Attribute zu ändern
Löschen von Daten mit DELETE
DELETE
löscht einen/mehrere Datensätze aus einer Tabelle. Mit
würden sämtliche Datensätze einer Tabelle gelöscht werden. Durch die Einschränkung WHERE
…
… würden im Beispiel alle Datensätze gelöscht werden, in denen das Feld id
den Wert 8
hat.
Löschen einer ganzen Tabelle mit DROP TABLE
Quelle: http://www.informatikzentrale.de/mysql-abfragen.html
Anhang | Größe |
---|---|
SQL-Datenbank.pdf | 364.78 KB |
comelio_sql_referenz_web_I.pdf | 2 MB |
Kommentare
Hallo Janmorres,
die Lösung ist korrekt - bis auf einen formalen Fehler.
Der Semikolon muss ans Ende. Mehrere Tabellen werden mit Kommata abgetrennt.
Viele Grüße
Thomas Hagenhofer