PostgreSQL: Sentencias DDL (2)

Este es el Post #7 del Topic: Guía Práctica de PostgreSQL

En esta parte veremos como realizar la eliminación de los objetos de la base de datos creada anteriormente, pero con fines prácticos lo haremos paso a paso, ya que la eliminación podría ser tan sensilla como eliminar la base de datos directamente, o los componentes que lo componen en cascada si fuese necesario.

Es necesario haber seguido el post anterior, el escript que necesitamos ejecutar antes de realizar estos ejercicios lo  tiene aqui:

Descargar Script: PostgreSQL Sentencias DDL.sql

--1) ELIMINACIÓN DE CLAVES FORÁNEAS (FOREIGN KEYS):
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDCarrera;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDPerAcad;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDModalidad;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDContacto;
;;
--2) ELIMINACIÓN DE CLAVES PRIMARIAS (PRIMARY KEYS):
ALTER TABLE Admision.PerAcad
DROP CONSTRAINT pk_IDPerAcad;
;;
ALTER TABLE Admision.Carrera
DROP CONSTRAINT pk_IDCarrera;
;;
ALTER TABLE Persona.Contacto
DROP CONSTRAINT pk_IDContacto;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT pk_IDPostulante;
;;
ALTER TABLE Admision.Modalidad
DROP CONSTRAINT pk_IDModalidad;
;;
--3) ELIMINACIÓN DE RESTRICCIONES (UNIQUE):
ALTER TABLE Admision.Carrera
DROP CONSTRAINT uq_nombrecarrera;
;;
ALTER TABLE Persona.Contacto
DROP CONSTRAINT uq_ContactoDNI;
;;
ALTER TABLE Admision.Modalidad
DROP CONSTRAINT uq_Modalidad;
;;
--4) ELIMINACIÓN DE RESTRICCIONES (CHECK):
ALTER TABLE Persona.Contacto
DROP CONSTRAINT ck_Genero;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT ck_asistioexamen;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT ck_ingreso;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT ck_puntaje;
;;
--5) ELIMINACIÓN DE COLUMNAS (COLUMNS):
ALTER TABLE Admision.Carrera
DROP COLUMN IDCarrera,
DROP COLUMN Nombre;
;;
--6) ELIMINACIÓN DE TABLAS (TABLES):
DROP TABLE Admision.Carrera;
DROP table Persona.Contacto;
DROP table Persona.Postulante;
DROP Table Admision.PerAcad;
DROP TABLE Admision.Modalidad;
;;
--7) ELIMINACIÓN DE SECUENCIAS (SEQUENCE):
DROP SEQUENCE Persona.seq_idcontacto;
DROP SEQUENCE Admision.seq_idmodalidad;
;;
--8) ELIMINACIÓN DE ESQUEMAS (SCHEMAS) :
DROP SCHEMA Persona;
DROP SCHEMA Admision;
;;
--9) ELIMINACIÓN DE BASE DE DATOS (DATABASE):
DROP DATABASE DBAdmision;

Como explicaba en un inicio, podríamos utilizar métodos más directos si queremos eliminar un objeto, por ejemplo:

--1)Eliminar la base de datos con todos sus objetos:
DROP DATABASE DBAdmision; --en modo desconectados
--2)Eliminar una secuencia que está siendo utilizada por una tabla:
DROP SEQUENCE Persona.seq_idcontacto CASCADE;
DROP SEQUENCE Admision.seq_idmodalidad CASCADE;
--3)Eliminar una tabla con todos los constraints que posea:
DROP TABLE Admision.Carrera CASCADE;
DROP Table Admision.PerAcad CASCADE;
DROP TABLE Admision.Modalidad CASCADE;
DROP table Persona.Contacto CASCADE;
DROP table Persona.Postulante CASCADE;
--4)Eliminar un esquema con todos sus objetos
DROP SCHEMA Persona CASCADE;
DROP SCHEMA Admision CASCADE;

TOPIC: DROP, CASCADE, COLUMN

7 thoughts on “PostgreSQL: Sentencias DDL (2)

  1. ahh, ya entendi tu pregunta….OK

    Intentemos eliminando la tabla Admision.Carrera:

    DROP TABLE Admision.Carrera;

    NOTICE: constraint fk_idcarrera on table persona.postulante depends on table admision.carrera

    Entonces elimino primero fk_idcarrera de la tabla persona.postulante:

    ALTER TABLE Persona.Postulante
    DROP CONSTRAINT fk_IDCarrera;

    Como la tabla persona.postulante esta relacionada con admision.carrera nos advierte que no se puede eliminar y que primero hay que eliminar la clave foránea fk_IDCarrera de persona.postulante , una vez realizado eso recién podemos eliminar la tabla con un simple DROP TABLE Admision.Carrera;

    en cambio, con:
    DROP TABLE Admision.Carrera CASCADE;

    NOTICE: drop cascades to constraint fk_idcarrera on table persona.postulante

    Como dice el mensaje, se elimina primero la clave foranea de la tabla a la que refiere y posteriormente la tabla.
    De esa manera los datos existentes en la tabla Persona.Postulante relacionado con Admision.Carrera no se pierden, se mantienen aunque ya no es clave foránea.

  2. ok, mi pregunta es esta

    si tu haces
    –3)Eliminar una tabla con todos los constraints que posea:
    DROP TABLE Admision.Carrera CASCADE;
    DROP Table Admision.PerAcad CASCADE;
    DROP TABLE Admision.Modalidad CASCADE;
    DROP table Persona.Contacto CASCADE;
    DROP table Persona.Postulante CASCADE;
    borras en cascada los constraint, pero si hicieras esto, por equivocacion error o lo que sea
    –3)Eliminar una tabla con todos los constraints que posea:
    DROP TABLE Admision.Carrera;
    DROP Table Admision.PerAcad;
    DROP TABLE Admision.Modalidad;
    DROP table Persona.Contacto;
    DROP table Persona.Postulante;
    mil gracias por la contestacion, y tan rpida espero y siga bueno este tuto

  3. juan jaimes :hola encontre tu tuto y esta excelente voy en este tema ddl2. una pregunta con respecto a esto, si borro una tabla que tiene constraint sin cascade, despues como borro los constraint de esa tabla?, mil gracias y sigue asi espero que tambien el tuto contenga o sea de principiantes hasta avanzados. te falto incluir el texto de esta pagina en zip como los anteriores

    1. Según entiendo, lo que quieres es borrar el constraint de una tabla después de eliminarla, pues al eliminar una tabla se eliminan tambien todos los objetos que ésta contiene sean columns, constraint, checks. Te referias a eso?
      Saludos otra vez!!

      Con respecto a los script, para estos topics basta con copiar y pegar de la página, en los post posteriores si será necesario contar con el script de generación de toda la base de datos.

      Si tienen problemas a la hora de abrir la pagina de los scripts y se ven desconfigurados los textos configuren la codificación de caracteres del navegador, Firefox(Ver -> Codificación de Caracteres), en algunos casos funciona con UTF8 en otros con la configuración occidental, hagan la prueba.

  4. hola encontre tu tuto y esta excelente voy en este tema ddl2. una pregunta con respecto a esto, si borro una tabla que tiene constraint sin cascade, despues como borro los constraint de esa tabla?, mil gracias y sigue asi espero que tambien el tuto contenga o sea de principiantes hasta avanzados.

Deja un comentario