12.08.2012 Aufrufe

Übungsaufgaben zu Mysql

Übungsaufgaben zu Mysql

Übungsaufgaben zu Mysql

MEHR ANZEIGEN
WENIGER ANZEIGEN

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;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!