Name Klasse Datum. GanzeZahl2. Bevor wir weitermachen, schauen wir uns die Struktur der Tabelle mit dem DESC Befehl an: DESC InsertTestTab;

Größe: px
Ab Seite anzeigen:

Download "Name Klasse Datum. GanzeZahl2. Bevor wir weitermachen, schauen wir uns die Struktur der Tabelle mit dem DESC Befehl an: DESC InsertTestTab;"

Transkript

1 Name Klasse Datum 1 Vorbereitung Ziel dieses Aufgabenpaketes ist es, das Verhalten von Datenbanken bezüglich ihrer Datenstruktur zu verstehen. Wie müssen Tabellen strukturiert sein, damit die gewünschten Daten sinnvoll gespeichert werden können. Für diese Übung muss eine MySQL Datenbank laufen. Weiterhin ist der MySQL Client notwendig. Sämtliche SQL Statements müssen in einem eigenen File DDL_Uebung.sql abgespeichert werden. Alle notwendigen Informationen zur Bearbeitung dieser Aufgaben finden sich im SQL Syntax Skript, welches Sie entweder auf dem Klassenlaufwerk oder unter 2 CREATE TABLE Statement Zuerst muss eine Datenbank erzeugt und genutzt werden. Wir nennen unsere Datenbank FirstTestDB und erzeugen sie mit dem CREATE DATABASE Statement. Anschließend wird sie mit USE geöffnet. 3 Einfaches Create TABLE Statement Als nächstes erzeugen wir uns eine Tabelle mit dem Namen InsertTestTab. Damit wir das Verhalten möglichst gut analysieren können, sollen viele unterschiedliche Datentypen vorhanden sein: Spaltenname: ID GanzeZahl1 GanzeZahl2 Zeichen1 Zeichen2 Datum1 Datum2 Datentyp: INT INT INT VARCHAR(10) VARCHAR(10) DATE DATE Die Details zu den Datentypen werden wir uns später ansehen. An dieser Stelle wollen wir uns ausschließlich um das Verhalten der Tabelle bei Einfüge-Operationen kümmern. Bevor wir weitermachen, schauen wir uns die Struktur der Tabelle mit dem DESC Befehl an: DESC InsertTestTab; 4 INSERT Statement Wir schreiben nun einen Datensatz mit dem INSERT-Statement. Hierzu nutzen wir zwei verschiedene Versionen dieses Statements: INSERT INTO InsertTestTab SET ID = 2, GanzeZahl1 = 2, GanzeZahl2 = 3, Zeichen1 = "A", Zeichen2 = "B", Datum1 = " ", Datum2 = " "; bzw. ANPR_05_DDL_Uebung_v05.docx Seite 1

2 INSERT INTO InsertTestTab (ID, GanzeZahl1, GanzeZahl2, Zeichen1, Zeichen2, Datum1, Datum2) VALUES (1, 2, 3, "A", "B", " ", " "); Beide Statements liefern das gleiche Ergebnis. Dies können wir durch einen einfachen SELECT Befehl feststellen: SELECT * FROM InsertTestTab; Die Frage ist nun, welches der beiden INSERT Statements wofür sinnvoller ist. Die erste Syntaxvariante ist aber aufgrund der Schreibweise Spalte = Wert viel übersichtlicher und weniger Fehleranfällig als die zweite Variante, da in der zweiten die Beziehung zwischen Spaltenname und Wert nur über die Reihenfolge sichergestellt wird. Das zweite Statement wiederum wird genutzt, wenn mehrere Datensätze auf einmal geschrieben werden müssen: INSERT INTO InsertTestTab (ID, GanzeZahl1, GanzeZahl2, Zeichen1, Zeichen2, Datum1, Datum2) VALUES (3, 2, 3, "A", "B", " ", " "), (4, 5, 6, "C", "D", " ", " "); Insofern wird empfohlen, bei mehreren Datensätzen die zweite Variante zu nehmen und bei einzelnen Datensätzen die erste Variante. 5 Nullable und Defaultwerte Nun schreiben wir einen neuen Datensatz, allerdings wollen wir NULL Werte in unseren Spalten erreichen. Der einfachste Weg ist es, die NULL Werte direkt in die Tabelle einzutragen. Dies ermöglichen wir mit dem folgenden Statement: INSERT INTO InsertTestTab SET ID = 5, GanzeZahl1 = NULL, GanzeZahl2 = NULL, Zeichen1 = NULL, Zeichen2 = NULL, Datum1 = NULL, Datum2 = NULL; Wenn wir mit unserem SELECT Statement das Ergebnis betrachten, sehen wir die erwarteten Zustände der Spalten nämlich NULL. Nun versuchen wir folgendes Statement: INSERT INTO InsertTestTab SET ID = 6; Wie wir sehen, erreichen wir mit dieser verkürzten Version das gleiche Ergebnis. Dies liegt daran, dass ein Auslassen einer Spalte im Statement keinen Wert schreibt, was aber im Normalfall NULL bedeutet. Nun löschen wir unsere Tabelle wieder mit folgendem Statment: DROP TABLE IF EXISTS InsertTestTab; (Anm.: der Zusatz IF EXISTS macht Skripte sicherer sie produzieren keinen Fehler, wenn sie zweimal hintereinander laufen und die Tabelle vielleicht nicht existiert). Jetzt erzeugen wir die Tabelle neu, ergänzen jedoch unsere Spalten um einige weitere Eigenschaften: Seite 2

3 DDL Uebung Spaltenname: Datentyp: Eigenschaft: ID INT GanzeZahl1 INT NOT NULL GanzeZahl2 INT NOT NULL DEFAULT 99 Zeichen1 VARCHAR(10) NOT NULL Zeichen2 VARCHAR(10) NOT NULL DEFAULT "XX" Datum1 DATE NOT NULL Datum2 DATE NOT NULL DEFAULT " " Ein kurzer Check mit dem DESC Befehl zeigt uns nun die neuen Eigenschaften. Versuchen wir nun das Statement nochmal: INSERT INTO InsertTestTab SET ID = 1; Wie wir sehen, haben die Spalten nun alle definierten Werte. Tragen wir diese in die Tabelle ein: Spaltenname: Datentyp: Eigenschaft: Wert: ID INT GanzeZahl1 INT NOT NULL GanzeZahl2 INT NOT NULL DEFAULT 99 Zeichen1 VARCHAR(10) NOT NULL Zeichen2 VARCHAR(10) NOT NULL DEFAULT "XX" Datum1 DATE NOT NULL Datum2 DATE NOT NULL DEFAULT " " NOT NULL verhindert also, dass in den Spalten der Zustand NULL entsteht, indem ein Standardwert gesetzt wird. Wem dieser nicht gefällt, kann mit Hilfe von DEFAULT einen eigenen Wert setzen. Die Standardwerte werden aber nur dann gesetzt, wenn die Spalte im Statement keine Berücksichtigung findet. Sollten wir explizit einen NULL Wert setzen, so wird das Statement mit einer Fehlermeldung abbrechen. 6 Primärschlüssel Für die nächste Übung benötigen wir eine neue Tabelle, mit folgenden Datentpyen: Spaltenname: Vorname Nachname Geburtsdatum PLZ Datentyp: VARCHAR(30) VARCHAR(30) DATE CHAR(5) Wir erstellen die Tabelle und fügen nun zwei identische Datensätze ein: INSERT INTO KeyTestTab (Vorname, Nachname, Geburtsdatum, PLZ) VALUES ("Hans", "Maier", " ", "12345"), ("Hans", "Maier", " ", "12345"); Wir haben nun zwei Datensätze, welche nicht voneinander unterscheidbar sind. Wenn wir nun einen dieser Datensätze löschen wollen, können wir ihn nicht benennen. Diese Situation ist für eine saubere Datenbasis sehr ungünstig; zumal es kaum Situationen gibt, in denen wir wirklich zwei absolut voneinander unabhängige Datensätze brauchen im Regelfall ist solch eine Situation ein Fehlerfall! Wenn wir diesen nun bereinigen Seite 3

4 wollen, gibt es keine Möglichkeit nur einen von den beiden Datensätzen zu löschen, da das DELETE Statement eine eindeutige Identifikation benötigt: DELETE FROM KeyTestTab WHERE Nachname = "Maier"; Wenn wir dieses Statement ausführen, so werden beide Datensätze gelöscht sein. Es gibt kein Statement wie Lösche den ersten von beiden. Die Einzige Möglichkeit, dieses Dilemma zu umgehen ist es nun, dass die Datenbank sich darum kümmert, dass jeder einzelne Datensatz eindeutig identifizierbar ist. Dies wird mit dem Primary Key (Primärschlüssel) ermöglicht. Wir löschen die Tabelle also wieder und erzeugen sie neu: CREATE TABLE KeyTestTab ( Vorname VARCHAR(30), Nachname VARCHAR(30), Geburtsdatum DATE, PLZ CHAR(5), PRIMARY KEY(Vorname, Nachname) ); Wir haben nun noch eine weitere Eigenschaft hinzugefügt den PRIMARY KEY. Primärschlüsselfelder sind automatisch NOT NULL, was wir mit Hilfe des DESC Befehls sehen können. Sehen wir uns das Verhalten der Tabelle bezüglich gleicher Datensätze nochmal an, indem wir die beiden Datensätze von vorhin nochmal eintragen. Wie wir feststellen, wird der erste Datensatz geschrieben, der zweite wird aber aufgrund einer Primärschlüsselverletzung abgewiesen wir können also keine zwei gleichen Datensätze schreiben wobei die Gleichheit über die Felder Vorname und Nachname definiert wird. Folgendes Statement wird also auch nicht möglich sein: INSERT INTO KeyTestTab (Vorname, Nachname, Geburtsdatum, PLZ) VALUES ("Peter", "Maier", " ", "12345"), ("Peter", "Maier", " ", "12345"); Obwohl es sich offensichtlich um zwei verschiedene Peter Mayer handelt (das sehen wir an den unterschiedlichen Geburtsdaten), dürfen sie nicht geschrieben werden, da Vorname und Nachname identisch sind. Um dies nun zu ermöglichen (Peter Mayer ist nun ein nicht ganz seltener Name), müssten wir das Geburtsdatum ebenfalls in die Liste der Primärschlüssel aufnehmen. Aber wenn wir es genau nehmen, ist auch dies theoretisch problembehaftet, da es bestimmt zwei verschiedene Personen gibt, die gleich heißen und das gleiche Geburtsdatum haben. Grundsätzlich lernen wir hieraus, dass natürliche Schlüssel (also Primärschlüssel auf Basis von Spalten, welche Daten des eigentlichen Objektes halten) keine gute Idee sind! Wir brauchen Alternativen. Üblicherweise wird dies durch ein zusätzliches Schlüsselfeld erledigt, welches künstliche Schlüssel beinhaltet: CREATE TABLE KeyTestTab ( ID INT, Vorname VARCHAR(30), Nachname VARCHAR(30), Geburtsdatum DATE, PLZ CHAR(5), PRIMARY KEY(ID) ); Nun können wir die Datensätze schreiben müssen uns aber für jeden Datensatz einen eigenen künstlichen Schlüssel überlegen (im folgenden Beispiel die 1 und die 2): Seite 4

5 DDL Uebung INSERT INTO KeyTestTab (ID, Vorname, Nachname, Geburtsdatum, PLZ) VALUES (1, "Peter", "Maier", " ", "12345"), (2, "Peter", "Maier", " ", "12345"); Das ist jetzt für den Programmierer etwas umständlich, stets sicher zu sein, dass die ID des neuen Datensatzes wirklich eindeutig ist. Der Weg zuerst zu prüfen, ob die ID nicht existiert um sie anschließend zu schreiben ist problematisch, da zwischen der Prüfung und dem Schreiben ein anderer Client die ID zufällig schreiben könnte das System wäre also bei konkurrierenden Zugriffen fehlerbehaftet. Aus diesem Grund haben die RDBMS im Regelfall einen Automatismus für solche Situationen implementiert das AUTO_INCREMET Feld. 7 AUTO_INCREMENT Feld Löschen wir die Tabelle nochmal und legen sie mit folgendem Statement neu an: CREATE TABLE KeyTestTab ( ID INT AUTO_INCREMENT, Vorname VARCHAR(30), Nachname VARCHAR(30), Geburtsdatum DATE, PLZ CHAR(5), PRIMARY KEY(ID) ); Wir haben das ID Feld nun so konfiguriert, dass es die eindeutige ID automatisch über ein Hochzählen selbst erstellt. Dies prüfen wir, indem wir die beiden Datensätze wieder schreiben, allerdings ohne das ID Feld: INSERT INTO KeyTestTab (Vorname, Nachname, Geburtsdatum, PLZ) VALUES ("Peter", "Maier", " ", "12345"), ("Peter", "Maier", " ", "12345"); Ein SELECT auf die Tabelle zeigt uns nun, dass wir in der ID Spalte tatsächlich unterschiedliche Nummer wiederfinden. Versuchen wir nun, das Verhalten von AUTO_INCREMENT in MySQL nun etwas näher zu analysieren: Schreibe drei weitere Datensätze in die Tabelle, ohne die ID fest anzugeben Lösche den Datensatz mit der ID 5 Schreibe einen neuen Datensatz in die Tabelle, ohne die ID fest anzugeben Schreibe einen neuen Datensatz wobei der ID Wert fest auf 10 gesetzt ist Schreibe einen neuen Datensatz in die Tabelle, ohne die ID fest anzugeben Schreibe einen neuen Datensatz wobei der ID Wert fest auf 9 gesetzt ist Die Interpretation der Ergebnisse liefert nun folgende Erkenntnis: AUTO_INCREMENT beginnt bei 1 zu zählen Der nächste Wert ist immer um 1 höher, als der bis dahin (historisch) höchste Wert in der Tabelle also auch wenn dieser bereits gelöscht wurde Lücken können nur gefüllt werden, wenn die ID explizit angegeben wird Hiermit lassen sich also eindeutige IDs erzeugen, welche auch nach dem Löschen (also auch historisch) eindeutig bleiben. Aufgrund dieser Eigenschaften sind AUTO_INCREMENT Felder oft in Datenbanken zu finden. Seite 5

6 8 Foreign Key Feld Als nächstes kümmern wir uns um die referenzielle Integrität. Hierfür müssen wir unseren USBWebserver umkonfigurieren. Dort im Ordner mysql finden wir die Datei my.ini. Der Eintrag skip-innodb muss auskommentiert werden (in der neuen Version von USBWebserver wird diese Zeile nicht mehr vorhanden sein man hat dort INNODB nun auch als default Engine eingeführt, weshalb dort diese Schritte entfallen): #skip-innodb Anschließend muss Mysql neu gestartet werden (Achtung nicht der USBWebserver, denn das würde die Konfiguration wieder zurücksetzen). Nun können wir zwei Tabellen mit einer Fremdbeziehung erstellen: CREATE TABLE Kunde ( K_ID INT PRIMARY KEY, Name VARCHAR(30) ) ENGINE INNODB; CREATE TABLE Bestellung ( B_ID INT PRIMARY KEY, K_ID INT, Datum DATE, FOREIGN KEY (K_ID) REFERENCES Kunde(K_ID) ) ENGINE INNODB; Die Angabe INNODB ist nur dann notwendig, wenn INNODB nicht die default Engine ist. Jetzt fehlen noch die Daten. Für die Analyse reichen uns zwei Datensätze: INSERT INTO Kunde SET K_ID = 1, Name = "a"; INSERT INTO Bestellung SET B_ID = 10, K_ID = 1, Datum = DATE(NOW()); Versuche nun das Verhalten dieser Tabellen zu analysieren, indem Daten neu eingetragen, gelöscht oder verändert werden. Statement: INSERT INTO Bestellung SET B_ID = 10, K_ID = 2, Datum = DATE(NOW()); DELETE FROM Kunde WHERE K_ID = 1; Verhalten: UPDATE Kunde SET K_ID = 2 WHERE K_ID = 1; 9 Alter Table Statement Tabellen können nachträglich beliebig verändert werden. Hierzu verwenden wir den Syntax des ALTER TA- BLE Statement, welches aufgrund der vielen Optionen eine sehr umfangreiche Dokumentation unter mysql.org erhalten hat. Finde heraus, wie man eine VARCHAR(20) Spalte Namens Name zu der Tabelle InsertTestTab hinzufügen kann, wie anschließend der Spaltenname auf Vorname geändert wird und die Spalte wieder löschen werden kann. Probiere die Statements aus. Gehen wir nochmal kurz auf den Fall ein, dass eine Spalte hinzugefügt wird und zwar in einer Tabelle, welche bereits Datensätze beinhaltet. Hierbei steht die Frage im Raum, mit welchen Werten die Spalten initialisiert werden. Prüfe folgende drei Fälle: Seite 6

7 DDL Uebung Eigenschaft der Spalte: INT Initialer Wert: INT NOT NULL INT DEFAULT 99 Wie wir sehen, ist das Verhalten identisch mit der Situation, dass das Feld in einem Insert nicht explizit belegt wird (siehe Kapitel 5). Nun ändern wir die Eigenschaft einer Tabelle. Dies geht mit zwei verschiedenen Varianten des ALTER TA- BLE Befehls. Gehen wir mal davon aus, dass wir aus der Spalte Zeichen1 ein VARCHAR(20) Feld machen: ALTER TABLE InsertTestTab CHANGE Zeichen1 Zeichen1 VARCHAR(20); Das sieht natürlich etwas merkwürdig aus, da wir den Bezeichner der Tabellenspalte zweimal angeben müssen. Insofern wird das Ändern der Spalteneigenschaften im Regelfall wie folgt erledigt: ALTER TABLE InsertTestTab MODIFY Zeichen1 VARCHAR(20); Hiermit werden sämtliche Eigenschaften der Spalte Zeichen1 neu bestimmt. Die heißt aber auch, dass wenn bspw. ein Defaultwert gesetzt wäre, dieser nun nicht mehr gesetzt ist. Im Wesentlichen sprechen wir hier von einem Typecast, den die Datenbank hier durchführt. Insofern ist es nun für uns von Interesse, wie die Daten innerhalb der Tabelle bei eventuellen Konflikten verändert werden. Für die Nächste Übung sehen wir uns die folgende Tabelle an. Alle vorgegebenen Werte sollen in einer entsprechenden Tabellenspalte hinterlegt werden. Mit Hilfe eines ALTER TABLE Statements sollen nun die Werte geändert werden und das Ergebnis des Typecasts notiert werden. (Bspw. muss der Wert 10 in ein Feld vom Typ INT geschrieben werden und anschließend geprüft werden, wie der Wert sich verändert, wenn aus dem Feld ein TINYINT, DATE, VARCHAR(2) oder VARCHAR(10) Datentyp gemacht wird.) INT TINYINT DATE VARCHAR(2) VARCHAR(10) Hallo Seite 7

8 10 INDEX Erstellung Für das nächste Thema erinnern wir uns nochmal an die Tabellen aus dem Kapitel für Foreing Keys. Hier haben wir die rechts stehende Situation abgebildet. Die Kunden können Bestellungen durchführen. Der Zusammenhang zwischen den beiden Tabellen wird über die K_ID hergestellt. Wenn ein Kunde mit der K_ID 1 eine Bestellung tätigt, so wird diese ID im Datensatz der entsprechenden Bestellung zu finden sein. Sehen wir uns hierzu ein paar Beispieldaten an: Basierend auf den K_ID Werten können wir also feststellen, sie der Kunde zu jeder Bestellung heißt. Gehen wir nun davon aus, dass wir von jeder Bestellung jeden Kundennamen haben wollen, dann muss über die K_ID ein Abgleich von beiden Tabellen gemacht werden. Wenn wir uns nun überlegen, was der Computer hier leisten muss, dann kommen wir auf folgende Schritte: Nehme aus Tabelle Bestellung jeden einzelnen Datensatz und vergleiche ihn mit allen Datensätzen der Tabelle. Dies bedeutet, dass er 5x4 Prüfungen durchführen muss. Dies ist insofern problematisch, weil wir sehr selten nur 5 Datensätze in einer Tabelle haben. Üblicherweise geht es in die Millionen. In solch einem Fall würden wir Laufzeiten erlangen, welche nicht mehr tragbar sind. Um dies zu demonstrieren, sehen wir uns folgende zwei Tabellen an, welche bewusst inperformant gestaltet wurden: Spaltenname: Nachname Vorname Geburtsdatum Beruf Datentyp: VARCHAR(40) VARCHAR(20) DATE VARCHAR(60) Spaltenname: Nachname Vorname Geburtsdatum Ort Datentyp: VARCHAR(40) VARCHAR(20) DATE VARCHAR(60) Die beiden Tabellen beinhalten Berufs- und Wohnortangaben von Personen. Diese wiederum werden über den Nachnamen, Vornamen und dem Geburtsdatum identifiziert. Dies ist wie gesagt eher schlecht designet, für die Demonstration der Indizes ist es jedoch hilfreich. Die Datenbank BigDB beinhaltet nun die beiden Tabellen Wohnort ( Datensätze) und Beruf ( Datensätze). Wenn wir also einen Abgleich wie oben beschrieben machen wollen, muss der Rechner ca. 200 Mrd. Vergleiche durchführen (jeweils auf drei Feldern). Dies wird nicht in einer sinnvollen Zeit zu bewerkstelligen sein. Insofern müssen wir dem Rechner helfen! Die Lösung für dieses Problem heißt Index. Man kann sich einen Index vorstellen, wie ein Schlagwortverzeichnis in einem Buch. Wenn wir also in einem Buch alle Kapitel zum Thema SQL suchen, können wir Seite 8

9 DDL Uebung entweder alle Seiten durchblättern (also ohne Index vorgehen), oder wir suchen uns im Schlagwortverzeichnis alle relevanten Kapitel und gehen dann direkt auf die entsprechenden Seiten. Auf der Datenbank werden durch einen Index (genau wie in einem Buch) extra Daten geschrieben, welche zugriffsoptimiert vorliegen. Sehen wir uns das mal an: Im obigen Beispiel haben wir nun eine Indextabelle für K_ID in der Tabelle Bestellung erstellt. Dadurch können wir die Zuordnung zu der Kundentabelle von oben nach unten geordnet darstellen wir haben die Tabelle somit geordnet. Sind beide Seiten geordnet wenn also das Feld K_ID sowohl in der Kundentabelle, als auch in der Tabelle Bestellung über einen Index verfügen, können wir nun bei der Zuordnung beider Tabellen, die Logik verändern. Die hat eine radikale Reduktion der Vergleichsvorgänge zur Folge. Die Schritte, welche der Rechner nun durchführen muss sind: Nehme den Ersten Datensatz aus der K_ID Indextabelle der Bestellungen und vergleiche ihn mit dem ersten in der Kundentabelle. Wenn Gleichheit herrscht, haben wir einen Match. Wenn nicht und der Wert in der Kundentabelle ist kleiner, nehme den nächsten in der Kundentabelle. Wenn er größer ist, den nächsten Wert in der K_ID Indextabelle der Bestellungen. In der Konsequenz haben wir somit nicht mehr MxN Vergleiche, sondern M+N. Für unsere BigDB mit bzw Datensätzen sind es somit unter 1 Mio Vergleiche! Versuchen wir dies mit der BigDB auszuprobieren. Wir kopieren die BigDB in ein lokales Verzeichnis und starten das Batchfile CreateDatabase.bat. Im Folgenden müssen wir das Installationsverzeichnis der MySQL Binaries angeben also bspw.: C:\Program Files\MySQL\MySQL Server 5.7\bin Und schließlich noch das MySQL Passwort. Die Datenbank installiert sich nun von selbst. Nun starten wir den MySQL Client und öffnen die Datenbank mit USE BigDB. Wenn wir nun folgendes Statement eingeben würden, SELECT count(*) FROM Beruf b, Wohnort w WHERE b.nachname = w.nachname AND b.vorname = w.vorname AND b.geburtsdatum = w.geburtsdatum; müssten wir je nach Rechner bis zu 24h warten, bis das Ergebnis zurückkommt. Dieses Statement zählt alle Datensätze aus den Tabellen Beruf und Wohnort, welche über die Felder Vorname, Nachname und Geburtsdatum zusammenhängen (also die 200 Mrd. Vergleiche). Versuchen wir also von vorneherein mit einem Index zu arbeiten. Hier bieten sich zwei Möglichkeiten entweder wir erstellen pro Spalte einen eigenen Index, oder wir erstellen einen kombinierten Index. Beginnen wir mit den getrennten Indizes. Der Syntax für das Anlegen eines Indexes für die Spalte Vorname in der Tabelle Beruf lautet: Seite 9

10 CREATE INDEX idx_beruf_vorname ON Beruf (Vorname); Da jeder Index einen Namen benötigt, wählen wir eine Konvention, in der die Tabelle und die Spalte auftaucht. Der Befehl läuft auch bei großen Datenmengen nur einige Sekunden. Nun folgen alle weiteren Spalten, sodass wir je einen Index für Vorname, Nachname und Geburtsdatum in den beiden Tabellen Beruf und Wohnort haben. Wenn wir nun das Select ausführen werden wir sehen, dass die Ausführungszeit nun im zweistelligen Sekundenbereich liegen wird: Ausführungszeit mit getrennten Indizes: Löschen wir nun die Indizes wieder. Der Syntax lautet: DROP INDEX idx_beruf_vorname ON Beruf; Jetzt probieren wir den Kombinierten Index aus. Wir erstellen also pro Tabelle nur einen Index, in den wir alle relevanten Spalten eintragen. CREATE INDEX idx_beruf ON Beruf (Vorname, Nachname, Geburtsdatum); CREATE INDEX idx_wohnort ON Wohnort (Vorname, Nachname, Geburtsdatum); Nun starten wir unser SELECT nochmal und notieren wieder die Ausführungszeit: Ausführungszeit mit kombiniertem Index: Wie wir sehen, ist die Ausführungszeit noch weiter gesunken, was jedoch nicht wundern dürfte, da der Rechner sich nun den Abgleich der einzelnen Indextabellen spart. Wir können also festhalten, dass wir bei Feldern, über die Verknüpfungen abgebildet werden, stets ein Index liegen sollte immerhin haben wir die Ausführungszeit von mehreren Stunden auf ein paar Sekunden senken können. Bei Primary Key Feldern ist dies automatisch der Fall, bei den Fremdschlüsselfeldern nicht immer (nur bei InnoDB, aber auch dann nur, wenn wir die Fremdschlüssel beim CREATE TABLE Statement angegeben haben). 11 LOAD DATA INFILE Daten können wir nicht nur mit Hilfe des INSERT INTO Statements in die Datenbank laden. Vor allem größere Datenmengen sollten mit einem alternativen Verfahren geladen werden dem LOAD DATA INFILE. Dieser Befehl ist MySQL spezifisch bei anderen Datenbanken finden sich andere Lösungen (wie SQL*Loader bei Oracle oder dem DB2 LOAD Befehl). Grundgedanke dieser Befehle ist es, aus einem Textfile (auch Flatfile genannt) die Daten strukturiert in die Datenbank zu laden. Hierzu muss mit Hilfe des Befehls (oder wie beim SQL*Loader auch mit Hilfe eines Kontrollfiles) dem System mitgeteilt werden, wie die Daten zu laden sind. Sehen wir uns hierzu mal ein einfaches File an, welches in unsere KeyTestTab Tabelle geladen werden kann: 100 Peter Lustig Karl Huber Wir erzeugen also ein einfaches Textfile mydata.txt und geben die genannten Daten ein. Die Werte werden über einen Tabulator getrennt. Nun versuchen wir das File in unsere Tabelle zu laden: Seite 10

11 DDL Uebung LOAD DATA INFILE 'C:/tmp/myData.txt' INTO TABLE KeyTestTab LINES TERMINATED BY '\r\n'; Der Befehl lädt also die Daten aus dem File direkt in die Tabelle. Hierbei muss aber folgendes sichergestellt sein: Die Reihenfolge der Datenspalten muss mit der Reihenfolge der Tabellenspalten übereinstimmen Das Textfile darf keine Überschriften haben Das Textfile muss Tabsepariert sein In dem Textfile dürfen die Felder nicht mit Anführungsstrichen eingeschlossen sein Versuchen Sie nun den Befehl so abzuändern, dass das Folgende File auch korrekt gelesen werden kann: ;ID:;NN:;VN:;GBD:;PLZ: 1->200;"Lustig";"Peter";" "; >201;"Huber";"Karl";" ";54321 Hinweis: Bei der Nutzung des Befehls LOAD DATA INFILE ist der häufigste Fehler eine falsche Reihenfolge der Befehle. Im Internet steht eine sehr ausführliche Beschreibung dieses Befehls, inklusive notwendiger Reihenfolge! Seite 11

12 12 Lizenz Diese(s) Werk bzw. Inhalt von Maik Aicher ( steht unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Seite 12

Datenbank und Tabelle mit SQL erstellen

Datenbank und Tabelle mit SQL erstellen Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe MySQL 4, 5 Kapitel 16: Fremdschlüssel Gliederung 1 Gliederung 1 Fremdschlüssel sichern die Referenzielle Integrität voneinander abhängiger Tabellen. Um Fremdschlüssel definieren zu können, müssen Sie die

Mehr

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Grundlagen von SQL Informatik 2, FS18 Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Markus Dahinden 13.05.18 1 Grundlagen von SQL (Structured Query Language)

Mehr

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp 5/14/18 Grundlagen von SQL (Structured Query Language) Datenbanksprache Befehle Datenbanken und Tabellen erstellen/verändern Daten manipulieren (eingeben, ändern, löschen) Datenbank durchsuchen (Queries

Mehr

MySQL Installation. AnPr

MySQL Installation. AnPr Name Klasse Datum 1 Allgemeiner Aufbau Relationale Datenbank Management Systeme (RDBMS) werden im Regelfall als Service installiert. Der Zugriff kann über mehrere Kanäle durchgeführt werden, wobei im Regelfall

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden fett und in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche

Mehr

Es geht also um die sogenannte SQL- Data Definition Language.

Es geht also um die sogenannte SQL- Data Definition Language. In diesem Abschnitt werden wir uns die SQL Befehle ansehen, mit denen ein sogenanntes Datenbankschema angelegt, gepflegt und auch wieder gelöscht werden kann. Es geht also um die sogenannte SQL- Data Definition

Mehr

SQL. Datendefinition

SQL. Datendefinition SQL Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer oder logischer Natur sein. Das folgende Kapitel beschäftigt sich mit der

Mehr

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

Erstellen und Verwalten von Tabellen

Erstellen und Verwalten von Tabellen Erstellen und Verwalten von Tabellen Als nächstes müssen die Tabellen der Datenbank Personalwesen erzeugt werden. Die Syntax dazu lautet: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(TABELLENDEFINITION,

Mehr

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer DB-Datenbanksysteme DB-13 043-SQL-DML 1 Mario Neugebauer Einführung Informationsmodellierung Relationales Datenbankmodell Datenbanksprache SQL Einführung Daten-Abfrage-Sprache - DQL Daten-Definitions-Sprache

Mehr

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten

Mehr

Üben von DDL und DML. Ergebnis:

Üben von DDL und DML.   Ergebnis: SQL DDL Üben von DDL und DML https://www.jdoodle.com/execute-sql-online Ergebnis: Befehlsgruppen in SQL DDL Data Definition Language DML Data Manipulation Language CREATE: Tabellen anlegen DROP: Tabellen

Mehr

Folien php/mysql Kurs der Informatikdienste

Folien php/mysql Kurs der Informatikdienste Folien php/mysql Kurs der Informatikdienste 1. Einführung in die Datenbank MySQL Kursbeispiel und Kursziele 1.1 Das Kursbeispiel: eine kleine Personalverwaltung 1.2 Was brauchen wir? 1.3 Ziele Kurs AEMS1,

Mehr

Datenbanken im WI-Unterricht mit

Datenbanken im WI-Unterricht mit Datenbanken im WI-Unterricht mit Inhaltsverzeichnis 1 ER-Modell - Entity Relationship Modell 1 1.1 Entitäten................................................. 2 1.2 Relationen................................................

Mehr

SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP

SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP W. Spiegel Übersicht DDL & DML Relationen definieren: CREATE Primärschlüssel setzen mit primary key Tabellen löschen: DROP Daten speichern: INSERT Daten

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle. Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu

Mehr

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221) Erstellen einer Mitarbeiter-Datenbank 1 Erstellen einer Mitarbeiter-Datenbank Arbeitsauftrag Ziel der Übung Erstellen von Datenbanken mit Hilfe von SQL-Abfragen Aufgabe (1.) Erstellen Sie eine neue Datenbank

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird:

Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird: ALTER TABLE BEFEHLE Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird: Fügt die Spalte Adresse zur Tabelle Kunden hinzu: ALTER TABLE Kunden ADD COLUMN

Mehr

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen 8. Tabellendefinition in SQL 8-1 Tabellendefinitionen 8. Tabellendefinition in SQL 8-2 Inhalt 1. Schlüssel 2. Fremdschlüssel 3. CREATE TABLE-Syntax 4. DROP TABLE 5. ALTER TABLE 8. Tabellendefinition in

Mehr

Datenbanken: Datenintegrität. www.informatikzentrale.de

Datenbanken: Datenintegrität. www.informatikzentrale.de Datenbanken: Datenintegrität Definition "Datenkonsistenz" "in der Datenbankorganisation (...) die Korrektheit der gespeicherten Daten im Sinn einer widerspruchsfreien und vollständigen Abbildung der relevanten

Mehr

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Introduction to Data and Knowledge Engineering. 6. Übung SQL Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

MySQL. MySQL ist ein Datenbanksystem. Es besteht aus einem zentralen Server und aus (mehreren) Clients. Es benutzt einen Dialekt der Sprache SQL.

MySQL. MySQL ist ein Datenbanksystem. Es besteht aus einem zentralen Server und aus (mehreren) Clients. Es benutzt einen Dialekt der Sprache SQL. MySQL Was bieten Datenbanken? Zentralisation von Daten Maschinenunterstützte Weiterverarbeitung Daten werden vielen Benutzern gleichzeitig zur Verfügung gestellt Ausschalten von konkurrierenden Zugriffen

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes

Mehr

Abfragen aus mehreren Tabellen (mit join)

Abfragen aus mehreren Tabellen (mit join) Abfragen aus mehreren Tabellen (mit join) Bislang wurden nur einzelne Tabellen eingesetzt. Das reicht oft auch aus, doch sobald man etwas komplexere Webprojekte realisieren möchten, wird man kaum umhinkommen,

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

SQL,Teil 2: SELECT. W. Spiegel. Übersicht SELECT. Mehrfache Werte vermeiden: SELECT DISTINCT. Ausgabe ordnen: ORDER BY. Projektion.

SQL,Teil 2: SELECT. W. Spiegel. Übersicht SELECT. Mehrfache Werte vermeiden: SELECT DISTINCT. Ausgabe ordnen: ORDER BY. Projektion. SQL,Teil 2: SELECT W. Spiegel Übersicht SELECT Mehrfache Werte vermeiden: SELECT DISTINCT Ausgabe ordnen: ORDER BY Projektion Selektion: WHERE Join mit SELECT Beispiel Aufgaben 1 SELECT Die SELECT-Anweisung

Mehr

Übung PL/SQL Trigger Lösungen

Übung PL/SQL Trigger Lösungen Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

Lösungen der Übungsaufgaben von Kapitel 10

Lösungen der Übungsaufgaben von Kapitel 10 Lösungen der Übungsaufgaben von Kapitel 10 1. Legen Sie mit einem SQL - Befehl eine neue Tabelle PERSON_KURZ mit den Feldern Kurz_Id, Kurz_Name an. Machen Sie das so, dass Kurz_Id der Primärschlüssel wird

Mehr

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten 12.1.2004 Änderungsoperationen bei SQL (Daten) Einfügen neuer Tupel (schon bekannt) INSERT INTO Table (Spalte1, Spalte2)

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Praktische SQL-Befehle

Praktische SQL-Befehle Praktische SQL-Befehle Datenbanksysteme I WiSe 2018/2019 Todor Ivanov DB1 WS2018 1 Praktische SQL-Befehle Nested Selects Inserts Updates Views Triggers Constraints Functions Voraussetzung: Laptop + MySQL/

Mehr

Eine neue Datenbank erstellen

Eine neue Datenbank erstellen Eine neue Datenbank erstellen Eine neue Datenbank erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Das

Mehr

Datenbanksysteme 2013

Datenbanksysteme 2013 Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

Management of Information Systems. Tutorat: Session 3 Einführung in SQL

Management of Information Systems. Tutorat: Session 3 Einführung in SQL Management of Information Systems Tutorat: Session 3 Einführung in SQL 2 Setup 1. XAMPP-Console starten in C:\xampp\ 1. Apache starten bis erscheint 2. MySQL starten bis erscheint 3. An den Rechnern im

Mehr

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff. Indizes Gesucht wird: 44791 Index Normale Tabelle 1. Zugriff 1 44789 2. Zugriff 2 44801 3. Zugriff 3 44797 4. Zugriff 4 44388 5. Zugriff 5 44746 6. Zugriff 6 44787 7. Zugriff 7 44793 8. Zugriff 8 44799

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13 Auf einen Blick Vorwort... 13 Teil 1 Vorbereitung Kapitel 1 Einleitung... 17 Kapitel 2 SQL der Standard relationaler Datenbanken... 21 Kapitel 3 Die Beispieldatenbanken... 39 Teil 2 Abfrage und Bearbeitung

Mehr

Whitepaper. Produkt: combit Relationship Manager 5. Import von Adressen nach Firmen und Personen. combit GmbH Untere Laube Konstanz

Whitepaper. Produkt: combit Relationship Manager 5. Import von Adressen nach Firmen und Personen. combit GmbH Untere Laube Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 5 Import von Adressen nach Firmen und Personen Import von Adressen nach Firmen und Personen - 2 - Inhalt Ausgangssituation

Mehr

Da ist zunächst der Begriff der Menge.

Da ist zunächst der Begriff der Menge. 1 In diesem Abschnitt werden wir uns mit den theoretischen Grundlagen der relationalen Datenbanken beschäftigen. Hierzu werden wir uns die wichtigsten Konzepte, Ideen und Begriffe näher ansehen, damit

Mehr

Datenschutz: Zugriffsrechte in SQL

Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Grundlagen von Datenbanken

Grundlagen von Datenbanken Grundlagen von Datenbanken Aufgabenzettel 4 SQL-Anfragen Überblick: DB-Entwurf und Modellierung Konzeptioneller Entwurf Anforderungen Informationsmodell PNr. Vorname Nachname Geb.Datum Person n Datum kaufen

Mehr

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Schnellübersichten. SQL Grundlagen und Datenbankdesign Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes

Mehr

Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen

Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1 Andreas Heß Hochschule Furtwangen Inhalte heute Einführung ins Entity-Relationship-Modell Einführung ins relationale Modell Umsetzung vom E/R-

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13 Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel

Mehr

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien CREATE TABLE SPEND_STAT ( S_STATUS VARCHAR2(1), STAT_TXT VARCHAR2(15), PRIMARY KEY (S_STATUS) ENABLE ) ; 3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien DDL:

Mehr

ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage nach CHAR oder VARCHAR

ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage nach CHAR oder VARCHAR ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage Zusammenfassung Dieses Dokument beschreibt die Unterschiede zwischen CHAR und VARCHAR Datentyp sowie die Behandlung im SQL Michael Tiefenbacher

Mehr

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO; phpmyadmin SQL Dump version 3.2.4 http://www.phpmyadmin.net Host: localhost Erstellungszeit: 13. April 2011 um 18:44 Server Version: 5.1.41 PHP-Version: 5.3.1 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Eine Einführung in MySQL

Eine Einführung in MySQL LUG Peine Eine Einführung in MySQL Mario Herold LINUX USER GROUP PEINE WWW.LUG- PEINE.ORG This work is licen sed u nd er the Creative Com m on s Attrib ution- - Sh arealike 2.0 Licen se. To view a cop

Mehr

Einführung SQL Data Definition Language (DDL)

Einführung SQL Data Definition Language (DDL) Innsbruck Information System University of Innsbruck School of Management Universitätsstraße 15 6020 Innsbruck Einführung SQL Data Definition Language (DDL) Universität Innsbruck Institut für Wirtschaftsinformatik,

Mehr

Erzeugung und Veränderung von Tabellen

Erzeugung und Veränderung von Tabellen Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen

Mehr

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47 SQL-Sprachvielfalt DML Data Manipulation Language: Daten einfügen, ändern und löschen DQL Data Query Language: Daten abfragen DDL Data Definition Language: Tabellen und andere Strukturelemente erzeugen,

Mehr

Garten - Daten Bank. - survival pack -

Garten - Daten Bank. - survival pack - Garten - Daten Bank - survival pack - Dr. Karsten Tolle PRG2 SS 2017 Inhalt heute Kurz: Motivation und Begriffe SQL (survival pack) create table (Tabelle erzeugen) insert into (Einfügen) select (Anfragen)

Mehr

Willkommen. Datenbanken und Anbindung

Willkommen. Datenbanken und Anbindung Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein

Mehr

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15 Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................

Mehr

MySQL: SELECT-Abfragen über mehrere Tabellen (JOINs)

MySQL: SELECT-Abfragen über mehrere Tabellen (JOINs) MySQL: SELECT-Abfragen über mehrere Tabellen (JOINs) Grau hinterlegte Folien enthalten Detailthemen und sind nicht superwichtig. Beispiel kunden (kunde_id, name, ñort_postleitzahl) orte (postleitzahl,

Mehr

Relationales Datenbanksystem Oracle

Relationales Datenbanksystem Oracle Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information

Mehr

Die Anweisung create table

Die Anweisung create table SQL-Datendefinition Die Anweisung create table create table basisrelationenname ( spaltenname 1 wertebereich 1 [not null],... spaltenname k wertebereich k [not null]) Wirkung dieses Kommandos ist sowohl

Mehr

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition: 1 Referentielle Aktionen Gegeben sei folgende Datendefinition: [10 P.] CREATE TABLE Wissenschaftler( SVNr int PRIMARY KEY, Vorname varchar(25) NOT NULL, Nachname varchar(25) NOT NULL, Gehalt int NOT NULL

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15 Vorwort 13 Kapitel 1 Einleitung 15 Kapitel 2 SQL-der Standard relationaler Datenbanken... 19 2.1 Die Geschichte 19 2.2 Die Bestandteile 20 2.3 Die Verarbeitung einer SQL-Anweisung 22 2.4 Die Struktur von

Mehr

Inhaltsverzeichnis. Einleitung

Inhaltsverzeichnis. Einleitung vn Inhaltsverzeichnis Einleitung Kapitel 1: Eine Einführung in relationale Datenbanken 7 Was ist eine relationale Datenbank? 9 Verknüpfen der einzelnen Tabellen 10 Die Reihenfolge der Zeilen ist beliebig

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision

C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision 15. März 2018 C++ Anwendungskurs 15. März 2018 Daniela Horn 1 Übersicht 1 Motivation 2 Relationale

Mehr

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking Grundlagen von Datenbanken Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking SQL DDL: Referentielle Aktionen (1/3) Potentielle Gefährdung der referentiellen Integrität durch Änderungsoperationen

Mehr

Datenbanken Kapitel 1

Datenbanken Kapitel 1 Datenbanken Kapitel 1 1 Einführung Eine Datenbank dient zum Speichern, Ordnen und Abrufen von Daten verschiedener Art. Man könnte eine Datenbank mit einer Kartei vergleichen, welche diverse Informationen

Mehr

Kapitel 7: Referentielle Integrität

Kapitel 7: Referentielle Integrität Kapitel 7: Referentielle Integrität Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen

Mehr

Datenbanken. Zusammenfassung. Datenbanksysteme

Datenbanken. Zusammenfassung. Datenbanksysteme Zusammenfassung Datenbanksysteme Christian Moser Seite 1 vom 7 12.09.2002 Wichtige Begriffe Attribut Assoziation API Atomares Attribut Datenbasis DBMS Datenunabhängigkeit Datenbankmodell DDL DML DCL ER-Diagramm

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Referenzielle Integrität SQL

Referenzielle Integrität SQL Referenzielle Integrität in SQL aus Referential Integrity Is Important For Databases von Michael Blaha (Modelsoft Consulting Corp) VII-45 Referenzielle Integrität Definition: Referenzielle Integrität bedeutet

Mehr

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern Datenbanken werden durch ein spezielles Programm verwaltet, einen sogenannten Datenbankserver, in unserem Fall den MySQL-Datenbankserver.

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 3 Der Optimizer Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 16 Seite 1 von 16 1. auf Tabellen 2. 3. Optimizer 4. Optimizer RBO 5. Optimizer CBO 6.

Mehr

Integritätsbedingungen Eindeutige Identifikation (1)

Integritätsbedingungen Eindeutige Identifikation (1) 8. Tabellendefinition in SQL 8-1 8. Tabellendefinition in SQL 8-2 Inhalt 1. Schlüssel Tabellendefinitionen 2. Fremdschlüssel 3. CREATE TABLE-Syntax 4. DROP TABLE 5. ALTER TABLE 8. Tabellendefinition in

Mehr

Kapitel 8: Datenintegrität

Kapitel 8: Datenintegrität Kapitel 8: Datenintegrität Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe einer Domäne Jetzt:

Mehr

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung } Create-Table-Befehl CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung } [, ] ) Liste der wichtigsten Datentypen in SQL INTEGER INT SMALLINT NUMERIC(x,y)

Mehr