====== 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;