3.6 KiB
!sql_merged.pdf
SQL Tabellen sind multimengen von tupeln Duplikate möglich!!!
SQL Data Definition Language DDL
- CREATE TABLE: zum Erstellen einer neuen Tabelle
- ALTER TABLE: zum Ändern einer bestehenden Tabelle
- DROP TABLE: zum Löschen einer Tabelle DDL Data Definition Language SQL
SQL Data Manipulation Language DML
- INSERT
- UPDATE
- 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:
- Benutzereingaben validieren: Validieren Sie alle Benutzereingaben, um sicherzustellen, dass sie den erwarteten Datentyp und Format aufweisen.
- Parameterisierte Abfragen verwenden: Verwenden Sie Prepared Statements oder Parameterized Queries, um sicherzustellen, dass Benutzereingaben nicht als Teil des SQL-Codes interpretiert werden.
- Stored Procedures nutzen: Verwenden Sie Stored Procedures, um den Zugriff auf die Datenbank zu kontrollieren und den Umfang der möglichen Angriffe zu reduzieren.
- Least Privilege Prinzip anwenden: Gewähren Sie Ihrer Anwendung nur die minimalen Berechtigungen, die sie benötigt, um auf die Datenbank zuzugreifen.
- 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
- BEGIN TRANSACTION
- COMMIT
- ROLLBACK
- SAVEPOINT
TCL Transaction Control Language SQL
SQL Data Control Language DCL
- GRANT
- REVOKE
GRANT
GRANT permission ON object TO user_or_role [WITH GRANT OPTION];
Berechtigungen z.B.: SELECT, INSERT, UPDATE, DELETE, EXECUTE, ALL PRIVILEGES WITH GRANT OPTION : Berechtigung, Berechtigungen weiterzugeben
REVOKE
REVOKE [GRANT OPTION FOR] permission ON object FROM user_or_role [CASCADE | RESTRICT]`
GRANT OPTION FOR: Nur Berechtigung entziehen, Berechtigungen zu verleihen CASCADE: Entziehe auch alle abgeleiteten Berechtigungen. Optional RESTRICT: Entziehe nichts wenn es abgeleitete Berechtigungen gibt. Optional