manual postgresql

16
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;

Upload: manuel-jose-sanchez-rodriguez

Post on 16-Sep-2015

232 views

Category:

Documents


5 download

DESCRIPTION

avance del manual de postgresql

TRANSCRIPT

En esta parte veremos como realizar la eliminacin de los objetos de la base de datos creada anteriormente, pero con fines prcticos lo haremos paso a paso, ya que la eliminacin podra 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) ELIMINACIN DE CLAVES FORNEAS (FOREIGN KEYS):ALTER TABLE Persona.PostulanteDROP CONSTRAINT fk_IDCarrera;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT fk_IDPerAcad;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT fk_IDModalidad;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT fk_IDContacto;;;--2) ELIMINACIN DE CLAVES PRIMARIAS (PRIMARY KEYS):ALTER TABLE Admision.PerAcadDROP CONSTRAINT pk_IDPerAcad;;;ALTER TABLE Admision.CarreraDROP CONSTRAINT pk_IDCarrera;;;ALTER TABLE Persona.ContactoDROP CONSTRAINT pk_IDContacto;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT pk_IDPostulante;;;ALTER TABLE Admision.ModalidadDROP CONSTRAINT pk_IDModalidad;;;--3) ELIMINACIN DE RESTRICCIONES (UNIQUE):ALTER TABLE Admision.CarreraDROP CONSTRAINT uq_nombrecarrera;;;ALTER TABLE Persona.ContactoDROP CONSTRAINT uq_ContactoDNI;;;ALTER TABLE Admision.ModalidadDROP CONSTRAINT uq_Modalidad;;;--4) ELIMINACIN DE RESTRICCIONES (CHECK):ALTER TABLE Persona.ContactoDROP CONSTRAINT ck_Genero;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT ck_asistioexamen;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT ck_ingreso;;;ALTER TABLE Persona.PostulanteDROP CONSTRAINT ck_puntaje;;;--5) ELIMINACIN DE COLUMNAS (COLUMNS):ALTER TABLE Admision.CarreraDROP COLUMN IDCarrera,DROP COLUMN Nombre;;;--6) ELIMINACIN DE TABLAS (TABLES):DROP TABLE Admision.Carrera;DROP table Persona.Contacto;DROP table Persona.Postulante;DROP Table Admision.PerAcad;DROP TABLE Admision.Modalidad;;;--7) ELIMINACIN DE SECUENCIAS (SEQUENCE):DROP SEQUENCE Persona.seq_idcontacto;DROP SEQUENCE Admision.seq_idmodalidad;;;--8) ELIMINACIN DE ESQUEMAS (SCHEMAS) :DROP SCHEMA Persona;DROP SCHEMA Admision;;;--9) ELIMINACIN DE BASE DE DATOS (DATABASE):DROP DATABASE DBAdmision;Como explicaba en un inicio, podramos utilizar mtodos ms 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 objetosDROP SCHEMA Persona CASCADE;DROP SCHEMA Admision CASCADE;

psql: La pequea gran herramienta I.Mayo 4, 2009psqles el cliente interactivo de lnea de comandos de PostgreSQL.Este programa nos permite realizar las tareas mas comunes como ingresar, ejecutar un query y ver los resultados obtenidos, pero adems incluye una serie de caractersticas muy completas en cuanto a la integracin con scripts, que nos ser de mucha utilidad para automatizar tareas repetitivas o peridicas.Este artculo es una breve introduccin para su utilizacin, con la descripcin de las funciones mas utilizadas.1. Ejecutando psqlpsqlse invoca desde la linea de comandos y presenta una serie de opciones (flags) muy abundante.La forma de invocarlo es :psql [OPCIONES] [BASE DE DATOS [USUARIO]]

Aqui va un detalle de las opciones mas utilizadas y algunas de las mas tiles:Opcin (flag)Descripcin

-U USUARIOEspecifica con que usuario se conectar a la base de datos. Si esta opcin no es utilizada intentar conectarse el usuario que ejecute psql.

-d [BASE DE DATOS]Especifica a que base de datos conectarse inicialmente. (Si esta opcin no es utilizada intentar conectarse a una base de datos con el mismo nombre del usuario utilizado para conectarse.)

-h EQUIPOEspecifica en que equipo se encuentra el servidor de base de datos .Puede indicarse el nombre o la direccin IP del servidor. Si no se especifica este parmetro, intentar conectarse al equipo en donde se ejecuta psql.

-p PUERTOEspecifica en que puerto se encuentra ejecutando el servicio de base de datos en el servidor .Si no se especifica este parmetro, intentar conectarse al puerto por defecto (5432).

-c [COMANDO]Ejecuta solo el comando indicado como parmetro y luego sale.

-f [ARCHIVO]Ejecuta los comandos SQL contenidos en archivo indicado como parmetro y luego sale.

-lLista las bases de datos disponibles y luego sale.

-o [ARCHIVO]Enva los resultados de las consultas al archivo indicado como parmetro.

-L [ARCHIVO]Enva el registro de toda la sesin a un archivo indicado como parmetro. Es muy til para mostrar una serie de comandos ejecutados y sus resultados.

-HGenera el resultado de las consultas en formato HTML.(La combinacin de este comando con la opcin -o nos permite realizar un script que genere reportes de manera muy sencilla.

-AGenera el resultado de las consultas sin formatear el resultado. Es muy til para pasar datos a otros formatos (por ejemplo, para importar un archivo de texto a Excel)

-tImprime solo las filas seleccionadas (sin encabezados).

-xActiva el formato expandido para mostrar los resultados. Este formato muestra cada fila como una especie de ficha, encabezada por el nmero de fila y con una linea por cada columna.

-F [CADENA]Utiliza la cadena indicada como separador entre columnas. Utilizando esta opcin en conjunto con -a se pueden generar archivos tipo CSV (delimitados por comas ).

-tImprime solo las filas seleccionadas (sin encabezados).

Algunos ejemplos de la utilizacin de estas opciones:

Invocando psql especificando usuario,equipo, port y base de datos.

Generar un archivo tipo CSV (delimitado por comas) con el resultado de una consulta.

Generar un reporte HTML a partir de una consulta.

2. Dentro de psql (modo interactivo)Una vez dentro de psql, entramos en modo interactivo, es decir, ejecutamos un comando SQL y psql nos muestra el resultado del mismo.En este modo tenemos tambin una gran cantidad de posibilidades, gracias a los comandos propios de psql.Estos comandos se ejecutan directamente desde la linea de entrada (prompt) de pql y tienen la caracterstica de estar siempre precedidos por una barra como esta \.Algunos de los comandos internos mas utilizados:ComandoDescripcin

\c BASE DE DATOS USUARIO EQUIPO PUERTOPermite reconectarse. Recibe como parmetros la base de datos, usuario, equipo y puerto.

\qSale de psql.

\timingHabilita en reporte de tiempos de ejecucin. Es muy util para registrar cuanto tarda un SQL en ejecutarse.

\! COMANDOEjecuta el parmetro ingresado en el sistema operativo. Si no se especifican parmetros sale temporalmente (hasta que se cierra con exit) a la linea de comandos del sistema operativo.

\e ARCHIVOInvoca al editor de textos predeterminado. Si no se especifica el parmetro ARCHIVO, edita el ltimo comando SQL (del bfer interno). Si se especifica un archivo lo abre con el mismo editor. (Para definir el editor preferido, usa la variable EDITOR del sistema operativo.).

\g ARCHIVOEjecuta los comandos SQL almacenados en el bfer. Si se especifica el parmetro ARCHIVO, el resultado es enviado al archivo indicado, si no se muestra por pantalla.

\pImprime el contenido el bfer de SQL.

\w ARCHIVOGuarda el contenido del bfer de SQL en un Archivo (parmetro obligatorio).

\s ARCHIVOMuestra la historia (ltimos comandos SQL ejecutados). Si se especifica el parmetro ARCHIVO, el resultado es enviado al archivo indicado, si no se muestra por pantalla..

\i ARCHIVOEjecuta los comandos SQL que estn almacenados en el archivo.

\o ARCHIVOEnva los resultados de las consultas al archivo indicado como parmetro.

\dtLista todas las tablas.

\d TABLALista las columnas de la tabla indicada como parmetro. (Describe la tabla)

Ejemplos:

Listado de bases de datos, conexin a una base de datos en particular.

Ejecutar un comando del Sistema Operativo. Ejecutar SQLs almacenados en un archivo.

Eliminar todas las tablas de una base de datos PostgreSQLProcedimiento:

1- Utilizamos el siguiente comando para generar automticamente un script SQL con todos los DROPs:

~$ psql -h -t -d -U -c "SELECT'DROP TABLE ' || n.nspname || '.' || c.relname || ' CASCADE;'FROM pg_catalog.pg_class cLEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relownerLEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespaceWHERE c.relkind IN ('r','')AND n.nspname NOT IN ('pg_catalog', 'pg_toast')AND pg_catalog.pg_table_is_visible(c.oid)ORDER BY 1;" > droptables

Donde: = Nombre de la mquina donde reside la base de datos = Nombre de la base de datos = Nombre de usuario

2- Ejecutamos el script generado en el paso anterior:

~$ psql -h-d-U-fdroptables

Consultar todos los ndices en PostgreSQL y OraclePostgreSQL (hasta 14 ndices por tabla):SELECTUPPER(t.relname) as table_nameUPPER(a.attname) as column_nameFROMpg_class t,pg_class i,pg_index ix,pg_attribute a,pg_namespaceWHEREt.oid = ix.indrelidAND i.oid = ix.indexrelidAND a.attrelid = t.oidAND (a.attnum = ix.indkey[0]OR a.attnum = ix.indkey[1]OR a.attnum = ix.indkey[2]OR a.attnum = ix.indkey[3]OR a.attnum = ix.indkey[5]OR a.attnum = ix.indkey[6]OR a.attnum = ix.indkey[7]OR a.attnum = ix.indkey[8]OR a.attnum = ix.indkey[9]OR a.attnum = ix.indkey[10]OR a.attnum = ix.indkey[11]OR a.attnum = ix.indkey[12]OR a.attnum = ix.indkey[13]OR a.attnum = ix.indkey[14])AND t.relkind = 'r'AND t.relnamespace = pg_namespace.oidAND pg_namespace.nspname = 'public'ORDER BYt.relname,a.attname;

Consultar llaves primarias y forneas en PostgreSQL

Llaves primarias en PostgreSQL (no funciona para llaves compuestas):

SELECT UPPER(conname) AS restriccion, UPPER(relname) AS tabla, UPPER(pg_catalog.pg_attribute.attname) AS columna

FROM pg_catalog.pg_constraint, pg_catalog.pg_class, pg_catalog.pg_attribute

WHERE contype = 'p'

AND conrelid = pg_catalog.pg_class.oid

AND conrelid = pg_catalog.pg_attribute.attrelid

AND pg_catalog.pg_attribute.attnum = pg_catalog.pg_constraint.conkey[1]

ORDER BY UPPER(conname), UPPER(relname), UPPER(pg_catalog.pg_attribute.attname);

Llaves forneas en PostgreSQL (no funciona para llaves compuestas):

SELECT UPPER(A.relname) AS tabla, UPPER(C.attname) AS columna, UPPER(B.relname) AS tabla_foranea, UPPER(D.attname) AS columna_foranea

FROM pg_catalog.pg_constraint, pg_catalog.pg_class AS A, pg_catalog.pg_class AS B, pg_catalog.pg_attribute C, pg_catalog.pg_attribute D

WHERE contype = 'f'

AND conrelid = A.oid

AND confrelid = B.oid

AND conrelid = C.attrelid

AND confrelid = D.attrelid

AND C.attnum = pg_catalog.pg_constraint.conkey[1]

AND D.attnum = pg_catalog.pg_constraint.confkey[1]

ORDER BY UPPER(A.relname), UPPER(B.relname), UPPER(C.attname), UPPER(D.attname);

Registrar todas las sentencias o peticiones en el log de PostgreSQL en UBUNTU

Configurar la siguiente lnea en el archivo "/etc/postgresql/8.4/main/postgresql.conf":log_statement = 'all'

Reiniciar el servidor PostgreSQL:/etc/init.d/postgresql-8.4 force-reload

Listo! ahora todas las peticiones (queries) quedarn almacenadas en el archivo "/var/log/postgresql/postgresql-8.4-main.log"