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

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

Praxis Teil II

Wir wollen:

Aufgabe:

Aus unser ursprünglichen Tabelle eine normalisiertere Form erstellen.
Aus einer Tabelle zwei Tabellen generieren und Daten anpassen.
Datensätze aus beiden Tabellen zusammenführen.
Eine Tabelle anlegen und diese wieder löschen.
Datensätze verändern und löschen
Einen bestehenden Datensatz löschen.
Verändern eines bestehenden Datensatzes
Einen Schlüssel (Primary key) für jede Tabelle anlegen!

 

Analyse der Aufgabe: Probleme? Fragen? Optimieren?

 

Mögliches DB Design:

Exemplarische SQL Statments:

CREATE TABLE cdinterpret

SELECT interpret
FROM cdsammlung
GROUP BY interpret;

DROP TABLE cdinterpret;

CREATE TABLE cdinterpret
(
   ID int(12) NOT NULL AUTO_INCREMENT PRIMARY KEY,
   interpret char(32) NOT NULL
)

SELECT interpret
FROM cdsammlung
GROUP BY interpret

INSERT INTO cdinterpret
   (interpret)
VALUES
   ('Alice in Chains'),
   ('All Star'), ('Hallelulija'),
   ('Helloween'),
   ('Nationalgalerie'),
   ('Soundtrack'),
   ('stone temple pilots'),
   ('TALK'),
   ('Westernhagen')

UPDATE cdsammlung SET interpret = 1 WHERE interpret = 'Alice in Chains';
UPDATE cdsammlung SET interpret = 2 WHERE interpret = 'All Star';
UPDATE cdsammlung SET interpret = 3 WHERE interpret = 'Hallelulija';
UPDATE cdsammlung SET interpret = 4 WHERE interpret = 'Helloween';
UPDATE cdsammlung SET interpret = 5 WHERE interpret = 'Nationalgalerie';
UPDATE cdsammlung SET interpret = 6 WHERE interpret = 'Soundtrack';
UPDATE cdsammlung SET interpret = 7 WHERE interpret = 'stone temple pilots';
UPDATE cdsammlung SET interpret = 8 WHERE interpret = 'TALK';
UPDATE cdsammlung SET interpret = 9 WHERE interpret = 'Westernhagen';

Ausblick auf die nächste Theorie...
SELECT cdsammlung.titel, cdinterpret.interpret
FROM cdsammlung, cdinterpret
WHERE cdinterpret.id = cdsammlung.interpret AND cdinterpret.id = 1


UPDATE cdinterpret SET interpret='Talk' WHERE interpret = 'TALK';

DELETE from cdinterpret WHERE interpret = 'Talk';

 

Gibt es auch eine elegantere Lösung?

Mit Hilfe eines SELECTS lässt sich direkt ein CREATE TABLE antriggern:

 
CREATE  TABLE interpreten
    (     id int NOT  NULL  AUTO_INCREMENT, 
        primary key(id)  
    )
    AS
    SELECT interpret
    FROM `cdsammlung` ;
    
# Oder aber ohne Dubletten

CREATE  TABLE interpreten
    (     id int NOT  NULL  AUTO_INCREMENT, 
        primary key(id)  
    )
    AS
    SELECT lower(interpret) 
    FROM `cdsammlung` 
    GROUP BY lower(interpret);

Alternative Syntax für einen CREATE/SELECT :

SELECT interpret FROM `cdsammlung` INTO interpreten 

 

SQL Befehle: UPDATE DELETE DROP Noch einmal Normalisierung

 

Druckerversion     [valid html 4.01]      [english]
style: blauer Stylegelber Styleroter Stylegruener StyleStandard Style
© 2001 by  tbee / Impressum last update at: 19.05. 2003 20:05:16
url: www.tbee.de/mysql/p2_praxishtm.php