Select

Der Name entstammt der Ausdrucksweise: "Aus der Ergebnismenge folgende auswählen". Deswegen SELECT. Die Grundanwendungsweise geht so:

Abb 1 "komplettes" (keine Exoten) SELECT-Statement, Argumente in eckigen Klammern sind optional
  SELECT
    tabellenname1.attribut1,
    tabellenname1.attribut2,
    tabellenname1.attribut3[,
    tabellenname2.attribut1,
    tabellenname2.attribut2,
    tabellenname2.attribut3]
  FROM
    tabellenname1
  [[LEFT|RIGHT|FULL OUTER|INNER] JOIN
    tabellenname2
  ON
    tabellenname1.fs = tabellenname2.ps]
  [WHERE
    constraint1
  AND
    constraint2]
  [GROUP BY
    attribut1,
    attribut2]
  [HAVING
    Aggregatfunktionen]
  [ORDER BY
    attribut1,
    attribut2 DESC]
  [LIMIT [Offset,] Zeilenanzahl]

Grundsätzliches

SELECT wählt die Ergebnisse aus der Ergebnismenge und Tabelle Ihrer Wahl. Es akzeptiert verschiedene mysql-Aggregatfunktionen.

Aggregatfunktionen fassen SELECT-Ergebnisse zusammen, um sie zu zählen oder nur einmal anzuzueigen.

FROM wählt die Tabelle, die man sehen will.

Abb 2 "minimales" SELECT-Statement
SELECT
  *
FROM
  tabellenname

WHERE

WHERE bietet die Möglichkeit, mehrere Einschränkungen für die Ergebnismenge vorzusehen. Mehrere solcher Einschränkungen lassen sich sowohl mit Klammern gegeneinander abgrenzen, als auch mit AND oder OR miteinander verknüpfen.

Abb 3 SELECT-Statement mit Bedingung: WHERE, auch bekannt als constraint (Einschränkung)
SELECT
  *
FROM
  tabellenname
WHERE
  (
    attribut1 = 'wert1' 
      AND
    attribut2 = 'wert2'
  )
  OR
    attribut3 = 'wert3'

GROUP BY

GROUP BY und HAVING sind solche Aggregatfunktionen, naeheres hier.

Abb 4 Aggregatfunktionen garnieren das SELECT-Statement
SELECT
  *
FROM
  tabellenname
GROUP BY
  attribut42

ORDER BY

ORDER BY ermöglicht mehrfaches Sortieren nach Attributwerten hintereinander.

Abb 5 mehrfach Sortieren im SELECT-Statement: Erst nach attribut1 aufsteigend (Standard), dann nach attribut2 absteigend
SELECT
  *
FROM
  tabellenname
ORDER BY
  attribut1,
  attribut2 DESC

LIMIT

LIMIT ist weiter bekannt als ledigliche Beschränkung der Ergebnismenge. Es funktioniert aber auch gut mit dem Wert Offset, um ein erstes gewünschtes Ergebnis anzusteuern. So etwas braucht man für Page-Browser, die nacheinander verschiedene Ergebnismengen anzeigen. Vergleiche die Listings von amazon/ebay.

Abb 6 SELECT-Statement mit LIMIT begrenzen: entweder Anzahl der DSe (100) allein oder mit Offset, Argumente in eckigen Klammern sind optional
SELECT
  *
FROM
  tabellenname
LIMIT
[OFFSET,]100

mysql Workshop Übersicht