103 lines
3.1 KiB
Markdown
103 lines
3.1 KiB
Markdown
![[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
|