====== 2.7) SQL - Structured Query Language======
SQL (**Structured Query Language**) hat sich als Standardabfragesprache für relationale Datenbanken etabliert. SQL stellt die Schnittstelle zwischen der relationalen Datenbank und dem Anwendungsprogramm dar. Es lassen sich damit alle Operationen der Relationenalgebra aus Kapitel 4 realisieren. Die Sprachelement von SQL lassen sich in mehrere Kategorien unterteilen, die allerdings im Standard nicht festgeschrieben sind.
==== Allgemeines ====
=== Öffnen der MySQL-Konsole ===
* Xampp starten mit MySQL
* cmd
* in C:\xampp\mysql\bin wechseln
* mysql -u root
=== MySQL Befehlsreferenz ===
*{{ :inf:inf8bi_201920:2:mysql-befehlsreferenz.pdf |}}
=== Anzeigen von Datenbanken ===
SHOW DATABASES;
=== Erstellen von Datenbanken ===
CREATE DATABASE DBName;
=== Selektieren von Datenbanken ===
USE DBName;
=== Anzeigen von Tabellen in einer Datenbank ===
SHOW TABLES;
=== Anzeigen von Spalten in einer Tabelle ===
SHOW COLUMNS from tabellenname;
=== Löschen von Datenbanken ===
DROP DATABASE DBName;
=== Backup und Restore von Datenbanken ===
* Backup
C:\xampp\mysql\bin>mysqldump -u root db8ai > db8ai.sql
oder alle Datenbanken:
C:\xampp\mysql\bin>mysqldump -u root –all-databases > sicherung.sql
* Restore
mysql> create database db8ai;
mysql> exit;
C:\xampp\mysql\bin>mysql -u root db8ai < db8ai.sql
bzw. alle Datenbanken:
C:\xampp\mysql\bin>mysql -u root -p < sicherung.sql
oder:
mysql> create database db8ai;
mysql> use db8ai;
mysql> source C:\xampp\mysql\bin\db8ai.sql
==== 2.7.1) DDL (Data Definition Language) ====
* Anweisungen zur Anlage und Verwaltung von Datenbankschemata
* Anweisungen zur Definition von Relationen einschließlich der Konsistenzbedingungen
* Anweisungen zur Anlage von Datensichten (Views)
* [[.:2_07:2_07_01| 2.7.1) DDL ]]
* [[.:2_07:2_07_01:2_07_01_01| 2.7.1.1) DDL - Übungen]]
==== 2.7.2) DQL (Data Query Language) ====
* Abfrage von Daten
* [[.:2_07:2_07_02| 2.7.2) Data Query Language]]
* [[.:2_07:2_07_02:2_07_02_01| 2.7.2.1) DQL- Übungen]]
==== 2.7.3) DML (Data Manipulation Language) ====
* Eingabe von Daten in eine vorhandene Tabelle
* Änderung von Daten in einer Tabelle
* Löschung von Daten in einer Tabelle
* [[.:2_07:2_07_03| 2.7.3) DML]]
* [[.:2_07:2_07_03:2_07_03_01| 2.7.3.1) DML - Übungen]]
==== 2.7.4) DCL (Data Control Language) ====
* Anlegen von Benutzern
* Vergabe von Zugriffsrechten
==== Abschlussübung ====
Folgendes ER-Modell ist gegeben und dient als Grundlage für eine Datenbank, welche die
fertiggestellten Häuser dokumentiert.
Annahme: Jeder ORT ist direkt abhängig von der PLZ. D.h. Jeder Ort besitzt eine eigene PLZ!
{{:inf:inf8bi_201920:2:pasted:20210301-072451.png?800}}
===== 1) Relationale Algebra =====
Entwickle die zugehörigen Relationen in der 3. NF. Kennzeichne die Primär (z.B.: unterstreichen und PK dazuschreiben)- und Fremdschlüssel (z.B.: Relation mit . davor schreiben) eindeutig.
===== 2) SQL -> DDL =====
Erstelle die Datenbank mithilfe der SQL-Statements!
===== 3) SQL -> DML =====
Befülle die Datenbank mit folgenden Daten
\\
\\
**Personen** \\
Franz Huber wohnt in der Anzengruberstrasse 6\\
Max Müller wohnt in der Anzengruberstrasse 8\\
Maxima Muster wohnt in der Anzengruberstrasse 7\\
Franz Müller wohnt in der Anzengruberstrasse 9
\\
\\
**Häuser**\\
Massivhaus mit Satteldach auf Grundstück 1010 mit 15000m2 in der Anzengruberstrasse 6 3300 Amstetten\\
Fertighaus (Ausbauhaus) auf Grundstück 1011 mit 4000m2 in der Anzengruberstrasse 7 3300 Amstetten\\
Fertighaus (schlüsselfertig) auf Grundstück 1012 mit 500m2 in der Anzengruberstrasse 8 3300 Amstetten\\
Fertighaus (Rohbau) auf Grundstück 1013 mit 1000m2 in der Anzengruberstrasse 9 3300 Amstetten
===== 4) SQL -> DQL =====
Entwickle folgende SQL-Abfragen.
* Liste alle Personen auf, die den Vornamen Franz haben und in einem Haus mit einer Grundstücksfläche über 1000m2 wohnen.
* Liste jene Grundstücksnummer auf, wo ein Fertighaus mit der Ausbaustufe „Schlüsselfertig“ gebaut wurde.