====== SQL ====== **SQL** = **S**tructured **Q**uery **L**anguage ===== SELECT-Befehl ===== Was wird gesucht? SELECT `Nachname`, `Vorname` Welche Tabelle? FROM Mitarbeiter Doppelte Ergebnisse nicht anzeigen: SELECT DISTINCT Alle Spalten ausgeben SELECT * ==== Filter ==== === Zahlenfelder === arithmetische Operatoren: +, -, * und / Vergleichen von Zahlenfeldern Vergleichsoperatoren: =, <, >, <=, >=, !=, BETWEEN === Text === SELECT CONCAT (Nachname,',', Vorname) FROM Mitarbeiter; Worte die in eine bestimmte Schablone herausfiltern LIKE SELECT Nachname FROM Mitarbeiter WHERE Nachname LIKE "D%"; ==== Datum und Uhrzeit ==== CURRENT_DATE() CURRENT_TIME() CURRENT_TIMESTAMP() DAY(Datum) MONTH(Datum) YEAR(Datum) ---- SELECT day(geburtsdatum), month(geburtsdatum), nachname, vorname from personal order by month(geburtsdatum); SELECT nachname, vorname, geburtsdatum from personal where YEAR(CURRENT_DATE) - YEAR(geburtsdatum) < 50 OR YEAR(CURRENT_DATE) - YEAR(geburtsdatum) = 50 and MONTH(CURRENT_DATE) < MONTH(geburtsdatum) OR YEAR(CURRENT_DATE) - YEAR(geburtsdatum) = 50 AND MONTH(CURRENT_DATE) = MONTH(geburtsdatum) AND DAY(CURRENT_DATE) < DAY(geburtsdatum); SELECT KategorieNr, SUM(Lagerbestand) AS Summe FROM Artikel GROUP BY KategorieNr; ===== Übungsarbeit Lösung ===== /* Aufgabe 1 */ SELECT `Raumname` FROM `Raume` WHERE Klimaanlage = "y"; /* Aufgabe 2 */ SELECT * FROM `Kontakte` ORDER BY PLZ; /* Aufgabe 3 */ SELECT `Raumname` FROM `Raeume` WHERE Raumname LIKE "1%"; /* Aufgabe 4 */ SELECT `PCName`, `Hersteller` FROM Rechner r, Komponentenliste kl, Komponenten k WHERE r.PCID = kl.PCID AND kl.KompID = k.KompID ORDER BY PCName, Hersteller; /* Aufgabe 5 */ SELECT PCName, Firma FROM rechner r, komponentenliste kl, komponenten k, kontakte kon WHERE r.PCID = kl.PCID AND kl.kompID = k.kompID AND k.ServicepartnerID = kon.KID; /* Aufgabe 6 */ SELECT k.komponente, DateDiff(letzten Service Termin, Anschaffungsdatum) / 365 FROM rechner r, komponentenliste kl, Komponenten k WHERE r.PCID = kl.PCID AND kl.kompID = k.kompID; /* Aufgabe 7 */ SELECT Raumname, PCName FROM Raeume r LEFT JOIN Rechner PC ON PC.Raum = r.RaumID Where PCName IS NULL; /* Aufgabe 8 */ SELECT k1.Firma, k2.Firma, k1.Ansprechpartner FROM kontakte k1, kontakte k2 WHERE k1.Ansprechpartner = k2.Ansprechpartner AND k1.KID > k2.KID; /* Artikelnamen mit "Sir " */ select `Artikelname` from `artikel` where `Artikelname` like "Sir %"; /* Mitarbeiter, die Bestellungen bearbeitet haben bevor sie 30 waren */ SELECT p.Vorname, p.Nachname FROM personal p, bestellungen b WHERE p.PersonalNr = b.PersonalNr AND DATEDIFF(b.Bestelldatum,p.Geburtsdatum)/365 < 30;