PythonQ 240-8XX Manual de usuario Pagina 60

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 59
Kapitel 2: Vorb emerkungen zum deutschen Handbuch 39
-- ist nur dann ein Kommentar, wenn darauf Whitespace folgt. Siehe Abschnitt 2.7.4.8
[ANSI diff comments], Seite 44.
Bei VARCHAR-Spalten werden Leerzeichen am Ende entfernt, wenn der Wert gespeichert
wird. Siehe Abschnitt 2.7.5 [Bugs], Seite 45.
In einigen allen ¨andern sich CHAR-Spalten automatisch (silent) in VARCHAR-Spalten.
Siehe Abschnitt 7.5.3.1 [Silent column changes], Seite 463.
Zugriffsrechte f¨ur eine Tabelle werden nicht automatisch widerrufen, wenn Sie eine
Tabelle oschen. Sie m¨ussen explizit ein REVOKE-Statement absetzen, um die Zugriffs-
rechte f¨ur eine Tabelle zu widerrufen. Siehe Abschnitt 5.3.1 [GRANT], Seite 203.
NULL AND FALSE werden zu NULL ausgewertet und nicht zu FALSE. Der Grund hierf¨ur
liegt darin, dass wir meinen, dass es keine gute Idee ist, eine Menge von Sonderkondi-
tionen f¨ur diesen Fall auswerten zu m¨ussen.
2.7.4.1 Sub-Selects
MySQL unterst¨utzt momentan nur Sub-Selects der Form INSERT ... SELECT ... und
REPLACE ... SELECT .... In anderen Zusammenh¨angen onnen Sie allerdings die
Funktion IN() benutzen.
In vielen allen onnen Sie Ihre Anfragen ohne Sub-Selects schreiben:
SELECT * FROM tabelle1 WHERE id IN (SELECT id FROM tabelle2);
Das kann wie folgt umgeschrieben werden:
SELECT tabelle1.* FROM tabelle1,tabelle2 WHERE tabelle1.id=tabelle2.id;
Die Anfragen:
SELECT * FROM tabelle1 WHERE id NOT IN (SELECT id FROM tabelle2);
SELECT * FROM tabelle1 WHERE NOT EXISTS (SELECT id FROM tabelle2 where tabelle1.id=tabelle2.id);
onnen wie folgt umgeschrieben werden:
SELECT tabelle1.* FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.id=tabelle2.id where tabelle2.id IS NULL
F¨ur kompliziertere Unteranfragen (Subqueries) onnen Sie oft tempor¨are Tabelle anlegen,
die die Unteranfrage enthalten. In einigen allen wird diese Option allerdings nicht funk-
tionieren. Am aufigsten treten diese alle mit DELETE-Statements auf, wof¨ur Standard-
SQL keine Verkn¨upfungen (Joins) unterst¨utzt. ur solche Situationen sind zwei Optionen
verf¨ugbar, solange MySQL noch keine Unteranfragen unterst¨utzt.
Die erste Option besteht darin, eine prozedurale Programmiersprache (wie PHP oder Perl)
zu benutzen, um eine SELECT-Anfrage zu erhalten, die die Prim¨arschl¨ussel enth¨alt, die
ben¨otigt werden, um die entsprechenden Datens¨atze zu oschen, und dann diese Werte
zu benutzen, um das DELETE-Statement zu formulieren (DELETE FROM ... WHERE ... IN
(key1, key2, ...)).
Die zweite Option besteht darin, interaktives SQL zu benutzen, um automatisch eine Reihe
von DELETE-Statements zu formulieren, indem die MySQL-Erweiterung CONCAT() benutzt
wird (anstelle des Standard-Operators ||). Beispiel:
SELECT CONCAT(’DELETE FROM tabelle1 WHERE pkid = ’, tabelle1.pkid, ’;’)
FROM tabelle1, tabelle2
WHERE tabelle1.spalte1 = tabelle2.spalte2;
Vista de pagina 59
1 2 ... 55 56 57 58 59 60 61 62 63 64 65 ... 767 768

Comentarios a estos manuales

Sin comentarios