Datenbanken

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
<code id="4b3e44988f134">
DROP TABLE Matrikel IF EXISTS;
CREATE TABLE Matrikel(ID INTEGER, Bezeichnung VARCHAR(50));
INSERT INTO Matrikel VALUES (0,'Heilpädagogik');
INSERT INTO Matrikel VALUES (1,'Kommunikationspsychologie');
INSERT INTO Matrikel VALUES (2,'Informatik');
INSERT INTO Matrikel VALUES (3,'Kultur und Management');
INSERT INTO Matrikel VALUES (4,'Soziale Arbeit');
</code>

==Datenbanksprache SQL==

===Datenbank anlegen===
Zuerst legen wir eine sehr einfache Datenbank an. Sie besteht aus nur einer Tabelle <tt>Student</tt>. Die allgemeine Form zur Erstellung einer Tabelle lautet:
'''CREATE TABLE''' ''Tabellenname'' (''Attributname'' ''Datentyp'',...);
 '''Beispiel:'''
 CREATE TABLE KUNDE (ID INTERGER, Nachname VARCHAR(50), Ort varchar(50));

Außerdem sollte man bedenken, dass die anzulegende Tabelle (oder eine gleichnamige andere) bereits existiert.
'''DROP TABLE''' ''Tabellenname'' '''IF EXISTS;'''

<eval id="4b3e44514e418">
DROP TABLE Student IF EXISTS;
CREATE TABLE Student 
  (ID INTEGER, 
   Nachname varchar(50), 
   Vorname varchar(50), 
   PLZ varchar(6), 
   Ort varchar(50), 
   Strasse varchar(50), 
   MNr INTEGER);
</eval>

===Datensätze einfügen===
Der nächste Schritt besteht darin, Datensätze in die Datenbank einzufügen:
 '''INSERT INTO''' ''Tabellenname'' (''Spaltenliste'') '''VALUES''' (''Werte'');
 '''Beispiel:'''
 INSERT INTO KUNDE (ID, Nachname, Ort)) VALUES (10,'Meyer','Görlitz');

<eval id="4b3e44514ebe7">
INSERT INTO Student VALUES (0,'Müller','Franz','02826','Görlitz','Blumenstraße 5',0);
INSERT INTO Student VALUES (1,'Schmidt','Susi','02827','Görlitz','Bäckergaße 3');
INSERT INTO Student VALUES (2,'Adler','Anton','02763','Zittau','Berliner Straße 50');
INSERT INTO Student VALUES (3,'Bär','Bertha','02829','Markersdorf','Bahnhofstraße 3');
INSERT INTO Student VALUES (4,'Meyer','Ben','30001','Hannover','Sonnenblumenweg 4');
INSERT INTO Student VALUES (5,'Schulze','Sebastian','09001','Chemnitz','Kirchstrasse 43');
INSERT INTO Student VALUES (6,'Richter','Rudolf','02763','Zittau','Deckelweg 6');
INSERT INTO Student VALUES (7,'Wasser','Wilhelm','01067','Dresden','Bahnhofstraße 76');
</eval>

===Datensätze abfragen===
Um einzelne Datensätze gezielt zu selektieren, gibt es 
'''SELECT''' * | ''Spaltenliste''
'''FROM''' ''Tabellenliste'' 
'''WHERE''' ''Ausdruck''

 '''Beispiele:''' 
 SELECT * FROM Kunde WHERE Ort = 'Musterstadt';
 SELECT Nachname, Vorname FROM Kunde,Student WHERE Ort = 'Musterstadt' AND Nachname='Schmidt';

<eval id="4b3e44514f3be">
SELECT * FROM Student;
</eval>

==ERD==
[[Bild:Erd.jpg]]

Die Abbildung bezieht sich auf das Beispiel, das Sie in dieser Übung bearbeiten sollen.

==Projektion==
Schreiben Sie eine SQL-Abfrage, die sämtliche Studenten aus der Tabelle '''Student''' anzeigt. Erweitern Sie danach die Abfrage so, dass nur noch Nachname, Vorname und Wohnort angezeigt werden.

<eval id="4aba316215355">;Ihre Abfrage</eval>

==Überlegung ID== 
Diskutieren Sie potenzielle Gründe für die Entscheidung, dass IDs von gelöschten Datensätzen nicht neu vergeben werden.

==Selektion==
Schreiben Sie eine SQL-Abfrage, die alle Studenten aus der Stadt Görlitz anzeigt.

<eval id="4aba316215f14">;Ihre Abfrage</eval>

==Daten einfügen==
Schreiben Sie eine Abfrage, sodass ein sinnvoller Datensatz in die Datenbank Student eingefügt wird.

<eval id="4aba316216adb">;Ihre Abfrage</eval>

==JOIN==
Überlegen Sie sich nun eine Abfrage, welche die beiden Tabellen Studiengang und Student miteinander verknüpft. Dabei sollen alle Studenten mit der Matrikel-ID 2 augegeben werden.
<eval id="4aba31621767f">;Ihre Abfrage</eval>

==Erweiterung der Datenbank==
Erstellen Sie nun eine Tabelle '''Fahrzeug''', welche eine ID, eine Nummernschild und eine Bezeichnung und einen Fremdschlüssel zu der Studenten-ID besitzt. Fügen Sie danach einige Datensätze ein und sehen Sie sich die Resultate an.

<eval id="4aba316218244">;Ihre Abfrage</eval>