🔒
Level 2 gesperrt
Schließe zuerst SQL Island Level 1 ab um dieses Level freizuschalten.
SQL Island 🏝️ Level 2
0 P
×1
❤️❤️❤️
–
📌 SQL-Nachschlagewerk & Notizen
▶ Intro
SQL Island – Level 2
Ein interaktives SQL-Abenteuer


1
–
+10 P
–
💡Tipp anzeigen
sql-island-2.db — Terminal
-- Willkommen zurück. Schreib deine Abfrage.
›
Strg+Enter
HAENDLER (haendlernr, name, herkunft, gilde, rang, gold)
WARE (warennr, name, kategorie, preis, lagerort)
TRANSAKTION (txnr, haendler, ware, menge, datum, typ)
HAFEN (hafennr, name, insel, kapazitaet)
SCHIFF (schiffnr, name, eigentuemer, kapazitaet, hafen)
SQL-Hilfe – Level 2
Alle neuen Konzepte in Level 2.
LEFT JOIN – auch Zeilen ohne Treffer
SELECT h.NAME, t.MENGE
FROM HAENDLER h
LEFT JOIN TRANSAKTION t ON t.HAENDLER = h.HAENDLERNR;
-- Haendler ohne Transaktion: t.MENGE ist NULL
CASE WHEN – bedingte Werte
SELECT NAME,
CASE
WHEN GOLD > 100 THEN 'Reich'
WHEN GOLD > 50 THEN 'Mittelstand'
ELSE 'Arm'
END AS KATEGORIE
FROM HAENDLER;
UPDATE – Daten ändern
UPDATE HAENDLER SET GOLD = GOLD + 10 WHERE NAME = 'Erik';
UPDATE HAENDLER SET RANG = 'Meister' WHERE GOLD > 100;
DELETE – Zeilen löschen
DELETE FROM TRANSAKTION WHERE MENGE = 0;
DELETE FROM HAENDLER WHERE RANG = 'Gesperrt';
UNION – Ergebnisse zusammenführen
SELECT NAME, 'Käufer' AS TYP FROM HAENDLER WHERE TYP = 'K'
UNION
SELECT NAME, 'Verkäufer' AS TYP FROM HAENDLER WHERE TYP = 'V';
Window Functions
SELECT NAME, GOLD,
RANK() OVER (ORDER BY GOLD DESC) AS RANG_NR,
ROW_NUMBER() OVER (ORDER BY GOLD DESC) AS ZEILE
FROM HAENDLER;
CTE – WITH ... AS
WITH REICHE AS (
SELECT * FROM HAENDLER WHERE GOLD > 80
)
SELECT NAME FROM REICHE ORDER BY GOLD DESC;
EXISTS / NOT EXISTS
SELECT NAME FROM HAENDLER h
WHERE EXISTS (
SELECT 1 FROM TRANSAKTION t WHERE t.HAENDLER = h.HAENDLERNR
);
String-Funktionen
SELECT UPPER(NAME), LOWER(HERKUNFT), LENGTH(NAME) FROM HAENDLER;
SELECT SUBSTR(NAME, 1, 3) FROM HAENDLER;
