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