Übungsaufgaben zu Mysql
Übungsaufgaben zu Mysql
Übungsaufgaben zu Mysql
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Übungsaufgaben</strong> <strong>zu</strong> MySQL<br />
Die hier gegebenen Aufgabe sind folgendem Buch entnommen:<br />
Martin Pollakowski: "Grundkurs MySQL und PHP", Vieweg-Verlag Braunschweig 2003<br />
Aufgabe 1: Legen Sie eine Datenbank an, wählen Sie die Datenbank aus und legen Sie eine<br />
Tabelle an.<br />
Aufgabe 2: Geben Sie Daten ein und lassen Sie sich den Tabelleninhalt ausgeben. Löschen<br />
Sie einen Datensatz aus der Tabelle.<br />
Aufgabe 3: Geben Sie die SQL-Befehle <strong>zu</strong>m Erzeugen der Datenbank laborgeraete und<br />
der Tabelle messgeraete an. In der Tabelle messgeraete sollen der Name des Gerätes<br />
(max 20 Zeichen), der Hersteller (max 20 Zeichen) und eine Gerätenummer gespeichert<br />
werden.<br />
Aufgabe 4: Geben Sie die SQL-Befehle <strong>zu</strong>m Erzeugen der Datenbank kundendaten und<br />
der Tabelle kundenadresse an. In der Tabelle kundenadresse soll der Name des<br />
Kunden (max 20 Zeichen), sein Wohnort (max 20 Zeichen) und eine Kundennummer<br />
gespeichert werden.<br />
Aufgabe 5: Geben Sie die SQL-Befehle <strong>zu</strong>m Erzeugen der Datenbank fuhrpark und der<br />
Tabelle lkw an. In der Tabelle lkw soll der Modellname des Lkw (max 20 Zeichen), der<br />
Hersteller (max 20 Zeichen), der Standort (maximal 15 Zeichen) und eine Fahrzeugnummer<br />
gespeichert werden.<br />
Aufgabe 6: In der Tabelle lkw von Aufgabe 5 soll ein neuer Datensatz eingefügt werden. Der<br />
Modellname ist Sprinter, der Hersteller ist Mercedes, die Fahrzeugnummer ist 13.<br />
Geben Sie hierfür einen geeigneten SQL-Befehl an.<br />
Aufgabe 7: In die bereits existierende Tabelle kundenadresse (Aufgabe 4) soll noch<br />
nachträglich eine Spalte für eine Postleitzahl eingetragen werden (max 5 Stellen). Geben Sie<br />
einen geeigneten SQL-Befehl an.<br />
Aufgabe 8: Aus der Tabelle messgeraete (Aufgabe 3) sollen alle Geräte gelöscht werden,<br />
die von dem Hersteller Tectronix stammen. Geben Sie einen geeigneten SQL-Befehl an.<br />
Aufgabe 9: Die Tabelle lkw hat die Spalten modellname, hersteller,<br />
fahrzeugnummer und standort. Geben Sie den SQL-Befehl an, der die Spalte standort<br />
aus der Tabelle entfernt.<br />
Aufgabe 10: Welche Wirkung hat die Option NOT NULL, die bei der Definition von<br />
Datenschemata angegeben werden kann? In der Tabelle kundenadresse wird der Name des<br />
Kunden, sein Wohnort und eine Kundennummer gespeichert. Welche Spalten der Tabelle<br />
kundenadresse sollte man mit dieser Option definieren? (bitte begründen)
Aufgabe 11: Welche Wirkung hat die Option AUTO_INCREMENT, die bei der Definition von<br />
Datenschemata angegeben werden kann? In der Tabelle messgeraete ist der Hersteller des<br />
Geräts, der Standort und eine Messgerätenummer gespeichert. Welche Spalten der Tabelle<br />
messgeraete sollte man mit dieser Option definieren? (bitte begründen Sie Ihre Lösung)<br />
Aufgabe 12: Welche Wirkung hat die Option primary key, die bei der Definition von<br />
Datenschemata angegeben werden kann? Die Tabelle lkw enthält den Typ des Lkw, den<br />
Hersteller, den Standort und eine Fahrzeugnummer. Welche Spalten der Tabelle lkw sollte man<br />
mit dieser Option definieren? (bitte begründen)<br />
Aufgabe 13: In eine Tabelle für Kundendaten soll eine Spalte für die Anrede eingeführt werden.<br />
In diese Spalte soll nur Herr oder Frau eingetragen werden können. Welcher Datentyp ist<br />
hierfür geeignet? Geben Sie einen SQL-Befehl an, der eine solche Spaltendefinition bewirkt.<br />
Aufgabe 14: in die Tabelle lkw soll eine Spalte eingeführt werden, in der der aktuelle Standort<br />
des Lkw gespeichert ist. In dieser Spalte sollen nur die folgenden Einträge möglich sein:<br />
Bochum oder Gelsenkirchen oder Herne. Welcher Datentyp ist hierfür geeignet? Geben<br />
Sie einen SQL-Befehl an, der eine solche Spaltendefinition bewirkt.<br />
Aufgabe 15: In eine Tabelle der Messgeräte soll eine Spalte eingeführt werden, in der der<br />
aktuelle Standort des Gerätes gespeichert ist. In dieser Spalte sollen nur die folgenden Einträge<br />
möglich sein: C402 oder C406 oder C303. Welcher Datentyp ist hierfür geeignet? Geben Sie<br />
einen SQL-Befehl an, der eine solche Spaltendefinition bewirkt.<br />
Aufgabe 16: Gegeben sei eine Datei mit dem Dateinamen elemente.txt mit folgendem<br />
Inhalt:<br />
Aluminium;0.0287;0.0038<br />
Eisen;0.13;0.0046<br />
Kupfer;0.0175;0.0040<br />
Silber;0.016;0.0030<br />
wobei die erste Zahl den spezifischen Widerstand des Materials ρ und die zweite Zahl den<br />
Temperaturkoeffizienten (α bei 20 Grad Celsius darstellt.<br />
Lesen Sie diese Datei in eine Tabelle einer Datenbank ein (Befehl: Load Data ... ). Vorher<br />
müssen Sie eine Datenbank und eine Tabelle mit geeignetem Schema erzeugen. Überlegen Sie<br />
insbesondere, welche Typen die einzelnen Spalten haben sollten (int, varchar, float?).<br />
Aufgabe 17: Verändern Sie die in Aufgabe 16 erzeugte Tabelle:<br />
a) Fügen Sie eine weitere Spalte <strong>zu</strong>, in der die Anzahl der Elektronen des Materials<br />
gespeichert werden könnte (als ganze Zahl).<br />
b) Setzen Sie den Standard-Wert dieser Spalte auf 30.<br />
c) Ändern Sie die Bezeichnung der Spalte, in der der spezifische Widerstand abgespeichert<br />
ist und verändern Sie den Spaltentyp auf char(10).
Aufgabe 18: Fügen Sie <strong>zu</strong> der in Aufgabe 16 erzeugten Tabelle eine Nummerierungsspalte hin<strong>zu</strong>.<br />
Darin soll eine Zahl stehen, die als Primärschlüssel definiert ist. Die neue Spalte soll die erste<br />
Spalte der Tabelle sein.<br />
Aufgabe 19: Entwerfen Sie die Datenschemata für den folgenden Anwendungsfall: in einer<br />
Datenbank soll gespeichert werden, welcher Student welche Prüfungen abgelegt hat. Ein Student<br />
muss Prüfungen in mehreren Fächern ablegen. Für jedes Fach soll eine Nummer, ein Name und<br />
ein Dozent gespeichert werden. Für den Studenten soll der Name und eine Matrikelnummer<br />
gespeichert werden. Für jeden Dozenten soll der Name in der Datenbank nur einmal gespeichert<br />
werden, obwohl jeder Dozent mehrere Fächer unterrichtet. Für jede Prüfung soll schließlich das<br />
Datum und die Note gespeichert werden. Geben Sie nur an, wie viele Tabellen benötigt werden<br />
und welche Informationen in den einzelnen Tabellen gespeichert sind (ohne SQL-Code).<br />
Aufgabe 20: Entwerfen Sie die Datenschemata für den folgenden Anwendungsfall: In einer<br />
Datenbank soll gespeichert werden, welcher Mitarbeiter welche Messgeräte ausgeliehen hat. Ein<br />
Mitarbeiter kann dabei mehrere Messgeräte gleichzeitig ausleihen. Für das Messgerät soll eine<br />
Nummer, ein Name und ein Baujahr gespeichert werden. Für den Mitarbeiter der Name und eine<br />
Nummer. Für jede Ausleihe soll schließlich das Ausleihdatum gespeichert werden. Geben Sie nur<br />
an, wie viele Tabellen benötigt werden und welche Informationen in den einzelnen Tabellen<br />
gespeichert sind (ohne SQL-Code).<br />
Aufgabe 21: Entwerfen Sie ein Datenschema für den folgenden Anwendungsfall: In einer<br />
Datenbank soll die Information über den Fuhrpark einer Firma gespeichert werden. Es gibt<br />
Fahrzeuge vom Typ PKW und LKW. Für jedes Fahrzeug soll das Baujahr, der Modellname, der<br />
Hersteller, der Termin der nächsten TÜV-Hauptuntersuchung, der Lieferant des Fahrzeugs<br />
("Autohaus") und der Standort gespeichert werden. Für jeden Lieferanten soll der Name und die<br />
Adresse (Ort, Straße, Telefon) gespeichert werden. Ein Lieferant kann mehrere Fahrzeuge<br />
geliefert haben. Für den Standort, an dem mehrere Fahrzeuge stehen können, soll der Ort und die<br />
Straße gespeichert werden. Geben Sie nur an, wie viele Tabellen benötigt werden und welche<br />
Informationen in den einzelnen Tabellen gespeichert sind (ohne SQL-Code).<br />
Aufgabe 22: Eine Tabelle buch hat die Spalten ti tel und erschei nungsj ahr. Geben Sie den SQL-<br />
Befehl an, der ausgibt, wie viele Bücher im Jahr 1995 erschienen sind.<br />
Aufgabe 23: Eine Tabelle buch hat die Spalten ti tel und erschei nungsj ahr. Geben Sie den SQL-<br />
Befehl an, der alle Titel ausgibt, die nach 1995 erschienen sind. Die Titel sollen alphabetisch<br />
sortiert sein.
Lösungshinweise:<br />
<strong>zu</strong> Aufgabe 1: Beispiel:<br />
create database db01;<br />
use db01;<br />
create table kunden(nummer int, name varchar(20));<br />
<strong>zu</strong> Aufgabe 2: Beispiel:<br />
insert into kunden values (1, "Mayer");<br />
select * from kunden;<br />
delete from kunden where name = "Mayer"<br />
<strong>zu</strong> Aufgabe 3:<br />
create database laborgeraete;<br />
use laborgeraete;<br />
create table messgeraete<br />
(<br />
geraetename varchar(20),<br />
hersteller varchar(20),<br />
geraetenummer int<br />
);<br />
<strong>zu</strong> Aufgabe 4:<br />
create database kundendaten;<br />
use kundendaten;<br />
create table kundenadresse<br />
(<br />
name varchar(20),<br />
wohnort varchar(20),<br />
kundennummer int<br />
);<br />
<strong>zu</strong> Aufgabe 5:<br />
create database fuhrpark;<br />
use fuhrpark;<br />
create table lkw<br />
(<br />
modellname varchar(20),<br />
hersteller varchar(20),<br />
standort varchar(15),<br />
fahrzeugnummer int<br />
);<br />
<strong>zu</strong> Aufgabe 6:<br />
insert into lkw (modellname, hersteller, fahrzeugnummer)<br />
values ("Sprinter", "Mercedes", "Gelsenkirchen", 13);<br />
<strong>zu</strong> Aufgabe 7:<br />
use kundendaten;
delete from messgeraete where hersteller = "Tektronix";<br />
<strong>zu</strong> Aufgabe 8:<br />
use laborgeraete;<br />
alter table kundenadresse add postleitzahl char(5);<br />
<strong>zu</strong> Aufgabe 9:<br />
use fuhrpark;<br />
alter table lkw drop standort;<br />
<strong>zu</strong> Aufgabe 10:<br />
Es macht wenig Sinn, einen Datensatz an<strong>zu</strong>legen, bei der der Kundenname fehlt. Diese Spalte<br />
muss ausgefüllt werden, um einen brauchbaren Datensatz <strong>zu</strong> erhalten. Im vorliegenden Beispiel<br />
sollte die Spalte mit dem Kundennamen die Option NOT NULL erhalten, weil ein Datensatz ohne<br />
Kundennamen wenig Sinn macht.<br />
<strong>zu</strong> Aufgabe 11:<br />
Die Option AUTO_INCREMENT bewirkt, dass der Spalteninhalt der betreffenden Spalte<br />
automatisch inkrementiert (d.h. um 1 erhöht) wird. Wenn beim Einfügen neuer Datensätze in<br />
dieser Spalte nichts eingegeben wird, dann sucht sich MySQL den größten Wert dieser Spalte<br />
und erhöht diesen um 1. Die Festlegung dieser Option erfolgt immer <strong>zu</strong>sammen mit der Option<br />
PRIMARY KEY. Im vorliegenden Beispiel sollte die Spalte mit der Messgerätenummer die<br />
Option AUTO_INCREMENT erhalten. Beim Anlegen eines neuen Datensatzes wird dann<br />
automatisch eine eindeutige Messgerätenummer vergeben.<br />
<strong>zu</strong> Aufgabe 12:<br />
Mit der Option PRIMARY KEY wird festgelegt, dass in der <strong>zu</strong>gehörigen Spalte nur eindeutige<br />
Werte eingetragen werden können. MySQL überwacht die Eingabe und lehnt Eingaben ab, die<br />
den Datensatz nicht eindeutig identifizieren. Im vorliegenden Beispiel sollte die Spalte mit der<br />
Fahrzeugnummer die Option PRIMARY KEY erhalten. Beim Anlegen eines neuen Datensatzes<br />
ist dann sichergestellt, dass eine eindeutige Fahrzeugnummer vergeben wird.<br />
<strong>zu</strong> Aufgabe 13:<br />
Geeignet ist der Typ ENUM. Eine <strong>zu</strong>sätzliche Spalte vom Typ ENUM wird mit der Befehlskombination<br />
alter und add hin<strong>zu</strong>gefügt:<br />
alter table kundendaten add (anrede ENUM("Frau","Herr"));<br />
<strong>zu</strong> Aufgabe 14:<br />
Geeignet ist der Typ ENUM. Eine <strong>zu</strong>sätzliche Spalte vom Typ ENUM wird mit der Befehlskombination<br />
alter und add hin<strong>zu</strong>gefügt:<br />
alter table LKW add<br />
(standort ENUM("Bochum","Gelsenkirchen","Herne"));
<strong>zu</strong> Aufgabe 15:<br />
Geeignet ist der Typ ENUM. Eine <strong>zu</strong>sätzliche Spalte vom Typ ENUM wird mit der Befehlskombination<br />
alter und add hin<strong>zu</strong>gefügt:<br />
alter table messgeraete add (standort ENUM("C402","C406","C303"));<br />
<strong>zu</strong> Aufgabe 16:<br />
Erzeugung von Datenbank und Tabelle:<br />
create database elemente;<br />
use elemente;<br />
create table daten (name varchar(9), roh float, alpha float);<br />
Der Name ist ein Text variabler Länge, wobei der längste Name 9 Zeichen hat. Der spezifische<br />
Widerstand ρ (griechischer Buchstabe "roh") und der Temperaturkoeffizient α (griechischer<br />
Buchstabe "alpha") sind Gleitkommazahlen, daher eignet sich der Typ float. Eingelesen wird<br />
mit dem Befehl<br />
load data local infile "elemente.txt" into table daten fields<br />
terminated by ';';<br />
Wichtig ist hierbei, dass die Spaltenwerte in der angegebenen Datei mit den Trennzeichen ;<br />
(Semikolon) voneinander abgetrennt sind.<br />
<strong>zu</strong> Aufgabe 17:<br />
Die in Aufgabe 16 erzeugte Tabelle daten wird mit den folgenden Befehlen geändert:<br />
a) alter table daten add elektronenzahl int;<br />
b) alter table daten alter elektronenzahl set default 30;<br />
c) alter table daten change roh spezifischerwiderstand char(10);<br />
<strong>zu</strong> Aufgabe 18:<br />
Nachträgliches Einfügen der Nummerierungsspalte nummer als erste Spalte mit den Optionen<br />
Primary Key und AUTO_INCREMENT:<br />
alter table daten add nummer int PRIMARY KEY AUTO_INCREMENT first;<br />
<strong>zu</strong> Aufgabe 19:<br />
Es gibt vier Tabellen.<br />
1.) Die Tabelle Student enthält: Name und Matrikelnummer.<br />
2.) Die Tabelle Dozent enthält: Dozentennummer und Name.<br />
3.) Die Tabelle Fach enthält: Fachnummer, Fachname und Dozentennummer (letztere als<br />
Fremdschlüssel).<br />
4.) Die Tabelle Prüfung enthält: Fachnummer, Matrikelnummer (beide als Fremdschlüssel),<br />
außerdem das Datum und die Note.<br />
<strong>zu</strong> Aufgabe 20:
Es gibt drei Tabellen.<br />
In der Tabelle Mitarbeiter wird eine Nummer und der Name gespeichert.<br />
In der Tabelle Messgeräte wird eine Nummer, ein Name und das Baujahr gespeichert.<br />
In der Tabelle Ausleihe wird für jeden Ausleihvorgang ein Datensatz angelegt. Dieser enthält die<br />
Mitarbeiternummer, die Messgerätenummer und das Ausleihdatum.<br />
<strong>zu</strong> Aufgabe 21:<br />
Es gibt drei Tabellen.<br />
In der Tabelle Lieferant wird eine Lieferantennummer sowie dessen Name und Adresse<br />
gespeichert.<br />
In der Tabelle Standort wird eine Standortnummer sowie Ort und Straße gespeichert.<br />
In der Tabelle Fahrzeug wird für jedes Fahrzeug der Typ, das Baujahr, der Modellname, der<br />
Hersteller, der Termin der nächsten TÜV-Hauptuntersuchung, der Lieferant des Fahrzeugs<br />
(Fremdschlüssel) und der Standort (Fremdschlüssel) gespeichert.<br />
<strong>zu</strong> Aufgabe 22:<br />
select count(*) from buch<br />
group by erscheinungsjahr having erscheinungsjahr = 1995;<br />
<strong>zu</strong> Aufgabe 23:<br />
select titel from buch<br />
where erscheinungsjahr > 1995<br />
order by titel;