====== 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.