Files
ihk-ausbildung/1-Ausbildungsjahr/LF3-Datenbanken/LF3-03-SQL-Grundlagen.md

4.8 KiB

3.3 SQL-Grundlagen

Was ist SQL?

SQL (Structured Query Language) ist die Standardsprache für die Kommunikation mit relationalen Datenbanken.

SQL-Teilsprachen

SQL - Kategorien
├── DDL (Data Definition Language)
│   ├── CREATE     → Objekte erstellen
│   ├── ALTER      → Objekte ändern
│   └── DROP       → Objekte löschen
├── DML (Data Manipulation Language)
│   ├── SELECT     → Daten abfragen
│   ├── INSERT     → Daten einfügen
│   ├── UPDATE     → Daten ändern
│   └── DELETE     → Daten löschen
├── DCL (Data Control Language)
│   ├── GRANT      → Rechte vergeben
│   └── REVOKE     → Rechte entziehen
└── TCL (Transaction Control Language)
    ├── COMMIT     → Transaktion abschließen
    ├── ROLLBACK   → Transaktion zurücksetzen
    └── SAVEPOINT  → Speicherpunkt

Datentypen

Numerisch

Datentyp Beschreibung Bereich
INT Ganzzahl -2 Mrd. bis 2 Mrd.
DECIMAL(p,s) Dezimalzahl p= Stellen, s= Nachkommastellen
FLOAT Gleitkommazahl ~7 Stellen
DOUBLE Doppelte Präzision ~15 Stellen

Zeichenketten

Datentyp Beschreibung max. Länge
CHAR(n) Festlänge 255
VARCHAR(n) Variable Länge 65.535
TEXT Langer Text 65.535+
LONGTEXT Sehr langer Text 4 GB

Datum/Zeit

Datentyp Beschreibung
DATE Datum (JJJJ-MM-TT)
TIME Zeit (HH:MM:SS)
DATETIME Datum + Zeit
TIMESTAMP Unix-Zeitstempel

DDL - Datenbankobjekte erstellen

Tabelle erstellen (CREATE TABLE)

CREATE TABLE Kunde (
    Kunden_ID INT PRIMARY KEY,
    Vorname VARCHAR(50) NOT NULL,
    Nachname VARCHAR(50) NOT NULL,
    E-Mail VARCHAR(100) UNIQUE,
    Geburtsdatum DATE,
    Erstellt_AM TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Tabelle ändern (ALTER TABLE)

-- Spalte hinzufügen
ALTER TABLE Kunde ADD Telefon VARCHAR(20);

-- Spalte ändern
ALTER TABLE Kunde MODIFY E-Mail VARCHAR(150);

-- Spalte löschen
ALTER TABLE Kunde DROP COLUMN Telefon;

Tabelle löschen (DROP TABLE)

DROP TABLE Kunde;

DML - Daten bearbeiten

Daten einfügen (INSERT)

-- Einzelne Zeile
INSERT INTO Kunde (Kunden_ID, Vorname, Nachname, E-Mail)
VALUES (1, 'Max', 'Mustermann', 'max@example.com');

-- Mehrere Zeilen
INSERT INTO Kunde (Kunden_ID, Vorname, Nachname)
VALUES
    (2, 'Anna', 'Schmidt'),
    (3, 'Peter', 'Müller');

Daten ändern (UPDATE)

-- Ein Datensatz
UPDATE Kunde
SET E-Mail = 'max.neu@example.com'
WHERE Kunden_ID = 1;

-- Mehrere Datensätze
UPDATE Kunde
SET Nachname = 'Meier'
WHERE Nachname = 'Müller';

Daten löschen (DELETE)

-- Bestimmte Zeilen
DELETE FROM Kunde WHERE Kunden_ID = 1;

-- Alle Zeilen (Tabelle bleibt)
DELETE FROM Kunde;

SELECT - Daten abfragen

Grundstruktur

SELECT    -- Was?
    Spalten
FROM      -- Woher?
    Tabelle
WHERE     -- Filter
    Bedingung
ORDER BY  -- Sortierung
    Spalte;

Einfache Abfragen

-- Alle Spalten
SELECT * FROM Kunde;

-- Bestimmte Spalten
SELECT Vorname, Nachname FROM Kunde;

-- Mit Alias
SELECT Vorname AS 'Vorname', Nachname AS 'Nachname' FROM Kunde;

WHERE-Klausel

-- Einfache Bedingung
SELECT * FROM Kunde WHERE Nachname = 'Mustermann';

-- Vergleichsoperatoren
SELECT * FROM Kunde WHERE Alter >= 18;
SELECT * FROM Produkt WHERE Preis > 100 AND Preis < 500;

-- LIKE (Mustervergleich)
SELECT * FROM Kunde WHERE Name LIKE 'M%';      -- beginnt mit M
SELECT * FROM Kunde WHERE Name LIKE '%er%';     -- enthält 'er'
SELECT * FROM Kunde WHERE Name LIKE '___';      -- genau 3 Zeichen

-- IN (in Liste)
SELECT * FROM Kunde WHERE Stadt IN ('Berlin', 'Hamburg', 'München');

-- BETWEEN (Bereich)
SELECT * FROM Produkt WHERE Preis BETWEEN 100 AND 500;

Übung: SQL-Grundlagen

Aufgaben

  1. Erstelle eine Tabelle "Produkt" mit ID, Name, Preis, Kategorie
  2. Füge 3 Produkte ein
  3. Ändere den Preis des ersten Produkts auf 99,99
  4. Lösche das teuerste Produkt

Lösung

-- 1. Tabelle erstellen
CREATE TABLE Produkt (
    Produkt_ID INT PRIMARY KEY,
    Name VARCHAR(100),
    Preis DECIMAL(10,2),
    Kategorie VARCHAR(50)
);

-- 2. Daten einfügen
INSERT INTO Produkt VALUES
(1, 'Laptop', 1299.99, 'Elektronik'),
(2, 'Maus', 29.99, 'Zubehör'),
(3, 'Tastatur', 79.99, 'Zubehör');

-- 3. Preis ändern
UPDATE Produkt SET Preis = 99.99 WHERE Produkt_ID = 1;

-- 4. Teuerstes löschen
DELETE FROM Produkt WHERE Preis = (SELECT MAX(Preis) FROM Produkt);

Querverweise


Stand: 2024