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