Tutorial: SQL lernen mit der Datenbank „fünzigvChr“

Tutorial: SQL lernen mit der Datenbank „fünzigvChr“

Tutorial: SQL lernen mit der Datenbank „fünzigvChr“

Von der Erstellung der Datenbank bis zu Abfragen, Aggregaten und Ranking – spielerisch erklärt mit Asterix & Co.

1) Einführung

Mit der Datenbank „fünzigvChr“ steigen wir spielerisch in die Welt von SQL ein.
Figuren aus den Asterix-Comics – Gallier, Römer und die Bände – dienen als Grundlage
für Tabellen und Abfragen. So lassen sich selbst komplexe SQL-Techniken leicht nachvollziehen.

2) Datenbank erstellen

2.1 Datenbank & Schemas

-- existierende DB löschen und neu erstellen
IF EXISTS (SELECT * FROM sys.databases WHERE name = 'fünzigvChr')
    DROP DATABASE fünzigvChr;

CREATE DATABASE fünzigvChr;
USE fünzigvChr;

-- Schemas anlegen
CREATE SCHEMA gallisch AUTHORIZATION dbo;
CREATE SCHEMA roemisch AUTHORIZATION dbo;

2.2 Tabellen anlegen

-- Tabelle Gallier
CREATE TABLE gallisch.gallier (
  gnr nchar(3) NOT NULL CONSTRAINT gnr_pk PRIMARY KEY,
  gname nvarchar(50) NOT NULL
      CONSTRAINT gname_chk CHECK(gname LIKE '[A-Z]%'),
  gberuf nvarchar(50) NULL,
  wschweine int NULL 
      CONSTRAINT wild_chk CHECK(wschweine BETWEEN 1 AND 200),
  gort nvarchar(50) NULL,
  gbnr nchar(3) NULL
);

-- Tabelle Römer
CREATE TABLE roemisch.römer (
  rnr nchar(3) NOT NULL CONSTRAINT rnr_pk PRIMARY KEY,
  rname nvarchar(50) NOT NULL,
  rrang nvarchar(50) NULL,
  rort nvarchar(50) NULL,
  rbnr nchar(3) NULL
);

-- Tabelle Band
CREATE TABLE gallisch.band (
  bnr nchar(3) NOT NULL CONSTRAINT bnr_pk PRIMARY KEY,
  bname nvarchar(50) NOT NULL,
  bchar nchar(3) NULL,
  banzahl int NULL,
  bjahr datetime NOT NULL
);

2.3 Daten einfügen

-- Gallier
INSERT INTO gallisch.gallier VALUES
('G01','Majestix','Häuptling',10,'Armorica','B01'),
('G02','Asterix','Krieger',10,'Armorica','B01'),
('G03','Obelix','Hinkelsteinlieferant',50,'Armorica','B01');

-- Römer
INSERT INTO roemisch.römer VALUES
('R01','Gaius Julius Cäsar','Imperator','Rom','B01'),
('R02','Gaius Bonus','Zenturio','Kleinbonum','B01');

-- Bände
INSERT INTO gallisch.band VALUES
('B01','Asterix der Gallier','G02',48,'1968-10-29'),
('B04','Der Kampf der Häuptlinge','G01',48,'1969-03-04');

Damit ist die Datenbank einsatzbereit.

3) Die Datenbank „fünzigvChr“ im Überblick

Die Tabellen enthalten zum Beispiel:

  • Gallier: Asterix, Obelix, Miraculix, Falbala
  • Römer: Julius Cäsar, Brutus, Marcus Schmalzlockus
  • Bände: Asterix der Gallier (1968), Asterix als Legionär (1971), Der Papyrus des Cäsar (2015)

4) Erste Abfragen

-- Namen und Berufe aller Gallier
SELECT gname, gberuf FROM gallier;

-- Namen und Wohnorte aller Römer
SELECT rname, rort FROM römer;

-- Anzahl Römer in Kleinbonum
SELECT COUNT(rnr) AS 'Anzahl Römer in Kleinbonum'
FROM römer
WHERE rort = 'Kleinbonum';

5) Sortierungen & Aggregatfunktionen

-- Gallier alphabetisch
SELECT gname FROM gallier
ORDER BY gname ASC;

-- Bände nach Erscheinungsjahr
SELECT * FROM band
ORDER BY bjahr ASC;

-- Gallier mit höchstem Wildschweinkonsum
SELECT TOP(1) gname, wschweine
FROM gallier
ORDER BY wschweine DESC;

6) Erweiterte SQL-Techniken

6.1 OFFSET / FETCH

-- Die 3 stärksten Esser überspringen, 5 weitere ausgeben
SELECT gname, wschweine, gort
FROM gallier
ORDER BY wschweine DESC
OFFSET 3 ROWS FETCH NEXT 5 ROWS ONLY;

6.2 RANK & NTILE

-- Rangfolge nach Wildschweinen
SELECT gname, RANK() OVER(ORDER BY wschweine DESC) AS Rang, wschweine
FROM gallier;

-- Bände in 4 Gruppen
SELECT NTILE(4) OVER(ORDER BY bjahr ASC) AS Kategorie, bname, bjahr
FROM band
ORDER BY bjahr;

6.3 Temporäre Tabellen

-- Hungrige Gallier (10+ Wildschweine)
SELECT gnr, gname, wschweine
INTO #hungrige_gallier
FROM gallier
WHERE wschweine >= 10;

SELECT * FROM #hungrige_gallier;

7) Übungsaufgaben

  1. Finde alle Gallier und die Bände, in denen sie eine Rolle spielen.
  2. Liste die Römer nach Rang, sortiert nach Ort.
  3. Erstelle eine temporäre Tabelle mit allen Römern aus Rom.
  4. Ermittle den Gallier mit dem geringsten Wildschweinkonsum.
  5. Teile die Bände in 3 Gruppen nach Erscheinungsjahr.

8) Fazit

Mit der Datenbank „fünzigvChr“ lernst du SQL praxisnah:
von der Datenbankerstellung über Constraints und Datenbefüllung
bis zu SELECT-Abfragen, Aggregaten, Ranking-Funktionen
und temporären Tabellen.

Datenbank fünzigvChr
Datenbank fünzigvChr

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert