===== Erste Schritte mit SQL =====
**SQL** = **S**tructured **Q**uery **L**anguage -> dt. Strukturierte Abfragesprache
* mit SQL lassen sich gezielte Anfragen an eine Datenbank stellen, die in geeigneter Weise vom Datenbankmanagement abgearbeitet werden.
**SQL teilt sich in 3 Bereiche:**
- **Datendefinitionssprache** (**DDL** = **D**ata **D**efinition **L**anguage)
* mit SQL-Statements aus der DDL werden Datenbankstrukturen bearbeitet
* SQL-Befehle: CREATE, ALTER, DROP
- **Datenmanipulationssprache** (**DML** = **D**ata **M**anipulation **L**anguage)
* Damit werden Daten (-sätze) in einer Datenbank eingefügt, gelöscht und abgefragt
* SQL-Befehle: SELECT, INSERT, DELETE, UPDATE
- **Datenkontrollsprache** (**DCL** = **D**ata **C**ontrol **L**anguage)
* Damit werden Rechte auf die Daten und Objekte festgelegt bzw. geändert
* SQL-Befehle: GRANT, DENY
* In MySQL werden die Datenbanken über den PHPMyAdmin administriert. Im PHPMyAdmin-Webclient sind alle SQL-Sprachelemente.
* Neben den automatisiert erzeugten SQL-Statements können auch über den Reiter SQL-Statements diese frei formuliert werden. Alternativ kann die MySQL-Konsole verwendet werden.
**Vorsicht!** PHPMyAdmin arbeit direkt auf der Datenbank. Löschung von Strukturen sind nicht rückgängig zu machen!
Wiederherstellung nur aus einem Backup möglich!
==== SQL-Befehlsbeispiele: ====
SELECT * FROM kunde.adresse;
* SELECT + FROM = Befehl
* * = alle Datensätze
* kunde = Datenbankname
* adresse = Tabellennanme
Wird der Fokus auf die Datenbank gesetzt (USE [Datenbankname]; -> z.B.: USE kunde;), ist die Angabe der Datenbank im SQL-Befehl optional aber nicht mehr nötig.
SELECT * FROM adressen WHERE kundennummer=4;
Ausgabe des Datensatzes (aller Attribute) mit der Kundennummer gleich 4.
INSERT INTO `firma`.`kunde` (`kundennummer`, `anrede`, `vorname`, `name`) VALUES (4, 'Frau', 'Else', 'Kling');
* Hochkomma rechtsgerichtet ( ` ) für Struktur
* Hochkomma gerade (‘) für Werte
Es wird im Datensatz mit den angegebenen Werten in die Tabelle eingefügt.
UPDATE `firma`.`kunde` SET `name` = ‘Huber‘ WHERE kundennummer=4;
Im Datensatz mit der Kundennummer 4 wird in der Spalte Name der Wert auf Huber geändert.
==== Query und non-Query ====
* **Query** => alle Abfragen mit SELECT
* **non-Query** => Alle SQL-Statements, die keine SELECT-Abfragen sind, sondern Daten einfügt
(INSERT), ändert (UPDATE) oder löscht (DELETE).