PythonQ 240-8XX Uživatelský manuál Strana 68

  • Stažení
  • Přidat do mých příruček
  • Tisk
  • Strana
    / 768
  • Tabulka s obsahem
  • KNIHY
  • Hodnocené. / 5. Na základě hodnocení zákazníků
Zobrazit stránku 67
Kapitel 2: Vorb emerkungen zum deutschen Handbuch 47
¨andern, so dass versteckte Spalten nie verglichen werden, wenn DISTINCT ausgef¨uhrt
wird.
Hierf¨ur ein Beispiel:
SELECT DISTINCT mp3id FROM band_downloads WHERE userid = 9 ORDER BY id
DESC;
und
SELECT DISTINCT band_downloads.mp3id, FROM band_downloads,band_mp3
WHERE band_downloads.userid = 9 AND band_mp3.id = band_downloads.mp3id
ORDER BY band_downloads.id DESC;
Im zweiten Fall bekommen Sie in MySQL 3.23.x oglicherweise zwei identische Zeilen
in der Ergebnismenge (weil die versteckten ’id’-Spalten unterschiedlich sein onnen).
Beachten Sie, dass dies nur f¨ur Anfragen zutrifft, bei denen die ORDER BY-Spalten
nicht im Ergebnis enthalten sind. ANSI-SQL erlaubt dies nicht
Weil MySQL es zul¨aßt, mit Tabellentypen zu arbeiten, die keine Transaktionen un-
terst¨utzen (und folglich Daten nicht per rollback in den vorherigen Zustand brin-
gen onnen), verhalten sich einige Dinge in MySQL etwas anderes als in anderen
SQL-Servern. Das kann manchmal etwas ung¨unstig sein, weil Spaltenwerte in der
Applikation ¨uberpr¨uft werden m¨ussen. Auf der anderen Seite erhalten Sie dadurch
eine nette Geschwindigkeitssteigerung, weil es MySQL gestattet, einige Optimierungen
vorzunehmen, die ansonsten sehr schwer durchzuf¨uhren sein w¨urden.
Wenn Sie eine Spalte auf einen nicht zul¨assigen Wert setzen, speichert MySQL, statt
ein Rollback durchzuf¨uhren, den besten oglichen Wert in der Spalte:
Wenn Sie versuchen, in einer numerischen Spalte einen Wert ausserhalb des Wer-
tebereichs zu speichern, speichert MySQL statt dessen den kleinsten oder gr¨oßten
oglichen Wert.
Wenn Sie versuchen, eine Zeichenkette, die nicht mit einer Zahl beginnt, in einer
numerischen Spalte zu speichern, speichert MySQL 0.
Wenn Sie versuchen, NULL in einer Spalte zu speichern, die keine NULL-Werte zul¨aßt,
speichert MySQL 0 oder ’’ (leere Zeichenkette). (Man kann dieses Verhalten je-
doch mit der -DDONT USE DEFAULT FIELDS-Kompilierungs-Option ¨andern.)
MySQL aßt zu, dass einige falsche Datumswerte in DATE- und DATETIME-Spalten
gespeichert werden (wie 2000-02-31 oder 2000-02-00). Wenn das Datum ollig
falsch ist, speichert MySQL den speziellen Datumswert 0000-00-00 in der Spalte.
Wenn Sie enum auf einen nicht unterst¨utzten Wert setzen, wird es auf den Fehler-
wert ’leere Zeichenkette’ oder (bei numerischen Werten) auf 0 gesetzt.
Wenn Sie PROCEDURE auf eine Anfrage ausf¨uhren, die eine leere Ergebnismenge liefert,
kann es in einigen allen vorkommen, dass PROCEDURE die Spalten nicht umwandelt.
Wenn Sie eine Tabelle vom Typ MERGE anlegen, wird nicht ¨uberpr¨uft, ob die zugrunde
liegenden Tabellen von einem kompatiblen Typ sind.
MySQL kann bislang nicht mit NaN-, -Inf- und Inf-Werten in Doubles umgehen. Wenn
Sie diese benutzen, gibt es Probleme, wenn Daten importiert oder exportiert werden.
Als Zwischenl¨osung sollten Sie NaN in NULL umwandeln (falls oglich) und -Inf und
Inf in den kleinsten bzw. gr¨oßten oglichen Wert.
Zobrazit stránku 67
1 2 ... 63 64 65 66 67 68 69 70 71 72 73 ... 767 768

Komentáře k této Příručce

Žádné komentáře