MySQL-SELECT-Anweisung – Varianten und Möglichkeiten

Aufbau der SELECT-Anweisung

Alle Angaben in [] sind optional.

MySQL-Anweisung: Grundlegender Aufbau
SELECT
    [rechenoperation|funktionsauswahl]
  spaltenname
  FROM tabelle
    [WHERE bedinungen]
    [GROUP BY spalten]
    [HAVING aggregatfunktionen]
    [ORDER BY spalte [ASC] [DESC]
    [LIMIT [Anfang][Zeilenanzahl]]

Auswahl aller Spalten der Tabelle testadressen

MySQL-Anweisung: Auswahl aller Spalten
SELECT
  *
FROM testadressen;

nur Ausgaben bestimmter Spalten

MySQL-Anweisung: Auswahl nur 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
Alle Personen mit Geburtstag vor 01.01.1940

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) Jahrewert des Datums

Dies und das

Inhaltlich gleiche Werte ausschließen (jeden Wert nur einmal)

SELECT 
  DISTINCT `lieblingsfarbe` 
FROM testadressen