Duda absurda tabla oracle

Hola compañeros, estoy creando una tabla en oracle y me sale el error "Falta una palabra clave" y mira que no lo veo jaja.

Soy novato en sql y estoy creandola asi:

CREATE TABLE CURSOS(
NOMBRE_CURSO VARCHAR2(25) UNIQUE,
COD_CURSO NUMBER(5) PRIMARY KEY,
NIF_PROFESOR VARCHAR2(9),
FECHA_INICIO DATE,
FECHA_FIN DATE,
HORAS_TOTALES NUMBER(3) NOT NULL,
CONSTRAINT cur_nif_FK FOREIGN KEY(NIF_PROFESOR)
);

Veis que falte algo? Es que yo no lo veo :S
En la foreign key te falta la referencia a la tabla y columna que quieras hacer la clave externa no?
MMMm eso es con el REFERENCE PROFESORES(NIF_PROFESOR).???

Es que viene super mal explicado todo....

Gracias
Sería creo (no he usado nunca oracle, sólo transact y mysql, así que no sé si es igual)

CONSTRAINT cur_nif_FK FOREIGN KEY(NIF_PROFESOR) REFERENCES "nombre de tabla externa" ("nombre de columna externa")

Sin comillas, claro
Muchas gracias el_popi, es igual prácticamente por no decir igual. No viene nada explicado en el temario y ya no te digo para cambiar la clave primaria de una tabla por otros dos campos.

Me puedes decir como sería el comando para eliminar la primary key y añadir el nombre y apellido como primary key?

CREATE TABLE PROFESORES(
Nombre VARCHAR2(20) UNIQUE,
P_APELLIDO VARCHAR2(20),
S_APELLIDO VARCHAR2(20),
NIF_PROFESOR VARCHAR2(9),
DIRECCION VARCHAR2 (50),
TITULACION VARCHAR2(20),
SALARIO FLOAT NOT NULL,
CONSTRAINT pro_nif_fk PRIMARY KEY(NIF_PROFESOR)
);

Cuando lo veo una vez lo comprendo perfectamente, pero sin verlo no se como hacerlo.....

Gracias por adelantado :)
Pues cuando creas las primary keys, se suele crear un constraint, una restricción vamos. Tendrías que borrar esa restricción con:

ALTER TABLE "nombre de la tabla"
DROP CONSTRAINT "nombre de la restricción"

En MySQL es más fácil porque pones DROP PRIMARY KEY y santas pascuas, pero creo que en oracle tienes que buscar el nombre de dicha restricción, que en este caso supongo que sería esa que has puesto, pro_nif_fk.

Sobre poner el nombre y apellido como PRIMARY KEY, no creo que puedas, ya que sólo puede haber una PRIMARY KEY. Podrías poner el Nombre como PRIMARY KEY y los apellidos como UNIQUE, otra cosa no hay. Lo que si puedes es crear una primary key compuesta de varias columnas. Prueba a usar ADD PRIMARY KEY (columna1,columna2)

ALTER TABLE "nombre de la tabla"
ADD PRIMARY KEY ("nombre columna1", "nombre columna2...")

Sin comillas.

PD: Para qué cojones tienes temario si no explica nada, por curiosidad XD?
5 respuestas