/*
 * Die Identität
 * Anweisungen, die eine ganze Tabelle unverändert ausgeben.
 */

/*
 * Ermittle den Inhalt der gesamten Tabelle.
 *
 * Die erste Lösung ist, gerade im Web-Bereich, im Hinsicht auf Sicherheit
 * und Performanz deutlich schlechter, als die zweite Lösung. Die gilt vor
 * allem, wenn zur Tabelle später weitere Attribute hinzugefügt werden. 
 * Ausnahmen: COUNT(*), EXISTS(SELECT * ...)
 *
 */
SELECT * FROM haendler;                 
SELECT hnr, name, adresse FROM haendler;

/*
 * Die folgenden Befehle sind korrekte SQL92-Befehle, jedoch keine SQL99-Befehle.
 * Das Ergebnis ist ebenfalls jeweils die ganze Tabelle.
 * Diese Befehle werden von PostgreSQL nicht unterstützt.
 */

-- TABLE haendler;
-- SELECT * FROM TABLE haendler;

/*
 * Als Tabelle dürfen auch komplexe SQL-Ausdrücke verwendet werden.
 * Allerdings entfernt SQL Duplikate nicht automatisch.
 * Um dies zu erzwingen, muss "SELECT DISTINCT" verwendet werden:
 * 
 * SELECT DISTINCT * FROM <komplexer Ausdruck>;
*/

   /* Standard-SQL, aber PostgreSQL-Fehler */
-- SELECT DISTINCT * FROM (SELECT typ FROM ware); i

SELECT DISTINCT * FROM (SELECT typ FROM ware) AS ware_typ;
SELECT          * FROM (SELECT typ FROM ware) AS ware_typ; /* Duplikate */

