I am a university student and need to submit a coursework using iSQL* Plus by Oracle.
I am trying to create a table with the following SQL Statement:
CREATE TABLE Category
( `id` INT(11) NOT NULL AUTO_INCREMENT ,
`title` VARCHAR (45) NULL ,
PRIMARY KEY (`id`) );
This results in the following message:
ORA-00911: invalid character
It’s referring to the tick ` sign. So I tried the following, using a single quote instead:
CREATE TABLE Category
( 'id' INT(11) NOT NULL AUTO_INCREMENT ,
'title' VARCHAR (45) NULL ,
PRIMARY KEY ('id') );
The error:
ORA-00904: : invalid identifier
So one more try with ” – The Error:
( "id" INT(11) NOT NULL AUTO_INCREMENT ,
*
ORA-00907: missing right parenthesis
If I remove the (11) behind the INT it will complaint about the AUTO_INCREMENT attribute.
CREATE TABLE Category
( "id" INT NOT NULL AUTO_INCREMENT ,
"title" VARCHAR (45) NULL ,
PRIMARY KEY ("id") );
I thought SQL is SQL and there are not really differences on these very basic levels. I thought that things are getting different on deeper levels?
- how I get my statement working?
- what would you recommend for someone familiar with MySQL to learn Oracle?
Not all SQL is the same. Neither Oracle nor MySQL support the actual SQL standard of IDENTITY.
Oracle does not use backticks… you don’t actually need to quote your identifiers. Better not to so you don’t end up inadvertently using an invalid character in an identifier.
Oracle numerics are called NUMBER, and can take an optional precision and scale.
To do an AUTO_INCREMENT, create a sequence:
Then when you insert into the table, do this:
To do this automatically, like AUTO_INCREMENT, use a before insert trigger:
Or:
Now, as far as discovering these differences, you can often just search for something like “oracle identity” or “oracle auto_increment” to see how Oracle does this.