Что-то неизвестное произошло с простым оператором CREATE в Oracle 9i - PullRequest
1 голос
/ 02 ноября 2011

Однажды я случайно сгенерировал оператор CREATE для приглашения SQL в Oracle 9i, все столбцы которого заключены в двойные кавычки, как показано ниже.

 CREATE TABLE emp("emp_id" VARCHAR2(6) primary key, 

"emp_name" VARCHAR2(30) not null, "salary" NUMBER);

вместо того, чтобы выдавать его, как указано ниже, не заключая имена столбцов в кавычки, как обычно.

CREATE TABLE emp(emp_id VARCHAR2(6) primary key, 

emp_name VARCHAR2(30) not null, salary NUMBER);

Этот простой запрос (впервые упомянутый) работал просто без проблем, и таблица emp была создана успешно, тогда я создал три строки в этой таблице с помощью следующей команды INSERT.

INSERT INTO emp VALUES("E0001", "Henery", 50000);
INSERT INTO emp VALUES("E0002", "Alex", 65000);
INSERT INTO emp VALUES("E0003", "Peter", 70000);

Три строки успешно созданы в таблицу emp. Затем я выполнил инструкцию SELECT, чтобы проверить, были ли они созданы или нет, и обнаружил, что они действительно были созданы.

SELECT * FROM emp;

но когда я выполнил инструкцию SELECT, как показано ниже

SELECT emp_id, emp_name, salary FROM emp;

Я убедился, что хотя я использовал те же имена столбцов, что и на самом деле в таблице emp, Oracle выдал ошибку, указывающую, что «таких столбцов не существует».

1 Ответ

3 голосов
/ 02 ноября 2011

Из справочника по языку SQL :

"Идентификатор в кавычках начинается и заканчивается двойными кавычками ("). Если вы называете объект схемы, используя идентификатор в кавычках, то вы должны используйте двойные кавычки, когда обращаетесь к этому объекту. "

...