无法在 Oracle SQL 开发人员中创建 Table - 第 1 行出错

Can't Create Table in Oracle SQL Developer - Error in Line 1

我正在关注 YouTube 上德里克·巴纳斯 (Derek Banas) 的教程,以便在一个视频中学习 MySQL。在他的教程中,他使用的是终端,而我使用的是 Oracle MySql Developer,因为这是我在大学里使用的,并且我正在尽我所能在 类 中取得成功,因此我从德里克巴纳斯的视频!所以我的问题将在下面与错误一起概述,任何 help/input 都将不胜感激!

在下面的第 8 行中,"MEDIUMINT UNSIGNED",Unsigned 显示为红色下划线,表示错误。即使删除了这个错误,它仍然在输出 window 中显示相同的错误。我把它留在那儿,因为 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:

不知道从这里开始做什么,花了一段时间搜索 google 但没有找到答案。我的猜测是,与 Oracle SQL 开发人员相比,这显然与他使用可能具有不同格式规则或其他内容的终端有关。是的,如前所述,感谢任何帮助!

这个 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;

您用于创建 table 的语法属于 MySQL 数据库。 您使用的 MySQL 开发人员必须使用无法识别 MySQL 语法的 Oracle DB。