---
# System prepended metadata

title: Datenbank
tags: [Datenbank]

---

# 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   |
