# Datenbank
## Einführung
### Datenbanksprachen und Befehle
als Markmap:
```markmap
# SQL
## [DDL](#DDL)<br>Definieren
### CREATE - Erstellen
### ALTER - Ändern
### DROP - Löschen
### TRUNCATE - Inhalte löschen
### RENAME - Umbenennen
## [DML](#DML)<br>Verarbeitung
### INSERT - Einfügen
### UPDATE - Aktualisieren
### DELETE - Löschen
## [DQL](#DQL)<br>Abfragen
### SELECT - Abfragen
## [DCL](#DCL)<br>Berechtigung
### GRANT - Rechte geben
### REVOKE - Rechte entziehen
## [TCL](#TCL)<br>Transaktion
### COMMIT -
### ROLLBACK
```
```plantuml
@startuml
hide circle
entity Saft {
ID (PK)
Saftgut (FK)
Saftart (FK)
Safttyp (FK)
--
Name
Beschreibung
Preis
}
entity Hersteller {
ID (PK)
RegionID(FK)
--
Name
}
entity Saftart {
ID (PK)
--
Bezeichnung
}
entity Saftsorte {
ID (PK)
--
Bezeichnung
}
entity Saftsorte {
SaftID(FK)
RebsorteID (FK)
--
Bezeichnung
}
entity Safttyp {
ID (PK)
--
Bezeichnung
}
entity Region {
ID (PK)
LandID(FK)
--
Name
Beschreibung
}
entity Land {
ID (PK)
--
Name
}
Hersteller "1" -- "n" Saft
Saft "1" -- "n" Saftsorte
Saftsorte "1" -- "n" Saftsorte
Hersteller "n" -- "1" Region
Region "n" -- "1" Land
Saftart "1" -- "n" Saft
Safttyp "1" -- "n" Saft
@enduml
```
```plantuml
@startuml
hide circle
scale 0.8
class Etikett {
+ print()
}
abstract class Decorator extends Etikett {
- etiket: Etikett
+ Decorator(e: Etikett)
}
class SonderpreisDecorator extends Decorator {
- preis: double
+ SonderpreisDecorator(e: Etikett, preis: double)
+ print()
}
class WinterDecorator extends Decorator {
+ WinterDecorator(e: Etikett)
# printWinterAddOn()
+ print()
}
Decorator o-- Etikett
@enduml
```
als Mindmap mit PlantUML:
```plantuml
@startmindmap
- SQL
-- DDL
---_ CREATE - Erstellen
---_ ALTER - Ändern
---_ DROP - Löschen
---_ TRUNCATE - Inhalte löschen
---_ RENAME - Umbenennen
-- DML
---_ INSERT - Einfügen
---_ SELECT - Abfragen
---_ UPDATE - Aktualisieren
---_ DELETE - Löschen
-- DCL
---_ GRANT
---_ REVOKE
-- TCL
---_ COMMIT
---_ ROLLBACK
++ WHERE
+++_ <, >, =, <> - Operatoren
+++_ LIKE - Vergleich
+++_ BETWEEN, IN
+++_ ANY
++ ORDER
+++_ ORDER BY ASC - aufsteigend
+++_ ORDER BY DESC - absteigend
++ GROUP
+++_ GROUP BY - gruppieren
+++_ HAVING - filtern
++ JOIN
+++_ INNER JOIN
+++_ FULL JOIN
+++_ OUTER JOIN
+++_ LEFT JOIN
+++_ RIGHT JOIN
+++_ UNION - zusammenführen
++ FUNCTION
+++_ AVG() - Durchschnitt
+++_ SUM() - Summe
+++_ COUNT() - Anzahl
+++_ MIN() - Maximum
+++_ MAX() - Minimum
++ ALIAS
+++_ AS
@endmindmap
```
Befehlsübersicht SQL:
```plantuml
@startmindmap
- SQL
-- DDL
---_ CREATE
---_ ALTER
---_ DROP
---_ TRUNCATE
---_ RENAME
-- DML
---_ INSERT INTO
---_ SELECT
---_ UPDATE
---_ DELETE
-- DCL
---_ GRANT
---_ REVOKE
-- TCL
---_ COMMIT
---_ ROLLBACK
++ WHERE
+++_ <, >, =, <>
+++_ LIKE
+++_ BETWEEN, IN
+++_ ANY
++ ORDER
+++_ ORDER BY ASC
+++_ ORDER BY DESC
++ GROUP
+++_ GROUP BY
+++_ HAVING
++ JOIN
+++_ INNER JOIN
+++_ FULL JOIN
+++_ OUTER JOIN
+++_ LEFT JOIN
+++_ RIGHT JOIN
+++_ UNION
++ FUNCTION
+++_ AVG()
+++_ SUM()
+++_ COUNT()
+++_ MIN()
+++_ MAX()
++ ALIAS
+++_ AS
@endmindmap
```
```plantuml
@startebnf
select_block =
SELECT,
ALL | DISTINCT,
{column | {expression,
AS,
result_column}
};
SELECT-Statement =
"SELECT", Spalte,
"FROM", Tabelle,
["WHERE"],
["GROUP_BY"],
["HEAVING"],
["ORDER_BY"],
[LIMIT];
SELECT =
SELECT,
[DISTINCT],
columnExpr,
("," columnExpr)*,
INTO tableName;
columnExpr =
expr,
[AS columnName] | aggregator,
"("[DISTINCT] expr ")",
[AS columnName];
columnName = name;
tableName = name;
@endebnf
```
```plantuml
@startebnf
SELECTStatement =
"SELECT", SelectList,
"FROM", TableExpression,
["WHERE" Condition];
Condition = Expression;
GroupByExpression = Column, (",", Column);
LimitExpression = Integer;
Expression = Identifier | Literal | ArithmeticExpression;
@endebnf
```
## DDL
Datendefinitionssprache
## DML
## DCL
## TCL
## Glossar
| Abkürzung | englisch | deutsch |
| :- | :- | :- |
| DCL | data control language | Datenkontrollsprache |
| DDL | data definition language | Datendefinitionssprache |
| DML | data manipulation language | Datenmanipulationssprache |
| DQL | data query language | Datenabfragesprache |
| SQL | structured query language | strukturierte Abfragesprache |
| TCL | transaction control language | Transaktionskontrollsprache |