无法在Oracle SQL Developer中创建表 - 第1行出错

时间:2016-10-10 19:39:41

标签: mysql sql oracle-sqldeveloper

我正在关注YouTube上的Derek Banas在一个视频中学习MySQL的教程。在他的教程中,他正在使用终端,而我正在使用Oracle MySql Developer,因为它是我在大学中使用的,我正在尽我所能在课堂上取得进步,因此我为什么要学习Derek Banas的视频!因此,下面将概述我的问题以及错误,任何帮助/输入都将非常感谢!

在下面第8行“MEDIUMINT UNSIGNED”中,“无符号”显示红色下划线表示错误。即使删除此错误,它仍会在输出窗口中显示相同的错误。我把它留在那里,因为Derek Banas正是如何在他的视频中做到的。 (参考:Derek Banas - MySQL教程)

CREATE TABLE Student(
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
email VARCHAR(60) NULL,
street VARCHAR(50) NOT NULL,
city VARCHAR(40) NOT NULL,
state CHAR(2) DEFAULT "PA" NOT NULL,
zip MEDIUMINT UNSIGNED NOT NULL,
phone VARCHAR(20) NOT NULL,
birth_date DATE NOT NULL,
sex VARCHAR(1) CHECK (sex IN ('M','F')),
date_entered TIMESTAMP,
lunch_cost FLOAT NULL,
student_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);

此输出如下;

Error starting at line : 1 in command -
CREATE TABLE Student(
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
email VARCHAR(60) NULL,
street VARCHAR(50) NOT NULL,
city VARCHAR(40) NOT NULL,
state CHAR(2) DEFAULT "PA" NOT NULL,
zip MEDIUMINT UNSIGNED NOT NULL,
phone VARCHAR(20) NOT NULL,
birth_date DATE NOT NULL,
sex VARCHAR(1) CHECK (sex IN ('M','F')),
date_entered TIMESTAMP,
lunch_cost FLOAT NULL,
student_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)
Error report -
SQL Error: ORA-00984: column not allowed here
00984. 00000 -  "column not allowed here"
*Cause:    
*Action:

不知道该怎么做,花了一段时间搜索谷歌但没有找到答案。我的猜测显然与Oracle SQL Developer相比,他使用的终端可能有不同的格式规则。所以,如前所述,任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

这个create table语句来自mysql,你在oracle DB上执行它。

在oracle中,这将是:

CREATE TABLE Student(
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
email VARCHAR2(60),
street VARCHAR2(50) NOT NULL,
city VARCHAR2(40) NOT NULL,
state CHAR(2)  NOT NULL, --DEFAULT "PA"
zip number NOT NULL,
phone VARCHAR2(20) NOT NULL,
birth_date DATE NOT NULL,
sex VARCHAR2(1), --CHECK (sex IN ('M','F')),
date_entered TIMESTAMP,
lunch_cost number,
student_id number NOT NULL,
CONSTRAINT "STUDENT_PK" PRIMARY KEY ("STUDENT_ID"),
CONSTRAINT "STUDENT_CHK1" CHECK (sex in ('M','F')) ENABLE);

Oracle中的自动增量通过以下方式完成:

create sequence studen_seq start with 1 increment by 1;

create or replace trigger student_trg 
before insert on student for each row
declare
begin
:new.student_id := studen_seq.nextval;
end;

答案 1 :(得分:1)

您用于创建表的语法是MySQL DB。 您正在使用的MySQL Developer必须使用无法识别MySQL语法的Oracle DB。