![[sql_merged.pdf]] SQL Tabellen sind multimengen von tupeln Duplikate möglich!!! ## SQL Data Definition Language DDL 1. CREATE TABLE: zum Erstellen einer neuen Tabelle 2. ALTER TABLE: zum Ändern einer bestehenden Tabelle 3. DROP TABLE: zum Löschen einer Tabelle [[DDL Data Definition Language SQL]] ## SQL Data Manipulation Language DML 1. INSERT 2. UPDATE 3. DELETE [[DML Data Manipulation Language SQL]] ## SQL Data Query Language DQL | SQL | Argumente | Relationale Algebra | | ---------- | ------------------ | ------------------- | | **SELECT** | Liste von Namen | $\pi$ | | **FROM** | Liste von Tabellen | $\times$ | | **WHERE** | Bedingung | $\sigma$ | [[DQL Data Query Language SQL]] ## Aggregatfunktionen in SQL COUNT zählt Anzahl der Zeilen `SELECT COUNT(*) FROM Tabelle WHERE Bedingung;` SUM summiert werte einer Spalte `SELECT SUM(Spalte) FROM Tabelle WHERE Bedingung;` AVG berechnet Durchschnitt `SELECT AVG(Spalte) FROM Tabelle WHERE Bedingung;` MIN gibt kleinsten wert einer spalte zurück `SELECT MIN(Spalte) FROM Tabelle WHERE Bedingung;` MAX gibt höchsten Wert einer Spalte zurück `SELECT MAX(Spalte) FROM Tabelle WHERE Bedingung;` ## GROUP BY Gruppiert Zeilen basierend auf Werten einer oder mehrerer Spalten `SELECT Spalte1, AVG(Spalte2) FROM Tabelle GROUP BY Spalte1;` ### HAVING Filtert Abfragen mit Aggregatfunktion UND Group By `SELECT Spalte1, COUNT(*) FROM Tabelle GROUP BY Spalte1 HAVING COUNT(*) > 5;` ## ORDER BY Sortiert Ergebnisse `SELECT Spalte1, Spalte2 FROM Tabelle ORDER BY Spalte1 ASC, Spalte2 DESC` ## LIMIT OFFSET FETCH LIMIT < n > um max n Zeilen auszugeben OFFSET < n > überspringe n Zeilen am Anfang OFFSET FETCH Bsp.: `SELECT Spalte1 FROM Tabelle ORDER BY Spalte OFFSET n ROWS FETCH NEXT m ROWS ONLY` ## SQL-INJECTIONS SQL Code in Eingabefelder einfügen. Nur wenn eingaben nicht überprüft / gereinigt werden! Um SQL-Injection-Angriffe zu verhindern, sollten Sie folgende Sicherheitsmaßnahmen ergreifen: 1. Benutzereingaben validieren: Validieren Sie alle Benutzereingaben, um sicherzustellen, dass sie den erwarteten Datentyp und Format aufweisen. 2. Parameterisierte Abfragen verwenden: Verwenden Sie Prepared Statements oder Parameterized Queries, um sicherzustellen, dass Benutzereingaben nicht als Teil des SQL-Codes interpretiert werden. 3. Stored Procedures nutzen: Verwenden Sie Stored Procedures, um den Zugriff auf die Datenbank zu kontrollieren und den Umfang der möglichen Angriffe zu reduzieren. 4. Least Privilege Prinzip anwenden: Gewähren Sie Ihrer Anwendung nur die minimalen Berechtigungen, die sie benötigt, um auf die Datenbank zuzugreifen. 5. Escaping von Eingaben: Wenn die Verwendung von Parameterized Queries oder Stored Procedures nicht möglich ist, stellen Sie sicher, dass Benutzereingaben korrekt "escaped" werden, um schädliche Zeichen zu neutralisieren. ## SQL Transaction Control Language TCL 1. BEGIN TRANSACTION 2. COMMIT 3. ROLLBACK 4. SAVEPOINT [[TCL Transaction Control Language SQL]] ## SQL Data Control Language DCL 1. GRANT 2. REVOKE ### GRANT