Está en la página 1de 14

Sesin 3

Laboratorio de Base de Datos

Sesin 3
I.

PostgreSQL

OBJETIVOS Conocer el entorno de trabajo de PostgreSQL Integrar las sentencias SQL al Gestor de Base de Datos PostgreSQL Profundizar en el manejo de las sentencias SQL. Examinar la sintaxis de las sentencias SQL en PostgreSQL. TEMAS A TRATAR Qu es PostgreSQL? Fundamentos de su arquitectura Creacin de una Base de Datos en PostgreSQL Herramienta de Consulta Schemas Tablespaces Creacin de Tablas Insercin de Registros Modificar la Estructura MARCO TERICO

II.

III.

1. QU ES PostgreSQL? PostgreSQL es un manejador de base de datos objeto-relacional (ORDBMS) basado en la versin 4.2 de POSTGRES, desarrollado en la Universidad de California en el Departamento de Ciencias de la Computacin en Berkeley. POSTGRES es pionero de muchos conceptos que solo estuvieron disponibles en algunos sistemas de bases de datos comerciales mucho tiempo despus. PostgreSQL es de cdigo abierto y soporta una gran cantidad de estndares SQL y ofrece muchas herramientas modernas: - consultas complejas - foreign keys - triggers - vistas - integridad transaccional - control de concurrencia Adems, PostgreSQL puede ser extendido por el usuario en muchas formas, por ejemplo, aadiendo nuevos tipos de datos, funciones, operadores, etc. Y debido a su libre licencia, puede ser usado, modificado y distribuido por todos, libre de pago para cualquier propsito, uso personal, comercial acadmico. 2. FUNDAMENTOS DE SU ARQUITECTURA Antes de continuar, se debe entender la arquitectura bsica con la que PostgreSQL trabaja. PostgreSQL usa un modelo cliente/servidor, y una sesin consiste en la colaboracin de los siguientes procesos (programas): Un proceso servidor, que maneja los archivos de la base de datos, acepta conexiones de otras aplicaciones clientes hacia la base de datos, y realiza acciones en la base de datos a nombre de los clientes. El programa servidor de la base de datos es llamado postgres. 1 Ing. Oscar Ramrez Valdez

Sesin 3 -

Laboratorio de Base de Datos

La aplicacin del cliente que desea realizar operaciones sobre la base de datos. Algunas aplicaciones cliente son suministradas con la distribucin del PostgreSQL, la mayora son desarrolladas por el usuario.

El servidor PostgreSQL puede manejar mltiples conexiones concurrentes de los clientes. Para ese propsito se genera un nuevo proceso (hilo) por cada conexin. A partir de ese momento, el cliente y el servidor se pueden comunicar mediante el nuevo proceso sin la intervencin del proceso original postgres. De esta forma, el proceso maestro del servidor siempre esta ejecutndose esperando por las conexiones de los clientes. 3. CREACIN DE UNA BASE DE DATOS Una vez instalado el PostgreSQL vamos a ingresar a la herramienta PgAdmin III que nos permite el manejo de nuestra base de datos de una forma visual. Al ingresar nos parece la siguiente pantalla.

En esta pantalla podramos agregar los servidores deseados en el nodo raz Servers, y crear una conexin para cada uno de ellos. Nosotros nos conectaremos al servidor que nos aparece por defecto, nos posicionamos sobre el mismo, le damos clic derecho y seleccionamos la opcin Connect, simplemente hacemos doble clic sobre el servidor.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

Nos aparece una ventana donde se nos pide ingresar la contrasea para conectarnos, con el usuario postgres. Una vez que ingresemos y la conexin este establecida, en el lado izquierdo de la pantalla principal nos aparecen los objetos que contiene el servidor. El lado superior derecho muestra los detalles del objeto actualmente seleccionado en el rbol. En la parte inferior derecha nos aparece el SQL script del objeto seleccionado.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

Para crear una base de datos, nos ubicamos en el nodo Databases, hacemos clic derecho y seleccionamos New Database e ingresamos la informacin necesaria como la que mostramos a continuacin:

La base de datos creada, lleva por nombre db1, y el propietario es el usuario postgres, no utilizamos ninguna plantilla para la creacin de la base de datos, y dejamos seleccionado el Tablespace por defecto. Ms adelante veremos el concepto de Tablespace. Adems aadimos un comentario para la creacin de nuestra base de datos. En la pestaa SQL, podemos revisar la sentencia SQL que genera la creacin de nuestra base de datos.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

4. HERRAMIENTA DE CONSULTAS (Query tool)

La herramienta de consultas nos permite ejecutar comandos SQL. La parte superior de la ventana de consultas, contiene el editor de entrada, donde se tipean los comandos.
El editor de entrada tambin posee cdigo para autocompletar y ayudarnos a escribir las sentencias. Para usarlo, simplemente escribimos la consulta y presionamos Control + Space para ver la lista de posibles nombres de objetos a insertar. Por ejemplo, escribimos Select * From (sin las comillas pero con el espacio en blanco), y presionamos Control + Space para ver el men de opciones que podemos completar. Tambin se puede habilitar la tecla Tab para activar esta herramienta, eso podemos hacerlo desde el dialogo de opciones. Para ejecutar la sentencia, se puede seleccionar Execute desde el men de consulta, se puede utilizar el botn de ejecutar de la barra de herramientas, presionar F5. Si no se selecciona lo que se quiere ejecutar, el contenido completo de la ventana ser enviado al servidor de base de datos para ser ejecutado.

5. SCHEMAS Una base de datos contiene uno o ms schemas, que a su vez contienen tablas. Los schemas tambin contienen otra clase de objetos, incluyendo tipos de datos, funciones, y operadores. El mismo nombre de un objeto puede ser usado en diferentes schemas sin conflicto. Hay varias razones para usar schemas: - Permitir a varios usuarios usar una base de datos sin interferir entre ellos. - Organizar los objetos de la base de datos en grupos lgicos para hacerlos ms manejables. - Aplicaciones de terceros pueden ser colocadas en diferentes schemas para que no entren en conflictos con los nombres de otros objetos. Los Schemas son parecidos a los directorios de un sistema operativo, excepto que los schemas no pueden ser jerarquizados.
5 Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

5.1. EL SCHEMA PBLICO Cuando se crean tablas, u otros objetos, sin especificar el nombre del schema al que pertenecen, por defecto se crean automticamente en el schema pblico. Cada base de datos contiene un schema pblico. 5.2. EL SCHEMA CATALOGO DEL SISTEMA Adems del schema pblico y los creados por el usuario, cada base de datos contiene un schema pg_catalog, que contiene las tablas del sistema y todos los tipos de datos, funciones y operadores incluidos. 6. TABLESPACES Los tablespaces en PostgreSQL permiten a los administradores de bases de datos, definir ubicaciones en el sistema de archivos donde pueden ser almacenados los archivos que representan los objetos de la base de datos. Una vez creado, un tablespace puede ser referenciado por su nombre cuando se crea un objeto de la base de datos. El uso de los tablespaces permite a un administrador optimizar el uso de un objeto de la base de datos. Por ejemplo, una tabla que sea usada o consultada rara vez puede ser almacenada en un sistema de disco ms lento y menos caro. Tablas, ndices, y bases de datos pueden ser asignadas a distintos Tablespaces. Dos tablespaces son automticamente creados. El pg_global tablespace es usado para los catlogos del sistema. El pg_default tablespace es el tablespace por defecto usado por las bases de datos creadas sin especificacin alguna de otro tablespace. Una vez creado un tablespace puede ser usado por cualquier base de datos, siempre y cuando el usuario tenga el privilegio de hacerlo. El tablespace no puede ser eliminado hasta que todos los objetos en las bases de datos que lo usen hayan sido eliminados. 7. CREACIN DE TABLAS La creacin de las tablas podemos hacerlo usando la herramienta de consulta, donde tendramos que escribir la sentencia de creacin de la misma, que es muy parecida a la sentencia de creacin de tablas del mysql. Por ejemplo, CREATE TABLE cities (codigo integer, nombre varchar(80)); podemos usar el modo visual Crearemos un nuevo schema de nombre UCSM, y dentro de este vamos a crear la tabla ciudades.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

En la pestaa Columnas podemos Aadir las columnas y sus tipos respectivos.

Quedndonos la tabla de la siguiente forma.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

Nota: Si queremos crear un campo autoincrementado (como lo haciamos en Mysql) podemos usar el tipo de dato Serial, que es equivalente a crear una secuencia y luego asociarla al campo deseado. En la pestaa Constraints, podemos aadir tanto las claves Primarias como las Forneas. Para nuestro ejemplo vamos a aadir una clave primaria para el campo codigo, le asignamos un nombre y en la pestaa Columns del dilogo para la creacin de Primary Key, elegimos la columna que ser la clave primaria y la aadimos.

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

Finalmente seleccionamos OK, y hemos creado nuestra tabla Ciudades dentro del Schema UCSM, dentro de la base de datos db1, como se aprecia en la figura.

Vamos a crear una tabla adicional de nombre Clima, con las siguientes columnas:

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

La clave primaria de la tabla Clima, tiene una clave primaria compuesta por los campos codigo y fecha.

10

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

Y una clave fornea del campo codigo. En las siguientes figuras vemos las imgenes que nos muestran cmo crear la clave fornea.

8. INSERCIN DE REGISTROS Para la insercin de registros en las tablas de PostgreSQL, la sintaxis es la misma usada en el MySQL, la nica diferencia es que debemos indicar el nombre del schema y el nombre de la tabla entre comillas. Vamos a ingresar 5 registros para cada una de las tablas creadas en la seccin anterior, usando la herramienta de consulta (Quey tool). insert into "UCSM"."Ciudades" values(1,'San Francisco'); insert into "UCSM"."Ciudades" values(2,'Los Angeles'); insert into "UCSM"."Ciudades" values(3,'Chicago'); insert into "UCSM"."Ciudades" values(4,'New York'); insert into "UCSM"."Ciudades" values(5,'Boston'); insert into "UCSM"."Clima" values(1,10,20,'29/09/08'); insert into "UCSM"."Clima" values(2,11,21,'29/09/08'); insert into "UCSM"."Clima" values(3,14,23,'29/09/08'); insert into "UCSM"."Clima" values(4,11,20,'29/09/08'); insert into "UCSM"."Clima" values(1,13,25,'30/09/08'); select * from "UCSM"."Ciudades"; select * from "UCSM"."Clima"; 9. MODIFICAR LA ESTRUCTURA 9.1. Cambiando el tipo de dato de una columna ALTER TABLE [table_name] ALTER COLUMN [column_name] TYPE [data_type]; 9.2. Aadiendo una columna ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type];

11

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

9.3. Eliminando una columna ALTER TABLE [table_name] DROP COLUMN [column_name]; 9.4. Cambiando el valor por defecto de una columna ALTER TABLE [table_name] ALTER COLUMN [column_name] SET DEFAULT [default_value]; 9.5. Renombrando una columna ALTER TABLE [table_name] RENAME COLUMN [column_name] TO [new_column_name]; 9.6. Renombrando una tabla ALTER TABLE [table_name] RENAME TO [new_table_name]; Nota: La modificacin de datos y la eliminacin de datos en PostgreSQL, se realizan de la misma forma que en Mysql, ambas sentencias tienen la misma sintaxis ya revisada en la sesin anterior.

12

Ing. Oscar Ramrez Valdez

Sesin 3

Laboratorio de Base de Datos

IV. ACTIVIDADES

1. Realice cada uno de los ejemplos y ejercicios vistos en el marco terico y los indicados por el Docente.
V. EJERCICIOS 1. Utilizando las sentencias del lenguaje SQL, realice los siguientes ejercicios. 2. Tenemos la siguiente base de datos: RESIDUOS_TOXICOS. EMPRESAS_PRODUCTORAS codemp (PK) INTEGER nomemp VARCHAR(40) NOT NULL ciuemp VARCHAR(20) RESIDUOS codemp (PK, FK) INTEGER codres (PK) INTEGER toxicidad NUMERIC(3,0) cantidad NUMERIC(6,0) CONSTITUYENTES codcon (PK) INTEGER nomcon VARCHAR(20) NOT NULL RESIDUOS_CONSTITUYENTES codemp (PK, FK) INTEGER codres (PK, FK) INTEGER codcon (PK, FK) INTEGER cantidad NUMERIC(3,0) EMPRESAS_TRANSPORTISTAS codemptra (PK) INTEGER nomemptra VARCHAR(40) NOT NULL ciuemptra VARCHAR(30) 3. Escriba las sentencias de creacin de BD y creacin de tablas respectivas. 4. Adicione los siguientes campos en las tablas indicadas. EMPRESAS_PRODUCTORAS actividad VARCHAR(80) NOT NULL tlfemp VARCHAR(12) TRASLADOS fec_llegada DATE cant_traslado NUMERIC(3,0) TRASLADOS_TRANSPORTISTAS kms NUMERIC(4,0) coste NUMERIC(5,0) 5. Renombre la columna actividad de la tabla EMPRESAS_PRODUCTORAS por actemp. 13 Ing. Oscar Ramrez Valdez DESTINOS coddes (PK) INTEGER nomdes VARCHAR(20) NOT NULL ciudes VARCHAR(15) TRASLADOS codemp (PK, FK) INTEGER codres (PK, FK) INTEGER fec_envio (PK) DATE coddes (PK, FK) INTEGER envase VARCHAR(10) tratamiento VARCHAR(120) NOT NULL TRASLADOS_TRANSPORTISTAS codemp (PK, FK) INTEGER codres (PK, FK) INTEGER fec_envio (PK, FK) DATE coddes (PK, FK) INTEGER codemptra (PK, FK) INTEGER tip_transporte VARCHAR(15)

Sesin 3

Laboratorio de Base de Datos

6. Renombre la columna coste de la tabla TRASLADOS_TRANSPORTISTAS por ctetrs. 7. Adicione el valor por defecto 0 al campo ctetrs de la tabla TRASLADOS_TRANSPORTISTAS. 8. Inserte por lo menos 6 registros en cada una de las tablas, teniendo en cuenta la relacin que tienen las mismas y la integridad de los datos. 9. Actualice el nombre de la empresa productora de cdigo 2 con el siguiente valor: Egasa. 10. Actualice la tabla residuos de modo que todos aquellos residuos que pertenecen a la empresa de cdigo 1, tengan como toxicidad 50 y como cantidades 200. 11. Actualice la tabla traslados_transportistas de modo que todos los traslados tengan un costo de S/.3500. 12. Actualice con la fecha actual aquellos traslados con fecha de llegada cuyo valor sea nulo. 13. Elimine todos los traslados que llegaron entre 03/08/2009 y 29/08/2009, sin incluir ambas fechas. 14. Elimine los traslados que pertenecen al destino de cdigo 1. Verifique dicha eliminacin con las tablas relacionadas.

14

Ing. Oscar Ramrez Valdez

También podría gustarte