COMANDOS DDL

Índice

Create Table
Create View
Create Index

Alter Table
PRIMARY KEY
FOREIGN KEY
AÑADIR CAMPO
MODIFICAR CAMPO
REGLAS DE VALIDACION
Alter Constraint
Drop


Usado para crear, modificar o eliminar objetos de base de datos y sus privilegios


Create Table: Crea una tabla

CREATE TABLE nombre Tabla
      (nombre_campo1 Tipo_de_variable  [(tamaño)] [Null/Not Null] [Primay Key] [Check (condición)],
       nombre_campo2 Tipo_de_variable  [(tamaño)] [Null/Not Null] [Primay Key],
       [FOREIGN KEY(Clave Secundaria) REFERENCES Tabla_Primaria(Clave_Primaria_Tabla_Primaria1, [Clave_Primaria_Tabla_Primaria2)]
       [CONSTRAINT pk_NombreRestriccion PRIMARY KEY (clave1, clave2)]
       [CONSTRAINT fk_NombreRestriccion FOREIGN KEY (clave secundaria) REFERENCES TablaPrimaria(ClavePrimaria)]
      etc... );

Se puede añadir, como parámetro adicional a las Claves ajenas (Foreign key), la opción ON DELETE CASCADE para que elimine en cascada los registros si se elimina la clave primaria de la que depende.
 
Ejemplo

CREATE TABLE Clientes
     (
           Cli_Cod Integer Not Null Primary Key,
           Cli_Descripcion Varchar2(30) Not Null,
           Cli_Direccion Varchar2(30) Not Null
      );

Existe una variación, que sería la de crear una tabla a partir de una SELECT

CREATE TABLE nombre Tabla
AS
   SELECT (Sentencia SQL);

Ejemplo

CREATE TABLE Copia_Clientes
AS
    SELECTFROM Clientes WHERE Modif = 1;

Esto, lo que realiza, es una Select y el resultado de la misma se inserta como una tabla nueva.

Subir Arriba


Create View: Una vista es simplemente una instrucción archivada de SQL, por lo cual no contiene datos. Se puede formar a partir de tablas, pero también de otras vistas. Se representa en forma de tabla, pudiéndose insertar, modificar o borrar información de ellas. Sirve para mostrar ciertos datos a usuarios, no mostrando otros que por la razón que sean, no queremos que sean accesibles.

CREATE [OR REPLACE] VIEW nombre Tabla
AS
   SELECT (Sentencia SQL);

Ejemplo:

CREATE VIEW Consulta_Saldo_vw
AS
    SELECT Cl.Codigo, Cl.Nombre, Hi.SaldoAnual
    FROM Clientes Cl, Historico Hi
    WHERE  (cl.codigo = hi.codigo) AND  (Hi.SaldoAnual BETWEEN 2000 AND 2500)
    ORDER BY CL_SaldoAnual Desc;

Con esto, se generaría la vista, pero no se ejecuta, sino que se guarda con ese nombre (Consulta_Saldo_vw). Para ejecutar una vista, sería similar al Select de una tabla

SELECT *
   FROM nombre Vista;

Ejemplo

SELECT *
    FROM Consulta_Saldo_vw;

Subir Arriba


Create Index: Se utilizan para que las búsquedas por ciertos campos sean más ágiles. No es recomendable cuando los datos que se muestren sean superiores al 5% del total. El índice puede ser unívoco (cuando no se admiten campos duplicados en dicho índice) o no unívoco.

CREATE [UNIQUE] INDEX Nombre Indice
     ON Nombre de tabla (Nombre del Campo) [ASC/DESC];

          Las columnas deben de ir por orden de prioridad.
          UNIQUE: Si se emplea,el índice comprobará, e impedirá, que no se introduzca un valor repetido en la columna con la que está asociado.
          ASC/DESC: Indica si el índice lleva orden ascendente o descendente.


Ejemplo

CREATE UNIQUE INDEX ui_Cliente_Nombre
     ON Cliente (Cl_Nombre);


Subir Arriba


Alter Table: Esta instrucción DDL se suele utilizar para cambiar características de las tablas, como pueden ser insertar campos, modificar campos, añadir restricciones (CHECK, Claves, etc.). Al ser una función tan diversas, vamos a intentar analizarlas todas:

ADD: Se emplea para añadir un nuevo archivo de control a la base de datos
DROP: Permite borrar un archivo de control
RENAME: Permite renombrar un archivo de control

Añadir Restricción de Clave Primaria: Si no se añade la clave primaria a la hora de crear la tabla, se puede anexar después.

ALTER TABLE Nombre Tabla
     ADD CONSTRAINT Nombre_Restricción
     PRIMARY KEY
(Nombre de Campo1, Nombre de Campo2, ... etc);

Ejemplo

ALTER TABLE Cliente
      ADD CONSTRAINT pk_Codigo_Cliente
      PRIMARY KEY
(Cl_Cliente);

Añadir Restricción de Clave Secundaria:  Se utiliza para definir la relación entre dos tablas. Es necesario que en la tabla referenciada esté definida la Primary Key, porque la relación se crea entre la Primary Key de la tabla referenciada y las columnas que indicamos en la cláusula Foreign Key.

          ALTER TABLE Nombre Tabla
                  ADD CONSTRAINT Nombre_Restricción
                  FOREIGN KEY (Nombre de Campo1, Nombre de Campo 2, .. etc..)
                  REFERENCES Tabla Referenciada;
Ejemplo
          ALTER TABLE Cliente
                   ADD CONSTRAINT fk_Codigo_Cliente
                   FOREIGN KEY (Cl_Cliente)
                   REFERENCES Nominas;

Añadir Campo Nuevo a Tabla:  Sirve para añadir un nuevo campo (una nueva columna) a una tabla ya creada. Debe de tenerse en cuenta que sólo se puede añadir una columna por sentencia.

ALTER TABLE Nombre Tabla
     ADD (Nombre_Campo Tipo_de_Variable [(tamaño)] [Null/Not Null])

La restricción NOT NULL sólo puede aplicarse si la tabla está vacía, es decir, aún no tiene ninguna fila. Para crear una nueva columna con la restricción NOT NULL. Si la tabla ya tiene filas (datos), primero deberá añadirse la columna sin la restricción, rellenar la columna, y modificarla después para que tenga la restricción NOT NULL.

Ejemplo

ALTER TABLE Clientes
    ADD (Cl_Poblacion Varchar2 (30) );

Modificar Campo de una Tabla: Podemos cambiar alguna de las características de un campo, también con este comando

ALTER TABLE Nombre Tabla
      MODIFY Nombre_Campo Nuevas_Condiciones

No se pueden borrar ni modificar nombres de columnas ya existentes. Sólo se pueden modificar las variables de tipo carácter a otras variables de tipo carácter si toda la columna está compuesta de NULL, pero sí está permitido aumentar el tamaño de las variables carácter. Si puede cambiarse el tamaño de las variables numéricas. Las modificaciones mediante DEFAULT de una columan afectarán sólo a los datos que se introduzcan después de la modificación, no a laos anteriores.

Ejemplo

ALTER TABLE Clientes
       MODIFY Nombre Varchar(30) not null;

En este caso, lo que hemos hecho es cambiar de un tamaño 10 que había en el momento de crear el campo a uno de tamaño 30, añadiendole también que no se admiten campos nulos en dicho campo.

Otro caso sería poner un campo por defecto, en este cao, quremos que el número de vacantes por defecto para cualquier curso sea de 20
ALTER TABLE Curso
     MODIFY (Vacantes default 20);

Reglas de Validación (Restricción Check): Las reglas de validación son muy importantes porque permiten establecer una condición a los valores que debe aceptar una columna.

ALTER TABLE Nombre Tabla
        ADD CONSTRAINT CK_NombreTabla_NombreCampo
        CHECK (Condición);

Ejemplo:

ALTER TABLE Curso
         ADD CONSTRAINT CK_Curso_PreCurso
         CHECK ( Precurso > 0 );

Subir Arriba

Alter Constraint : En muchos casos debemos garantizar que los valores de una columna o conjunto de columnas de una tabla acepten sólo valores únicos

ALTER CONSTRAINT Nombre Tabla
        ADD CONSTRAINT Nombre Restricción
        UNIQUE (Nombre Campo 1, Nombre Campo 2, ... etc.);

Ejemplo

ALTER TABLE Alumno
       ADD CONSTRAINT U_Alumno_NomAlumno
       UNIQUE (NomAlumno);
Subir Arriba

Drop: Este comando se utiliza para eliminar objetos de nuestra base de datos. Se suele utilizar la palabra Drop, a continuación el nombre del objeto que se desea eliminar (por ejemplo, Table) y por último, el nombre de dicho objeto (Clientes). Veamos algunos ejemplos:

DROP Nombre_Objeto Nombre_Elemento [CASCADE CONSTRAINTS];

Si se borra una tabla, se borran, a su vez, los índices a ella asociados, vistas, vistas creadas a partir de dichas vistas, etc.
Si se borra una tabla a la que otras hacen referencia en claves externas habrá que incluir la cláusula CASCADE CONSTRAINT

Ejemplos:

DROP TABLE Clientes
DROP VIEW Informe_Clientes_vw
DROP INDEX pk_Codigo_Cliente

Subir Arriba