vault backup: 2026-07-23 10:55:26
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,59 @@
|
||||
|
||||
|
||||
### CREATE TABLE
|
||||
```
|
||||
CREATE TABLE table_name (
|
||||
column_name1 data_type1 constraints1,
|
||||
...
|
||||
)
|
||||
```
|
||||
names = Namen
|
||||
type = Datentyp INTEGER, CHAR(n), DATE...
|
||||
constraints = NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY...
|
||||
FOREIGN KEY A REFERENCES B(A)
|
||||
|
||||
### ALTER TABLE
|
||||
|
||||
```
|
||||
ALTER TABLE table_name #vor allen Befehlen
|
||||
---
|
||||
ADD column_name data_type [constraint];
|
||||
---
|
||||
DROP COLUMN column_name;
|
||||
---
|
||||
ALTER COLUMN column_name new_data_type;
|
||||
---
|
||||
ADD CONSTRAINT constraint_name constraint_type (column_name);
|
||||
---
|
||||
DROP CONSTRAINT constraint_name;
|
||||
```
|
||||
|
||||
DROP TABLE (IF EXISTS) table_name : löscht Tabelle + Daten
|
||||
|
||||
### CREATE VIEW
|
||||
Erstellt Relation mit der gearbeitet werden kann
|
||||
Bsp.:
|
||||
```
|
||||
CREATE VIEW Langzeit_Studierende AS
|
||||
SELECT * FROM Student WHERE Semester >= 10;
|
||||
```
|
||||
DROP VIEW Name zum löschen
|
||||
|
||||
### Indexe
|
||||
Effizienteres Suchen in Tabellen
|
||||
```
|
||||
CREATE [UNIQUE] INDEX <name>
|
||||
ON <Relationsname> (<Attributname> [<Ordnung>]{, <Attributname>
|
||||
[<Ordnung>]})
|
||||
```
|
||||
UNIQUE für eindeutigen Index optional
|
||||
Relationsname = Tabelle
|
||||
Attributname = Spalte
|
||||
Ordnung = ASC / DESC
|
||||
Bsp.:
|
||||
```
|
||||
CREATE UNIQUE INDEX idx_student_semester
|
||||
ON Student (Semester ASC);
|
||||
```
|
||||
|
||||
DROP INDEX Name zum löschen
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
### INSERT
|
||||
```
|
||||
INSERT INTO <tabelle> (spalte1, spalte2, ...) VALUES (wert1, wert2, ...);
|
||||
```
|
||||
|
||||
### UPDATE
|
||||
```
|
||||
UPDATE <tabelle> SET spalte1 = wert1, spalte2 = wert2, ... WHERE <bedingung>;
|
||||
```
|
||||
|
||||
### DELETE
|
||||
```
|
||||
DELETE FROM <tabelle> WHERE <bedingung>;
|
||||
```
|
||||
@@ -0,0 +1,27 @@
|
||||
### SELECT
|
||||
```
|
||||
SELECT MatrNr, Name, Semester from Student
|
||||
```
|
||||
|
||||
Spalte umbenennen
|
||||
`SELECT MatrNr AS InsassenNr from Student`
|
||||
|
||||
Keine Duplikate
|
||||
`SELECT DISTINCT Semester AS Jahrgänge from Student`
|
||||
|
||||
### WHERE
|
||||
|
||||
```
|
||||
SELECT * from Student WHERE Semester = 2
|
||||
---
|
||||
SELECT * from Student s WHERE s.Semester = 2 AND s.Name='Byleth'
|
||||
```
|
||||
|
||||
#### Anatomie einer WHERE Klausel
|
||||
Vergleichsoperatoren: <,>,=,<=,>=,<>
|
||||
BETWEEN
|
||||
LIKE
|
||||
IS NULL / IS NOT NULL
|
||||
AND, OR, NOT
|
||||
+,-,\*,/
|
||||
IN, NOT IN, $\theta$ ANY, $\theta$ ALL, EXISTS mit $\theta$ = Vergleichsoperator
|
||||
@@ -0,0 +1,114 @@
|
||||
![[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
|
||||
`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
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
### BEGIN TRANSACTION
|
||||
Beginnt neue Transaktion
|
||||
`BEGIN TRANSACTION;`
|
||||
|
||||
### COMMIT
|
||||
Änderungen dauerhaft speichern
|
||||
`COMMIT;`
|
||||
|
||||
### ROLLBACK
|
||||
Änderungen rückgängig machen
|
||||
`ROLLBACK;`
|
||||
|
||||
### SAVEPOINT
|
||||
Zwischenzustand erstellen
|
||||
`SAVEPOINT savepoint_name`
|
||||
`ROLLBACK TO savepoint_name`
|
||||
Reference in New Issue
Block a user