Create Table en ORACLE SQL

1
Create Table en ORACLE SQL
GuardarSavedRemoved 0

En esta publicación te voy a enseñar como usar el CREATE TABLE en ORACLE para crear tablas de base de datos, veremos su sintaxis mas simple, como generar llaves primarias, llaves foranes, también te mostrare como asignar valores por defecto.

Además, vamos a ver como poblar las tablas con la sentencia INSERT INTO y vamos a crear una tabla a partir de una sentencia SELECT. Sigue leyendo para ver como se hace, te recomiendo usar el editor SQL Developer de ORACLE.

Sintaxis de CREATE TABLE en ORACLE

La sintaxis básica para crear una tabla es usar CREATE TABLE seguido del nombre de la tabla, de forma opcional se puede poner el dueño (owner) de la tabla que en la sintaxis esta representada por la palabra schema.

Después se abre paréntesis y dentro se van declarando cada una de las columnas que conformaran nuestra tabla. Las columnas como datos obligatorios tienen, el nombre de la columna y su tipo.

También se les puede asignar un valor por default, pero es opcional, después de crear una columna, para crear una nueva, se especifica usando el separador “,”.

CREATE TABLE [schema.]table(
   column datatype [DEFAULT expr][, ...]
);

Tipos de datos en ORACLE SQL

Ahora te presento los tipos de datos mas usados en SQL, estos los usaremos para poder asignar los tipos a nuestras columnas de Base de datos cuando creemos las tablas con la instrucción CREATE TABLE.

  • VARCHAR2(size) Variable de tipo cadena de caracteres
  • CHAR(size) Cadena de caracteres fija
  • NUMBER(p, s) Variable numérica
  • DATE Variable de tipo fecha y hora
  • LONG Variable de tipo cadena (hasta 2 GB)
  • CLOB Variable de cadena (4 gigabytes – 1) * (DB_BLOCK_SIZE).
  • RAW Información binaria LONG RAW
  • BLOB Similar a CLOB pero guarda información binaria (4 gigabytes – 1) * (DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB)).
  • BFILE Información binaria que se guarda en un archivo externo (hasta 4GB)
  • ROWID Numero en base 64 que representa a un registro de forma única en una tabla

Ejemplos

Vamos a crear una tabla para guardar los diferentes departamentos de una empresa, como puedes ver, estamos creando un identificador para el departamento de tipo numérico, un campo llamado nombre para guardar el nombre y es de tipo cadena. Localidad para que sepamos donde se ubica y una fecha de creación para saber cuando se creó ese departamento.

En este último caso podemos ver que se esta asignando un valor por default a la columna FECHA_CREACION con la palabra DEFAULT y estamos diciéndole que le ponga la fecha actual del sistema con la palabra clave SYSDATE.

CREATE TABLE departamentos(
   depto_id NUMBER(9),
   nombre VARCHAR2(100),
   localidad VARCHAR2(300),
   fecha_creacion DATE DEFAULT SYSDATE
);

Ahora vamos a crear otra tabla donde vamos a guardar a todos los empleados que trabajan en los diferentes departamentos.

Hacemos lo mismo que en el ejemplo anterior, con las palabras CREATE TABLE y seguido del nombre que le daremos a nuestra tabla, en este caso empleados.

Ahora comenzamos a crear cada una de las columnas con sus respectivos tipos, y en el caso de la columna FECHA_CREACION, hacemos lo mismo que en el ejemplo de la tabla DEPARTAMENTOS, le asignamos un valor por default con la palabra clave DEFAULT y asignándole la fecha y hora actual del sistema.

CREATE TABLE empleados(
   emp_id NUMBER(9),
   nombre VARCHAR2(100),
   depto_id VARCHAR2(300),
   email VARCHAR2(100),
   puesto VARCHAR2(100),
   fecha_creacion DATE DEFAULT SYSDATE
);

Nota: Cuando se cierra el paréntesis, es muy importante que pongas el “;”, ya que es el carácter que le indica al compilador de ORACLE SQL que ya termino la creación de la tabla.

PRIMARY KEY

Como vimos en los ejemplos anteriores para la tabla departamentos y empleados creamos 2 columnas que servirán como identificadores de registro. Esto quiere decir que esos números NO se pueden repetir y son únicos.

Ahora vamos a crear una llave primaria para cada tabla a través de esos campos identificadores (depto_id y emp_id).

Para crear la llave primaria a una tabla se puede hacer de 2 formas:

  1. Usando la palabra clave CONSTRAINT dentro del CREATE TABLE
  2. Si ya esta creada la tabla, puedes usar ALTER TABLE

Nosotros vamos a crear la llave primaria junto con la tabla, así que vamos a usar CONSTRAINT dentro del CREATE TABLE. Veamos de forma rápida su sintaxis y como quedaría en nuestros ejemplos.

CONSTRAINT nombre_constraint PRIMARY KEY (columna)

-- Tabla departamentos con PRIMARY KEY
CREATE TABLE departamentos(
   depto_id NUMBER(9),
   nombre VARCHAR2(100),
   localidad VARCHAR2(300),
   fecha_creacion DATE DEFAULT SYSDATE
   CONSTRAINT departamentos_pk PRIMARY KEY(depto_id)
);

-- Tabla EMPLEADOS con PRIMARY KEY
CREATE TABLE empleados(
   emp_id NUMBER(9),
   nombre VARCHAR2(100),
   depto_id VARCHAR2(300),
   email VARCHAR2(100),
   puesto VARCHAR2(100),
   fecha_creacion DATE DEFAULT SYSDATE
   CONSTRAINT empleados_pk PRIMARY KEY(emp_id)
);

FOREIGN KEY

Una vez que ya tenemos identificadores únicos PRIMARY KEY para nuestras tablas, es momento para crear las relaciones en ellas, si es que existe algún tipo de relación.

En este caso SI existe relación entre los departamentos y los empleados, ya que un departamento puede tener uno o más empleados. También un empleado solo puede estar en un departamento.

Para esto, vamos a crear una llave foránea (FOREIGN KEY) desde la tabla EMPLEADOS que apunte a la tabla DEPARTAMENTOS, con esto aseguramos la relación entre el departamento y el empleado. Veamos rápido la sintaxis y el ejemplo.

CONSTRAINT nombre_constraint FOREIGN KEY (columna) REFERENCES tabla (columna)

-- Creando la llave foranea de empleados hacia departamentos usando CONSTRAINT
CREATE TABLE empleados(
   emp_id NUMBER(9),
   nombre VARCHAR2(100),
   depto_id VARCHAR2(300),
   email VARCHAR2(100),
   puesto VARCHAR2(100),
   fecha_creacion DATE DEFAULT SYSDATE
   CONSTRAINT empleados_pk PRIMARY KEY(emp_id)
   CONSTRAINT emp_dep_fk FOREIGN KEY (depto_id) REFERENCES departamentos (depto_id)
);

DEFAULT VALUE

Como ya vimos en la creación de las tablas anteriores, la columna FECHA_CREACION tiene un valor por default, esto quiere decir, si al momento de insertar un registro NO se proporciona un valor para la columna, ORACLE SQL le asignara el valor establecido por defecto en la creación de la tabla. Veamos rápido la sintaxis y el ejemplo.

nombre_columna DATATYPE DEFAULT value

Ejemplos:

fecha_creacion DATE DEFAULT SYSDATE
puesto VARCHAR2(100) DEFAULT 'ORACLE DEVELOPER'

INSERT INTO

Una vez que tenemos creadas nuestras tablas en la base de datos ORACLE con INSERT INTO, llego la hora de insertar información en ellas, esto lo logramos usando INSERT INTO. Veamos su sintaxis.

INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);

Ejemplos:

-- Insertando un registro en la tabla departamentos
INSERT INTO departamentos (depto_id, nombre, localidad, fecha_creacion)
Values(1, 'SISTEMAS', 'MEXICO DF', SYSDATE);

-- Insertando un registro en la tabla empleados
INSERT INTO empledos (emp_id, nombre, depto_id, email, puesto, fecha_creacion)
Values(1, 'MARIO CELIS', 1, 'MARIOCELIS@HOTMAIL.COM', 'PROGRAMADOR', SYSDATE);

COMMIT;

Nota: Para hacer los datos persistentes en la base de datos, se usa la palabra COMMIT, de esta forma.

CREATE TABLE AS SELECT

Si hay una tabla existente con datos y nos piden realizar un respaldo para poder trabajar, podemos hacer el CREATE TABLE combinado con el INSERT INTO, esto lo logramos usando el CREATE TABLE AS SUBQUERY.  Veamos la sintaxis.

CREATE TABLE table [(column, column...)] AS
subquery;

Como puedes ver en la sintaxis, se crea la estructura de forma normal con CREATE TABLE, pero en la parte de abajo se usa AS SUBQUERY, donde SUBQUERY es una consulta SELECT de base de datos.

Las columnas que regresa el query tienen que coincidir en número y en tipo con las columnas declaradas en el CREATE TABLE. Si no especificamos las columnas en la sentencia CREATE TABLE, ORACLE SQL creara las columnas por defecto con los tipos y nombres que vienen del subquery.

Por ejemplo, vamos a hacer un respaldo de las tablas DEPARTAMENTOS y EMPLEADOS que ya trabajamos en los ejemplos anteriores

-- Creando tabla departamentos_bkp con datos a partir de la tabla departamentos
CREATE TABLE departamentos_bkp AS
   SELECT *
   FROM departamentos;

-- Creando tabla empleados_bkp con datos a partir de la tabla empleados
CREATE TABLE empleados_bkp AS
   SELECT *
   FROM empleados;

Conclusión

Llegamos al final de este pequeño tutorial para aprender a crear tablas en ORACLE SQL usando la sentencia CREATE TABLE, en el camino vimos desde su sintaxis hasta crear llaves primarias y foráneas, pasando por la creación de tablas a partir de una sentencia SELECT. Si tienes alguna duda, comentario o sugerencia, déjame tu comentario en la parte de abajo.

Te dejo la documentación oficial de ORACLE sobre CREATE TABLE para que la revises también.

Estaremos encantados de escuchar lo que piensas

Deje una respuesta

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies
El inicio de sesión/registro está temporalmente inhabilitado