Est-il possible de créer une table avec un nom de colonne contenant un espace? Si oui, comment puis-je le créer et l'utiliser?
C'est possible, mais ce n'est pas conseillé. Vous devez mettre le nom de la colonne entre guillemets.
create table my_table ("MY COLUMN" number);
Mais notez l'avertissement dans la documentation :
Note: Oracle ne recommande pas l'utilisation d'identificateurs entre guillemets pour la base de données noms d'objet. Ces identificateurs cités sont acceptés par SQL * Plus, mais ils peuvent ne pas être valides lorsque vous utilisez d'autres outils de gestion de base de données objets.
Le nom sera sensible à la casse et vous devrez le mettre entre guillemets chaque fois que vous le référencerez:
select "MY COLUMN" from my_table;
Alors ... non, serait mon conseil ...
Oui c'est possible. Vous devez juste être sûr de citer le nom de la colonne. Par exemple:
CREATE TABLE Fubar ("Foo Bar" INT);
INSERT INTO Fubar VALUES (1337);
SELECT "Foo Bar" FROM SpaceMonster
Même si c'est possible, cela n'en fait pas une bonne idée. Vous éviterez probablement beaucoup de peine si vous remplacez simplement tous vos espaces par des traits de soulignement.
Vous pouvez (voir le document Oracle ) si vous les citez correctement. Cependant, je soupçonne que ce n'est pas une bonne idée, car vous devrez tout citer. Généralement, les normes et conventions de nommage de la base de données (par exemple, ici ou ici ) préfèrent utiliser des traits de soulignement (qui ne nécessitent pas de citation) plutôt que des espaces.
il est possible de nommer la colonne entre deux "
exemple: "My columN", le nom de la colonne devient sensible à la casse, ce qui signifie.
SELECT "my column" from table; --NOT OK
SELECT "My columN" from table; --OK
C’est la règle des colonnes définie pour Oracle
Colonnes (pour les tableaux)
vous pouvez toujours avoir un alias pour le nom de colonne bu en utilisant ""
Avez-vous Google pour cela? J'ai fait - le 6ème lien était ce , dans lequel je trouve ce qui suit:
create table employee (
"First Name" varchar2(20),
"Last Name" varchar2(20),
Address varchar2(60),
Phone varchar2(15),
Salary number,
EmpID number,
DeptID number
);
... qui fonctionne bien quand je l'ai essayé en 10g.