T-SQL Grundkurs für Anfänger | Datenbanken & Tabellen

📘 T-SQL Grundkurs

Datenbanken · Tabellen · Datentypen · Schlüssel & Relationen

für Anfänger | Microsoft SQL Server (T-SQL)
1 Was ist T-SQL?
Transact-SQL (T-SQL) ist die Erweiterung von SQL für Microsoft SQL Server und Azure SQL. Mit T-SQL kannst du Datenbanken verwalten, Tabellen erstellen, Daten einfügen, abfragen und vieles mehr. In diesem Grundkurs lernst du die wichtigsten DDL (Data Definition Language) Befehle: CREATE DATABASE, CREATE TABLE sowie Primär- und Fremdschlüssel.
2 Datenbank anlegen
Eine Datenbank ist der Container für alle Tabellen, Views, Prozeduren usw. Mit CREATE DATABASE erstellst du eine neue Datenbank. Danach wechselst du mit USE in den Kontext dieser Datenbank.
-- Datenbank "SchulungsDB" erstellen CREATE DATABASE SchulungsDB; GO -- zur neu erstellten Datenbank wechseln USE SchulungsDB; GO
💡 Tipp: Der Befehl GO signalisiert in SSMS das Ende eines Batches. Für einfache Skripte ist es oft hilfreich. Eine Datenbank kann man mit DROP DATABASE SchulungsDB; löschen (Vorsicht!)
3 Wichtige T-SQL Datentypen
Jede Spalte in einer Tabelle benötigt einen definierten Datentyp. Hier die am häufigsten verwendeten:
DatentypBeschreibungBeispielwert INTGanze Zahlen (von -2 Mrd. bis +2 Mrd.)42, -7, 1000 BIGINTSehr große Ganzzahlen9876543210 VARCHAR(n)Zeichenkette mit variabler Länge (n = max. Länge)'Max Mustermann' NVARCHAR(n)Unicode-Text, z.B. für Umlaute/InternationalN'Müller' DATENur Datum (Jahr-Monat-Tag)'2025-03-20' DATETIMEDatum + Uhrzeit'2025-03-20 14:30:00' DECIMAL(p,s)Genaue Dezimalzahlen (p=Gesamtstellen, s=Nachkomma)19.99 BITBoolean (0,1 oder NULL)1 (wahr) / 0 (falsch)
✅ Beispiel: ALTER TABLE ... ADD Geburtsdatum DATE;
4 Tabellen erstellen & Primärschlüssel (PRIMARY KEY)
Mit CREATE TABLE legst du eine neue Tabelle fest. Jede Tabelle sollte einen Primärschlüssel besitzen – eine Spalte (oder Kombination), die jeden Datensatz eindeutig identifiziert. Der Primärschlüssel darf keine NULL-Werte enthalten und muss eindeutig sein.
-- Tabelle "Kunden" mit Primärschlüssel "KundenID" CREATE TABLE Kunden ( KundenID INT PRIMARY KEY, -- Eindeutige ID, automatisch NOT NULL Vorname VARCHAR(50) NOT NULL, Nachname VARCHAR(50) NOT NULL, Email VARCHAR(100) UNIQUE, Registrierungsdatum DATE DEFAULT GETDATE() );
🔑 Primärschlüssel (PK): Im Beispiel ist KundenID der Primärschlüssel. Du kannst auch CONSTRAINT PK_Kunden PRIMARY KEY (KundenID) schreiben. Oft nutzt man IDENTITY(1,1) für automatische Nummernvergabe:
-- Mit automatischer IDENTITY CREATE TABLE Produkte ( ProduktID INT IDENTITY(1,1) PRIMARY KEY, ProduktName NVARCHAR(100) NOT NULL, Preis DECIMAL(10,2) );
5 Relationen & Fremdschlüssel (FOREIGN KEY)
Tabellen werden durch Fremdschlüssel (Foreign Key) miteinander verbunden. Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle und stellt die Beziehung (Relation) zwischen den Datensätzen sicher. Typische Beziehungen: 1:n (ein Kunde → viele Bestellungen).
📌 Beispiel: Kunde ↔ Bestellung (1:n Beziehung)
Ein Kunde kann mehrere Bestellungen aufgeben, aber jede Bestellung gehört zu genau einem Kunden.
Die Tabelle Bestellungen erhält eine Spalte KundenID als Fremdschlüssel, der auf Kunden(KundenID) verweist.

📇 Tabelle Kunden (PK)

CREATE TABLE Kunden ( KundenID INT PRIMARY KEY, Name VARCHAR(80) );

📦 Tabelle Bestellungen (FK)

CREATE TABLE Bestellungen ( BestellID INT PRIMARY KEY, Bestelldatum DATE, KundenID INT, FOREIGN KEY (KundenID) REFERENCES Kunden(KundenID) );
🧩 Fremdschlüssel-Syntax:
FOREIGN KEY (spaltenname) REFERENCES andereTabelle(primärschlüsselspalte)
Du kannst auch benannte Constraints verwenden: CONSTRAINT FK_Bestellung_Kunde FOREIGN KEY (KundenID) REFERENCES Kunden(KundenID)
⚠️ Wichtig: Bevor du einen Fremdschlüssel anlegst, muss die referenzierte Tabelle (z.B. Kunden) bereits existieren. Fremdschlüssel sorgen für referenzielle Integrität – du kannst keine Bestellung für einen nicht existierenden Kunden anlegen.
6 Praxisbeispiel: Kursverwaltung
Jetzt setzen wir alles zusammen: Datenbank, zwei Tabellen (Kurse und Teilnehmer) mit Primär- und Fremdschlüssel. Ein Teilnehmer kann in einem Kurs angemeldet sein (vereinfacht 1:n).
-- 1. Datenbank anlegen CREATE DATABASE Kursportal; GO USE Kursportal; GO -- 2. Tabelle Kurse (Mastertabelle) CREATE TABLE Kurse ( KursID INT IDENTITY(1,1) PRIMARY KEY, Titel NVARCHAR(100) NOT NULL, DauerTage INT, Preis DECIMAL(8,2) ); -- 3. Tabelle Teilnehmer (mit Fremdschlüssel auf Kurse) CREATE TABLE Teilnehmer ( TeilnehmerID INT IDENTITY(1,1) PRIMARY KEY, Vorname NVARCHAR(50) NOT NULL, Nachname NVARCHAR(50) NOT NULL, Email VARCHAR(120) UNIQUE, KursID INT NULL, -- Fremdschlüsselspalte (NULL erlaubt, falls noch kein Kurs) CONSTRAINT FK_Teilnehmer_Kurs FOREIGN KEY (KursID) REFERENCES Kurse(KursID) ); -- (optional) INSERT Beispiel-Daten (keine Pflicht für den Kurs) -- INSERT INTO Kurse (Titel, DauerTage, Preis) VALUES ('T-SQL Grundlagen', 3, 299.00); -- INSERT INTO Teilnehmer (Vorname, Nachname, Email, KursID) VALUES ('Anna', 'Weber', Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.', 1);
✨ Erklärung:
  • IDENTITY sorgt für automatisch wachsende IDs.
  • KursID in der Teilnehmer-Tabelle ist der Fremdschlüssel, der auf Kurse(KursID) verweist.
  • Die Beziehung ermöglicht es, jeden Teilnehmer einem bestehenden Kurs zuzuordnen.
7 Weitere Relationstypen & gute Praxis
🔗 1:n (One-to-Many) – das obige Beispiel (Kurs → Teilnehmer).
🔗 n:m (Many-to-Many) – z.B. Teilnehmer besuchen mehrere Kurse, und Kurse haben viele Teilnehmer. Hier benötigt man eine Verknüpfungstabelle (Join-Tabelle) mit zwei Fremdschlüsseln.
-- Beispiel n:m zwischen Teilnehmer und Kurs CREATE TABLE KursTeilnehmer ( KursID INT FOREIGN KEY REFERENCES Kurse(KursID), TeilnehmerID INT FOREIGN KEY REFERENCES Teilnehmer(TeilnehmerID), Anmeldedatum DATE DEFAULT GETDATE(), PRIMARY KEY (KursID, TeilnehmerID) -- zusammengesetzter Primärschlüssel );
Primärschlüssel vs. Fremdschlüssel – Zusammenfassung:
  • Primärschlüssel (PK): Eindeutige ID pro Zeile, kein NULL, jede Tabelle sollte einen haben.
  • Fremdschlüssel (FK): Verbindet zwei Tabellen, kann NULL sein (optional) und verweist auf einen PK einer anderen Tabelle.
📌 T-SQL Kurzreferenz (Anfänger)
Befehl / KonzeptBeispiel
Datenbank erstellenCREATE DATABASE MeineDB;
Datenbank wechselnUSE MeineDB;
Tabelle anlegenCREATE TABLE Test (ID INT PRIMARY KEY, Name VARCHAR(50));
Primärschlüssel nachträglichALTER TABLE Test ADD PRIMARY KEY (ID);
Fremdschlüssel hinzufügenALTER TABLE Bestellungen ADD FOREIGN KEY (KundenID) REFERENCES Kunden(KundenID);
Spalte löschenALTER TABLE Test DROP COLUMN Name;
💡 Mit SELECT * FROM INFORMATION_SCHEMA.TABLES kannst du alle Tabellen einer Datenbank anzeigen. Für Fremdschlüssel-Informationen nutze sp_fkeys 'Tabellenname'.
✏️ Mini-Übung zum Mitdenken
Aufgabe: Erstelle zwei Tabellen für eine Bibliothek: Autoren (AutorID, Name, Geburtsjahr) und Buecher (BuchID, Titel, Erscheinungsjahr, AutorID). Definiere Primärschlüssel in beiden Tabellen und einen Fremdschlüssel in Buecher, der auf Autoren verweist. (Lösung als Denkanstoß unten)
-- Lösungsvorschlag: CREATE TABLE Autoren ( AutorID INT PRIMARY KEY, Name NVARCHAR(80) NOT NULL, Geburtsjahr INT ); CREATE TABLE Buecher ( BuchID INT PRIMARY KEY, Titel NVARCHAR(150) NOT NULL, Erscheinungsjahr INT, AutorID INT, FOREIGN KEY (AutorID) REFERENCES Autoren(AutorID) );
🧠 Grundkurs T-SQL für Einsteiger – Datenbanken, Tabellen, Primär- und Fremdschlüssel • Nächste Schritte: INSERT, SELECT, UPDATE, JOINs
Alle Beispiele sind für Microsoft SQL Server (T-SQL) geeignet. Viel Erfolg beim Lernen!