SQL:尝试在SQL中创建表时为什么会出现此错误?

时间:2012-10-21 16:16:36

标签: sql oracle

我是SQL的新手,正在尝试创建一个基本的emp表来学习一点。当我编写查询并尝试执行它时,我不断收到消息“ORA-00907:缺少右括号”。但是我觉得我为每个功能都包含了一对括号。谁能帮助我找出问题,如果可能的话可以纠正我,如果我错了?

以下是样本

SQL> create table emp
  2  (emp id number(4),
  3  first name varchar2(25),
  4  last name varchar2(25),
  5  phone number number (10),
  6  department id number (4),
  7  job id number (4),
  8  salary number (6,2),
  9  commission_pct number (4,2),
 10  manager id number (4);
(emp id number (4),
        *
ERROR at line 2:
ORA-00907: missing right parenthesis

3 个答案:

答案 0 :(得分:6)

第2行有一个开始括号;

(emp id number(4),
^

未在第10行关闭;

manager id number (4);
                     ^missing

此外,如果不引用列名,则不能在列名中包含空格。我建议用_替换空格,不要在任何地方引用它们。

SQL> create table emp
  2  (emp_id number(4),
  3  first_name varchar2(25),
  4  last_name varchar2(25),
  5  phone_number number (10),
  6  department_id number (4),
  7  job_id number (4),
  8  salary number (6,2),
  9  commission_pct number (4,2),
 10  manager_id number (4));

SQLfiddle test

答案 1 :(得分:2)

你的专栏上有空格,如果你想留下你桌子上的空格,请用双引号"

包裹它
create table emp
(
   "emp id" number(4), 
   "first name" varchar2(25),
   .....
);

但最好的方法是创建列名而不在其上添加空格。

create table emp
(
   empID number(4), 
   firstName varchar2(25),
   .....
);

答案 2 :(得分:2)

我在这里发现了3个错误。

    在SQL中
  1. ,您必须使用numeric而不是数字。
  2. 你不能在场上保留空间。
  3. 您需要关闭查询的大括号,
  4. 代码:

     create table emp
           (emp_id numeric(4),
            first_name varchar(25),
            lastname varchar(25),
            phone_number numeric (10),
            department_id numeric (4),
            job_id numeric (4),
            salary numeric (6,2),
            commission_pct numeric (4,2),
            manager_id numeric (4))
    

    这是SQL Fiddle Demo