Maison > base de données > tutoriel mysql > Comment les guillemets affectent-ils les noms de tables dans Oracle ?

Comment les guillemets affectent-ils les noms de tables dans Oracle ?

Mary-Kate Olsen
Libérer: 2025-01-14 22:18:44
original
946 Les gens l'ont consulté

How Do Quotation Marks Affect Table Names in Oracle?

Noms de tables Oracle : l'importance des guillemets

Une question fréquente dans la gestion des bases de données Oracle concerne l'utilisation de guillemets doubles autour des noms de tables. Bien qu'apparemment simple, comprendre leur fonction est crucial pour éviter les erreurs courantes.

Le comportement par défaut d'Oracle est la gestion des identifiants qui ne respecte pas la casse. Cela signifie que MyTable, mytable et MYTABLE sont tous traités comme la même table. Cependant, mettre un nom de table entre guillemets change cela.

Les guillemets doubles appliquent le respect de la casse. "MyTable" est distinct de "mytable" ou "MYTABLE". S'il est créé avec des guillemets, le tableau doit être référencé avec exactement la même casse et les mêmes guillemets.

Considérez ces exemples :

<code class="language-sql">SELECT * FROM mytable WHERE id = 1; -- Works (case-insensitive)</code>
Copier après la connexion

Cette requête réussit grâce à la correspondance insensible à la casse par défaut d'Oracle. Mais cela échoue :

<code class="language-sql">SELECT * FROM "mytable" WHERE id = 1; -- Fails (case-sensitive)</code>
Copier après la connexion

Cette erreur se produit car "mytable" a été défini comme étant sensible à la casse. La requête nécessite la majuscule et les guillemets exacts.

Oracle utilise en interne des comparaisons sensibles à la casse, mais il met en majuscule les identifiants non cités avant la comparaison. Citer contourne cela.

Créer un tableau avec des guillemets :

<code class="language-sql">CREATE TABLE "my_data"(col1 NUMBER, col2 VARCHAR2(255));</code>
Copier après la connexion

Ces requêtes sont valides :

<code class="language-sql">SELECT * FROM "my_data";
SELECT * FROM "MY_DATA";
SELECT * FROM "My_Data";</code>
Copier après la connexion

Cependant, cela échouera :

<code class="language-sql">SELECT * FROM my_data;</code>
Copier après la connexion

À l'inverse, créer un tableau sans guillemets :

<code class="language-sql">CREATE TABLE my_other_data(col1 NUMBER, col2 VARCHAR2(255));</code>
Copier après la connexion

Ces requêtes sont toutes incorrectes :

<code class="language-sql">SELECT * FROM My_Other_Data;
SELECT * FROM "my_other_data";
SELECT * FROM "MY_OTHER_DATA";</code>
Copier après la connexion

Seul cela fonctionne :

<code class="language-sql">SELECT * FROM my_other_data;</code>
Copier après la connexion

Maîtriser la différence entre les identifiants sensibles à la casse (entre guillemets) et insensibles à la casse (non cités) et le rôle des guillemets doubles est essentiel pour une gestion efficace des bases de données Oracle et l'écriture de requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal