Dieser Lernzettel richtet sich nach den möglichen Themen von Teil 2 der gestreckten Abschlussprüfung (GAP) für Fachinformatiker Anwendungsentwicklung vom IT-Berufe-Podcast.
Inhaltsverzeichnis
SQL: Die Structured Query Language
SQL (Structured Query Language) ist eine normierte Sprache, die in relationalen Datenbanken verwendet wird.
Grundlegende Begriffe und Konzepte
Kreuzprodukt/kartesishes Produkt
- Die komplette Kombination aller Datensätze einer Tabelle mit allen Datensätzen einer anderen Tabelle.
SQL Untergruppen und übliche Statements
Data Definition Language (DDL)
- CREATE: Erstellt neue Datenbanken, Tabellen, Indizes, Views oder Procedures.
- ALTER: Modifiziert bestehende Tabellen.
- DROP: Löscht z.B. Datenbanken, Tabellen, Views, usw.
Data Manipulation Language (DML)
- INSERT: Fügt neue Datensätze in eine Tabelle ein.
- UPDATE: Modifiziert bestehende Datensätze in einer Tabelle.
- DELETE: Entfernt Datensätze aus einer Tabelle.
Data Query Language (DQL)
- SELECT: Ruft Datensätze aus einer oder mehreren Tabellen ab.
Data Control Language (DCL)
- GRANT: Gibt Benutzern Berechtigungen.
- REVOKE: Entzieht Benutzern Berechtigungen.
Transaction Control Language (TCL)
- COMMIT: Bestätigt Transaktionen.
- ROLLBACK: Setzt Transaktionen zurück.
CRUD (Create, Read, Update, Delete) Operationen
- CREATE:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
- READ:
SELECT * FROM table_name;
- UPDATE:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
- DELETE:
DELETE FROM table_name WHERE condition;
Der Aufbau des SELECT-Statements
- FROM: Gibt die Tabelle an, aus der die Daten abgerufen werden sollen.
- JOIN: Verbindet zwei oder mehr Tabellen basierend auf einer verwandten Spalte zwischen ihnen.
- WHERE: Filtert die Ergebnisse basierend auf bestimmten Kriterien.
- GROUP BY: Gruppiert die Ergebnisse nach einer oder mehreren Spalten.
- HAVING: Filtert die Ergebnisse einer GROUP BY-Abfrage.
- ORDER BY: Sortiert die Ergebnisse nach einer oder mehreren Spalten.
- LIMIT: Begrenzt die Anzahl der zurückgegebenen Ergebnisse.
Subqueries und LIKE-Syntax
Subqueries: Eine Abfrage innerhalb einer anderen Abfrage.
- Skalare Subqueries: Geben genau einen Wert zurück.
- Beispiel:
SELECT Name FROM Person WHERE id = (SELECT max(id) FROM Person);
- List Subqueries: Geben eine Liste von Werten zurück.
- Beispiel:
SELECT Name FROM Person WHERE id IN (SELECT id FROM Employees WHERE department = 'Sales');
- LIKE-Syntax: Vergleicht Zeichenketten mit Platzhaltern.
- Es gibt zwei Hauptplatzhalter:
%
ersetzt null oder mehr Zeichen._
ersetzt genau ein Zeichen.
- Beispiel:
SELECT * FROM table_name WHERE column LIKE '_pattern%';
JOIN-Operationen
- INNER JOIN: Gibt Zeilen zurück, die in beiden Tabellen einen Treffer haben.
- LEFT (OUTER) JOIN: Gibt alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurück.
- RIGHT (OUTER) JOIN: Gibt alle Zeilen aus der rechten Tabelle und die übereinstimmenden Zeilen aus der linken Tabelle zurück.
- FULL (OUTER) JOIN: Gibt Zeilen zurück, wenn es eine Übereinstimmung in einer der Tabellen gibt. Wenn es in einer Tabelle keinen Treffer gibt, werden die entsprechenden Spalten dieser Tabelle mit NULL-Werten aufgefüllt.
- NATURAL JOIN: Führt einen INNER JOIN der Tabellen durch, wobei die Spalten mit den gleichen Namen verglichen werden.
- SELF JOIN: Eine Tabelle wird mit sich selbst verknüpft.
Ausdrücke und Bedingungen
Ausdrücke
- Kombinationen von Werten, Operatoren und SQL-Funktionen.
- Beispiel:
SELECT name, (age * 2) AS double_age FROM table_name;
Bedingungen
- Kriterien, die angegeben werden, um bestimmte Aktionen auszuführen oder Ergebnisse zu filtern.
- Beispiel:
SELECT * FROM table_name WHERE age > 21;
Aggregatsfunktionen
COUNT
- Zählt die Anzahl der Zeilen, die das festgelegte Kriterium erfüllen.
- Beispiel:
SELECT COUNT(*) FROM table_name WHERE age > 21;
SUM
- Addiert die Werte einer numerischen Spalte.
- Beispiel:
SELECT SUM(price) FROM table_name;
AVG
- Berechnet den Durchschnittswert einer numerischen Spalte.
- Beispiel:
SELECT AVG(age) FROM table_name;
Tabellenstruktur und Manipulation
- CREATE:
CREATE TABLE table_name (id INT PRIMARY KEY, first_name VARCHAR(50), ...);
- ALTER:
ALTER TABLE table_name ADD COLUMN salary FLOAT;
- DROP:
DROP TABLE table_name;
- DESCRIBE:
DESCRIBE table_name;
- SHOW DATABASES/TABLES:
SHOW DATABASES; / SHOW TABLES;
Projektion und Selektion
- Projektion:
SELECT column_name FROM table_name;
- Selektion:
SELECT column_name FROM table_name WHERE condition;
- Verschachtelte Selektion:
SELECT column_name FROM (SELECT * FROM table_name) AS alias_name;
- DISTINCT: Wird verwendet, um doppelte Werte aus Ergebnissen zu entfernen. Beispiel:
SELECT DISTINCT column_name FROM table_name;
Sortierung und Gruppierung
- Sortieren (ORDER BY ASC/DESC):
SELECT * FROM table_name ORDER BY column_name ASC/DESC;
- Gruppieren (GROUP BY, HAVING):
GROUP BY:
SELECT avg(column_name) FROM table_name GROUP BY column_name;
HAVING:
SELECT sum(column_name) FROM table_name GROUP BY column_name HAVING condition;
Indizierung
- Index Erstellung:
CREATE INDEX index_name ON table_name(column_name);
Schnitt-, Vereinigungs- und Differenzmenge
Schnittmenge (INTERSECT):
- Findet gemeinsame Datensätze in beiden SELECT-Statements.
- Beispiel:
SELECT column_name FROM table1 INTERSECT SELECT column_name FROM table2;
Vereinigungsmenge (UNION/UNION ALL):
- UNION:
- Kombiniert die Ergebnisse von zwei SELECT-Statements.
- Entfernt Duplikate aus dem Ergebnis. (Wie DISTINCT)
- Beispiel:
SELECT column_name FROM table1 UNION SELECT column_name FROM table2;
- UNION ALL:
- Kombiniert die Ergebnisse von zwei SELECT-Statements.
- Gibt alle Zeilen zurück, einschließlich Duplikate.
- Beispiel:
SELECT column_name FROM table1 UNION ALL SELECT column_name FROM table2;
Differenzmenge (MINUS):
- Gibt Zeilen aus dem ersten SELECT-Statement zurück, wobei die aus dem zweiten SELECT-Statement entfernt wurden.
- Beispiel:
SELECT column_name FROM table1 MINUS SELECT column_name FROM table2;
SQL Injection
SQL Injection ist eine Art von Sicherheitslücke, bei der ein Angreifer SQL-Code über die Eingabefelder einer Anwendung in die Datenbank einschleusen kann. Um SQL-Injection zu verhindern, sollten Prepared Statements verwendet werden.
Weiteres Lernmaterial
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.