# Daten abfragen

1. Bei Suche nach Daten, die Daten immer in `` ` `` Quotes setzen. Sonst werden die Spalten miteinander verglichen.
2. MySQL ignoriert Groß- und Kleinschreibung und Ä = A, Ö = O, Ü = U.
3. Wenn auf distinct mehrere Spalten folgen, dann wird die Kombination der Spalten als einzigartig betrachtet.
4. `WHERE firstname = 'Anne' OR firstname = 'Peter'` kann durch `WHERE firstname IN ('Anne', 'Peter')` ersetzt werden.
5. `WHERE age BETWEEN 20 AND 30` gibt alle Werte zurück, wo das Alter zwischen 20 und 30 liegt.

# Syntax
`SELECT COUNT(*)` Zählt die Anzahl der Zeilen in einer Tabelle.

`SELECT DISTINCT ` Gibt nur einzigartige Werte zurück.

`SELECT * FROM table WHERE column LIKE 'a%'` Gibt alle Werte zurück, die mit 'a' beginnen.

`SELECT * FROM table WHERE age BETWEEN 20 AND 30` Gibt alle Werte zurück, wo das Alter zwischen 20 und 30 liegt. (Inklusive 20 und 30)

`LIMIT offset, count` Limitiert die Anzahl der Zeilen, die zurückgegeben werden. Offset gibt an, ab welcher Zeile die Daten zurückgegeben werden sollen. Bspw. `LIMIT 5, 10` gibt die Zeilen 6 bis 15 zurück.

`ORDER BY column DESC` Sortiert die Daten absteigend. Standardverhalten ist ASC.

`GROUP BY column LIMIT 40, 5` Gruppiert die Daten nach einer Spalte und gibt nur 5 Zeilen zurück, beginnend bei Zeile 40. **Limit sollte immer mit ORDER BY verwenden**

`SELECT firstname as fname, lastname as lname FROM table` Benennt die Spalten um.

- `SELECT COUNT(*)`  
  Zählt die Anzahl der Zeilen in einer Tabelle.

- `SELECT MIN(spalte)`  
  Gibt den kleinsten Wert aus der angegebenen Spalte zurück.

- `SELECT MAX(spalte)`  
  Gibt den größten Wert aus der angegebenen Spalte zurück.

- `SELECT AVG(spalte)`  
  Berechnet den Durchschnittswert der Werte in der angegebenen Spalte.

- `SELECT SUM(spalte)`  
  Addiert alle Werte in der angegebenen Spalte und gibt die Summe zurück.

- `SELECT UPPER(spalte)`  
  Wandelt alle Zeichen in der angegebenen Spalte in Großbuchstaben um.

- `SELECT LOWER(spalte)`  
  Wandelt alle Zeichen in der angegebenen Spalte in Kleinbuchstaben um.

- `SELECT LENGTH(spalte)`  
  Gibt die Länge (Anzahl der Zeichen) des Wertes in der angegebenen Spalte zurück.

- `SELECT SUBSTR(spalte, start, länge)`  
  Extrahiert einen Teilstring aus der angegebenen Spalte, beginnend bei `start` und mit einer optionalen Länge von `länge`.

- `SELECT CONCAT(spalte1, spalte2, ...)`  
  Verknüpft mehrere Spalten oder Zeichenketten miteinander und gibt die kombinierte Zeichenkette zurück.
- `REPLACE(spalte, 'suchen', 'ersetzen')`  
  Ersetzt alle Vorkommen des Suchstrings durch den Ersetzungsstring in der angegebenen Spalte.

## Sonderfall `NULL`
Mit `IS NULL` oder `IS NOT NULL` kann geprüft werden, ob ein Wert in einer Spalte `NULL` ist oder nicht.
Mit `NULL` kann nicht verglichen werden. `NULL = NULL` ergibt `NULL`, nicht `TRUE` oder `FALSE`.