SQL-Kennungen handhaben

Eine SQL-Kennung ist der Name eines Datenbankobjekts wie z. B. einer Tabelle, einer Spalte, eines Benutzers, einer Gruppe, eines benutzerdefinierten Objekts oder einer Datenbank. Netezza unterstützt die SQL 1999-Definition für die Benennung von Bezeichnern, die bis zu 128 Bytes lang sein können. Es gibt zwei Arten von Kennungen: reguläre Kennungen und Kennungen mit Begrenzer.

Hinweis: Kontokennwörter, Dateinamen und andere Werte sind keine Bezeichner und können daher einen reduzierten Zeichensatz unterstützen, einschließlich nur 7-Bit-ASCII-Zeichen. Die Dateinamen für externe Tabellen müssen in UTF-8 codiert sein.

Reguläre Kennung

Bei einer regulären Kennung wird Groß-/Kleinschreibung nicht unterschieden. Wenn Sie also eine Datenbank namens SALES erstellen, können Sie diesen Namen in beliebiger Groß-/Kleinschreibung schreiben. Beispiel: SALES, sales, SaLeS, und SALEs entsprechen alle der Datenbank namens SALES. Der ANSI-SQL-Standard legt fest, dass Systeme alle regulären SQL-Bezeichner in die entsprechenden Großbuchstaben konvertieren. Daher konvertiert das Netezza Performance Server jeden regulären Bezeichner, den Sie angeben, in Großbuchstaben, wenn er in der Datenbank gespeichert wird und auch, wenn die regulären Bezeichner bei der Abfrageverarbeitung verwendet werden.

Reguläre Bezeichner können nur Buchstaben (in jedem Alphabet, nicht nur im lateinischen Alphabet), Silben (wie im japanischen Hiragana-Syllabar), Ideogramme, Dezimalziffern, Unterstriche und Dollarzeichen ($) enthalten. Reguläre Bezeichner müssen mit einem Buchstaben beginnen; sie dürfen nicht mit einer Ziffer, einem Unterstrich oder einem Dollarzeichen beginnen. Reguläre Bezeichner können auch kein reserviertes SQL-Wort sein (wie in SQL reservierte Wörter und Schlüsselwörter beschrieben). Die Kodierung im Netezza Performance Server ist in UTF-8; die Kodierung für jede Anzeige hängt vom Client ab.

Kennung mit Begrenzer

Eine Kennung mit Begrenzer ist auch ein Name eines Datenbankobjekts. Sie ist jedoch in doppelte Anführungszeichen eingeschlossen und es treffen besondere Bedingungen zu. Bei einer Kennung mit Begrenzer wird Groß-/Kleinschreibung unterschieden; eine Datenbank namens “Sales” entspricht z. B. nicht einer Datenbank SALES. Das Netezza Performance Server konvertiert durch Trennzeichen getrennte Bezeichner nicht in den Standard-Systemfall. Das Netezza Performance Server speichert auch die umschließenden doppelten Anführungszeichen nicht in der Datenbank.

Hinweis: Das System schneidet führende und nachfolgende Leerzeichen in einem Bezeichner mit Trennzeichen automatisch ab. Wenn Sie z. B. mit führenden und nachfolgenden Leerzeichen die Ausgabe formatieren, stellen Sie sicher, dass Sie den führenden Leerzeichen ein anderes Zeichen voranstellen und an die nachfolgenden Leerzeichen ein Nicht-Leerzeichen anhängen, um die Leerzeichen in der Kennung beizubehalten.

Innerhalb der doppelten Anführungszeichen kann eine Kennung mit Begrenzer dieselben Buchstaben, Silben, Ideogramme, Dezimalziffern und Unterstriche enthalten wie eine reguläre Kennung; sie kann jedoch auch Leerzeichen, Sonderzeichen wie Bindestriche und Prozentzeichen sowie reservierte SQL-Schlüsselwörter enthalten. Eine Kennung mit Begrenzer kann mit einem beliebigen dieser Buchstaben, Ziffern und Symbole beginnen, außer mit dem Unterstrich, der an dieser Stelle nicht zulässig ist.

Die folgende Abfrage verwendet z. B. Kennungen mit Begrenzer sowohl für Spalten- als auch für Tabellennamen:
SELECT "My Field" FROM "My Table" WHERE "My Field" LIKE 'A%';

Das Zeichenfolgeliteral 'A%' ist in einfache Anführungszeichen eingeschlossen.

Sie können das Standardverhalten des Systems bei der Systeminitialisierung ändern, indem Sie den Befehl ' nzinitsystem -lowercase verwenden. Weitere Informationen über den Befehl " nzinitsystem finden Sie im IBM® Netezza® System Administrator's Guide.