MySQL-SELECT-Anweisung – Varianten und Möglichkeiten
Aufbau der SELECT-Anweisung
Alle Angaben in [] sind optional.
SELECT
    [rechenoperation|funktionsauswahl]
  spaltenname
  FROM tabelle
    [WHERE bedingungen]
    [GROUP BY spalten]
    [HAVING aggregatfunktionen]
    [ORDER BY spalte [ASC] [DESC]
    [LIMIT [Anfang][Zeilenanzahl]]
Auswahl aller Spalten der Tabelle testadressen
SELECT
  *
FROM testadressen;
nur Ausgaben bestimmter Spalten
SELECT
  anrede, vorname, nachname
FROM testadressen;
Spaltenüberschriften festlegen
Spaltenüberschriften können umdefiniert werden. Dies geschieht über diesen Aufbau:
SELECT 
  `nachname` , 
  `vorname` , 
  geburtsdatum AS 'Geburtstag' 
FROM testadressen
Reihenfolge bestimmen
Sortieren nach Spalten
SELECT 
  `nachname` , `vorname` 
FROM testadressen
ORDER BY nachname
Sortieren nach 2 Spalten
SELECT
  `nachname` , `vorname` 
FROM testadressen
ORDER BY nachname, vorname
Sortierrichtung ändern (eine Spalte aufsteigend, zweite Spalte absteigend)
SELECT
  `nachname` , `vorname` 
FROM testadressen
ORDER BY nachname DESC , vorname
Bedingungen setzen – WHERE ...
SELECT 
  `nachname` , `vorname` 
FROM testadressen
WHERE vorname = 'Fischer'
Bedingungen verknüpfen (ODER)
SELECT 
  `nachname` , `vorname`, `anrede`, `familienstand`
FROM testadressen
WHERE anrede = 'Herr' OR familienstand= 'single'
Bedingungen verknüpfen (UND)
SELECT 
  `nachname` , `vorname`, `anrede`, `familienstand`
FROM testadressen
WHERE anrede = 'Frau' AND familienstand = 'single'
Bedingungen nach Vergleichsoperatoren
| Operator | Funktion | 
| = | gleich | 
| <> oder != | ungleich | 
| < | kleiner als | 
| > | größer als | 
| <= | kleiner gleich | 
| >= | größer gleich | 
SELECT 
  `nachname` , `vorname` , `anrede`, `familienstand`, `geburtsdatum`
FROM testadressen
WHERE geburtsdatum < '1940-01-01'
Alle Personen, deren Nachnamen vor C kommt
SELECT 
  `nachname` , `vorname` , `anrede` 
FROM testadressen
WHERE nachname < 'C'
WHERE-Bedingung mit Klammern – alle Personen mit der Lieblingsfarbe Schwarz ODER Geburtstag zwischen 01.01.1970 und 31.12.1970
SELECT 
  `nachname`, `vorname`, `anrede`, `geburtsdatum`, `lieblingsfarbe` 
FROM testadressen
WHERE `lieblingsfarbe` = 'schwarz'
OR (
    `geburtsdatum` >= '1970-01-01'
AND `geburtsdatum` <= '1970-12-31'
)
Aggregatsfunktionen
Können nur auf eine einzige Spalte angewendet werden.
| MIN (Spalte) | Minimum (Nummer, Zeichen, Datum) | 
| MAX (Spalte) | Maximum (Nummer, Zeichen, Datum) | 
| COUNT(*) | Anzahl (Nummer, Zeichen, Datum) | 
| SUM (Spalte) | Summe (Numerisch) | 
| AVG (Spalte) | Mittelwert (Numerisch) - (engl. average) | 
Durchschnitt vom Gehalt
SELECT 
  AVG( gehalt ) 
FROM testadressen
Anzahl von Datensätzen
SELECT 
  COUNT(*) 
FROM `testadressen`
Anzahl von Datensätzen der Singles
SELECT 
  COUNT(*) 
FROM `testadressen` 
WHERE `familienstand`='single'
Verdienst aller Singles und Anzahl der Singles
SELECT 
  COUNT(*), SUM(`gehalt`) 
FROM `testadressen` 
WHERE `familienstand` = 'single'
Datumsfunktionen
Alle Personen, die im Jahr 1969 geboren sind
SELECT 
  `nachname`, `vorname`, `anrede`, `geburtsdatum` 
FROM testadressen
WHERE YEAR( geburtsdatum ) = 1969
Alle Sonntags-Kinder
SELECT 
  `nachname` , `vorname` , `anrede` , `geburtsdatum` 
FROM testadressen
WHERE WEEKDAY( geburtsdatum ) = 6
Alle Oktober-Kinder
SELECT
  `nachname` , `vorname` , `anrede` , `geburtsdatum` 
FROM testadressen
WHERE MONTH( geburtsdatum ) = 10
Alle Personen, die zwischen 1969 und 1972 geboren wurden
SELECT 
  `nachname` , `vorname` , `anrede` , `geburtsdatum` 
FROM testadressen
WHERE YEAR( geburtsdatum ) >= 1969
  AND YEAR( geburtsdatum ) <= 1972
Gelebte Tage seit Geburtstag bis zum 30.7.2007
SELECT 
  `nachname` , `vorname` , 
  TO_DAYS( '2007-07-30' ) - TO_DAYS( geburtsdatum ) 
FROM testadressen
Gelebte Tage seit Geburtstag bis zum heutigen Tag mit geänderten Spaltenüberschrift.
(heutiger Tag = engl. current date (CurDate))
SELECT 
  `nachname` , 
  `vorname` , 
  TO_DAYS(CurDate()) - TO_DAYS( geburtsdatum ) AS 'gelebte Tage bis heute' 
FROM testadressen
Datumsfunktionen
| Funktion | Ergebnis | 
| WEEKDAY(datum) | 0-6 (Montag bis Sonntag) | 
| DAYofWEEK (datum) | 1-7 (Sonntag bis Samstag) | 
| DAYNAME (datum) | Sunday-Saturday | 
| WEEK (datum) | Kalenderwoche (Wochenbeginn Sonntag) | 
| WEEK (datum, 1) | Kalenderwoche (Wochenbeginn Montag) | 
| WEEK (datum, 2) | Kalenderwoche (Wochenbeginn Dienstag) | 
| DAYOFMONTH (datum) | Tageswert des Monats | 
| MONTH (datum) | Monatswert des Datums | 
| DAYOFYEAR (datum) | Tag des Datums ab dem 1.1. | 
| QUARTER (datum) | Quartal des Datums (1 bis 4) | 
| YEAR (datum) | Jahr des Datums | 
Dies und das
Inhaltlich gleiche Werte ausschließen (jeden Wert nur einmal)
SELECT 
  DISTINCT `lieblingsfarbe` 
FROM testadressen
