Heim >Datenbank >MySQL-Tutorial >Wie wirken sich Anführungszeichen auf Tabellennamen in Oracle aus?
Oracle-Tabellennamen: Die Bedeutung von Anführungszeichen
Eine häufige Frage bei der Oracle-Datenbankverwaltung betrifft die Verwendung doppelter Anführungszeichen um Tabellennamen. Auch wenn es scheinbar einfach ist, ist das Verständnis ihrer Funktion entscheidend, um häufige Fehler zu vermeiden.
Das Standardverhalten von Oracle ist die Verarbeitung von Bezeichnern ohne Berücksichtigung der Groß-/Kleinschreibung. Das bedeutet, dass MyTable
, mytable
und MYTABLE
alle als dieselbe Tabelle behandelt werden. Dies ändert sich jedoch, wenn ein Tabellenname in doppelte Anführungszeichen gesetzt wird.
Doppelte Anführungszeichen erzwingen die Berücksichtigung der Groß- und Kleinschreibung. "MyTable"
unterscheidet sich von "mytable"
oder "MYTABLE"
. Wenn die Tabelle mit Anführungszeichen erstellt wird, muss sie mit genau derselben Groß-/Kleinschreibung und denselben Anführungszeichen referenziert werden.
Betrachten Sie diese Beispiele:
<code class="language-sql">SELECT * FROM mytable WHERE id = 1; -- Works (case-insensitive)</code>
Diese Abfrage ist aufgrund des standardmäßigen Oracle-Abgleichs ohne Berücksichtigung der Groß- und Kleinschreibung erfolgreich. Aber das schlägt fehl:
<code class="language-sql">SELECT * FROM "mytable" WHERE id = 1; -- Fails (case-sensitive)</code>
Dieser Fehler tritt auf, weil "mytable"
als Groß-/Kleinschreibung beachtet definiert wurde. Die Abfrage benötigt die genaue Groß- und Kleinschreibung und Anführungszeichen.
Oracle verwendet intern Vergleiche, bei denen die Groß-/Kleinschreibung beachtet wird, aber Bezeichner ohne Anführungszeichen werden vor dem Vergleich in Großbuchstaben geschrieben. Durch Zitieren wird dies umgangen.
Erstellen einer Tabelle mit Anführungszeichen:
<code class="language-sql">CREATE TABLE "my_data"(col1 NUMBER, col2 VARCHAR2(255));</code>
Diese Abfragen sind gültig:
<code class="language-sql">SELECT * FROM "my_data"; SELECT * FROM "MY_DATA"; SELECT * FROM "My_Data";</code>
Dies wird jedoch scheitern:
<code class="language-sql">SELECT * FROM my_data;</code>
Umgekehrt erstellen Sie eine Tabelle ohne Anführungszeichen:
<code class="language-sql">CREATE TABLE my_other_data(col1 NUMBER, col2 VARCHAR2(255));</code>
Diese Abfragen sind alle falsch:
<code class="language-sql">SELECT * FROM My_Other_Data; SELECT * FROM "my_other_data"; SELECT * FROM "MY_OTHER_DATA";</code>
Nur das funktioniert:
<code class="language-sql">SELECT * FROM my_other_data;</code>
Die Beherrschung des Unterschieds zwischen Bezeichnern, bei denen die Groß-/Kleinschreibung beachtet wird (in Anführungszeichen gesetzt) und der Bezeichner, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird (ohne Anführungszeichen), und die Rolle doppelter Anführungszeichen ist für eine effektive Oracle-Datenbankverwaltung und das Schreiben von Abfragen von entscheidender Bedeutung.
Das obige ist der detaillierte Inhalt vonWie wirken sich Anführungszeichen auf Tabellennamen in Oracle aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!