tbee's page
   home  work  myself  mixed  guestbook  
   
      INHALT MySQL Praxis Teil III-SQL Befehle

Wer mir was gutes tun will kauft über diesen Link bei Amazon ein !

Praxis Teil III

Wir wollen:

Aufgabe:

Weiter Normalisieren

Ein eigenes ER Modell aufstellen (Auf dem Papier oder gemeinsam an der Tafel?)

Daten in Excel erfassen und einlesen

Eine weitere Tabelle bilden (Adressen)
Trennen von CD und Interpreten
Sinnvolle Indexe anlegen
Eine Select per EXPLAIN überprüfen
Verschiedene Joins ausprobieren
- Welche Interpreten haben meine CDs?
- Wer hat welche CD mit welchem Interpret ausgeliehen?
- Welche CDs sind NICHT ausgeliehen

 


Analyse der Aufgabe: Probleme? Fragen? Optimieren?

 

 

Exemplarische SQL Statments

CREATE TABLE ausgeliehen (
  cd_id int(10) unsigned NOT NULL default '0',
  ausleiher_id int(10) unsigned NOT NULL default '0',
  name varchar(46) NOT NULL default '',
  PRIMARY KEY  (cd_id,ausleiher_id),
  UNIQUE KEY cd_id (cd_id)
) 
INSERT INTO ausgeliehen VALUES (1, 1, 'Thomas');
INSERT INTO ausgeliehen VALUES (2, 1, 'Thomas');
INSERT INTO ausgeliehen VALUES (3, 2, 'Hans');
INSERT INTO ausgeliehen VALUES (4, 2, 'Hans');


ALTER TABLE ausgeliehen ADD INDEX(name)
ALTER TABLE cd.ausgeliehen CHANGE name Vorname VARCHAR(46) NOT NULL 
SELECT titel, interpret, name from cdsammlung c JOIN ausgeliehen a WHERE c.id = a.cd_id SELECT titel, interpret, name FROM cdsammlung c LEFT JOIN ausgeliehen a ON c.id = a.cd_id WHERE a.cd_id IS NULL CREATE TABLE Adressen ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, vorname VARCHAR(64) NOT NULL, nachname VARCHAR(64) NOT NULL, telefon VARCHAR(32) NOT NULL, email VARCHAR(32) NOT NULL, UNIQUE (`id`) ); ALTER TABLE `ausgeliehen` DROP `Vorname`; INSERT INTO `adressen` (`id`, `vorname`, `nachname`, `Telefon`, `email`) VALUES ('', 'Thomas', 'Butz', '0179/6997522', 'tbee@tbee.de'); INSERT INTO `adressen` (`id`, `vorname`, `nachname`, `Telefon`, `email`) VALUES ('', 'Hans', 'Muster', '08150', 'muster@musterman.de'); select * from cdsammlung c LEFT JOIN ausgeliehen a ON c.id = a.cd_id JOIN adressen d WHERE a.ausleiher_id = d.id select * from cdsammlung c LEFT JOIN ausgeliehen a ON c.id = a.cd_id LEFT JOIN adressen d ON a.ausleiher_id = d.id

 

Neue Befehle: ALTER SELECT (mit JOIN) Analyse der Aufgabe: Probleme? Fragen? Optimieren?

 

Druckerversion     [valid html 4.01]      [english]
style: blauer Stylegelber Styleroter Stylegruener StyleStandard Style
© 2001 by  tbee / Impressum last update at: 11.04. 2003 21:04:12
url: www.tbee.de/mysql/p3_praxis.php