Oracle 9i中的一个简单的CREATE语句发生了一些未知的事情

时间:2011-11-01 21:32:17

标签: oracle oracle9i

有一天,我意外地在Oracle 9i中发出了一条关于SQL提示的CREATE语句,所有列都包含在双引号内,如下所示。

 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 个答案:

答案 0 :(得分:3)

来自SQL Language Reference

  

“带引号的标识符以双引号(”)开头和结尾。   如果使用带引号的标识符命名模式对象,则必须使用   每次引用该对象时都使用双引号。“