-
Notifications
You must be signed in to change notification settings - Fork 1
SQL
SQL steht für Structured Query Language (ungefähr strukturierte Abfragesprache) und ist eine Sprache um Datenbanken zu manipulieren.
Relational Database Management System (RDBMS) ist die Basis für SQL und für alle modernen Datenbanksysteme.
Daten werden in Tabellen innerhalb einer Datenbank gespeichert. Diese Tabellen besitzen Spalten.
SQL-Kategorien
- DML (Data Manipulation Language)
- DDL (Data Definition Language)
- DCL (Data Control Language)
- Transaktionssteuerung
| Kategorie | Befehle |
|---|---|
| DML | SELECT, INSERT, UPDATE, DELETE |
| DDL | CREATE, TRUNCATE, ALTER, DROP |
| DCL | GRANT, REVOKE |
| Transaktionssteuerung | ROLLBACK, COMMIT |
| Befehl | Funktion |
|---|---|
| SELECT | Holt Daten aus einer Datenbank |
| UPDATE | Aktualisiert Daten in einer Datenbank |
| DELETE | Entfernt Daten aus einer Datenbank |
| INSERT INTO | Fügt neue Daten einer Datenbank hinzu |
| CREATE DATABASE | Erstellt eine neue Datenbank |
| ALTER DATABASE | Modifiziert eine Datenbank |
| CREATE TABLE | Erstellt eine neue Tabelle |
| DROP TABLE | Entfernt eine Tabelle |
| CREATE INDEX | Erstellt einen Index (Suchschlüssel) |
| DROP INDEX | Entfernt einen Index |
// Abfrage aller Spalten.
SELECT * from Customers;
// Abfrage von Name und Alter
SELECT NAME, AGE FROM Customers;
// Abfrage mit Bedingung (WHERE). Selektiere alle Spalten von Customers wessen Alter über 16 ist.
SELECT * FROM Customers WHERE AGE > 16;
// Abfrage mit Literalabfrage. Selektiere alle Spalten die den Name 'Joe' beinhalten.
SELECT * FROM Customers WHERE Name='Joe';
// Abfrage mit DISTINCT, sodass doppelte Einträge in der Anzeige entfernt werden.
SELECT DISTINCT NAME FROM Customers;
/* TODO: mehr Abfragen einbauen */
Join wird verwendet um Reihen von zwei oder mehr Tabellen basierend auf einem gemeinsamen Feld (Bedingung) zu vereinen.
// Selektiere OrderID, CustomerName und OderDate aus Orders, wenn die Einträge CustomerID der Zeilen übereinstimmen.
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
SQL Abfragen können in andere SQL Abfragen eingebettet werden. Geschieht dies in einer WHERE oder HAVING Anweisung ergibt dies eine Unterabfrage.
// Selektier alles von Customers wenn Die PostalID aus Staedte zu dem Name Berlin passt.
SELECT *
FROM Customers
WHERE PostalID = (SELECT PostalID FROM Staedte WHERE Name='Berlin')
Seletionsabfragen: SELECT, SELECT mit JOIN, SELECT mit Unterabfragen, SELECT mit Self-Join, SELECT mit Aggregatfunktionen