Está en la página 1de 28

by: Geniz SWF

Aprenda PostgreSQL 8.x


sobre Linux en N
Diapositivas
by:

Domnguez Geniz Amalio Javier


Javier
Domingue
z Geniz

Firmado digitalmente por


Javier Dominguez Geniz
Nombre de reconocimiento
(DN): cn=Javier Dominguez
Geniz, o=Geniz SWF, ou=Geniz
SWF, email=ajdgeniz@hotmail.
com, c=MX
Fecha: 2009.08.02 16:55:28
-05'00'

ajdgeniz@hotmail.com
ajdgeniz@gmail.com
ajdgeniz@yahoo.com.mx
Junio 2009

Qu es PostgreSQL?
PostgreSQL es un sistema manejador de bases de datos relacionales basado en
postgres 4.2, desarrollado en el departamento Berkeley de Ciencias de la computacin
en la universidad de California. Postgres es Open Source descendiente del cdigo
original Berkeley, soporta el estndar SQL y ofrece otros recursos tales como:
* complex queries
* foreign keys
* triggers
* views
* transactional integrity
* multiversion concurrency control
* index methods
* procedural languages
Postgres puede ser usado, modificado o distribuido para uso privado, comercial o
Acadmico
2

Instalacin PostgreSQL
by: Geniz SWF. De la coleccin Student to Student
Para la instalacin de Posgresql sobre plataformas UNIX, en este caso Linux, podemos
descargar un archivo con la extensin .bin, desde la pagina principal de postgresql,
despus abra su terminal que generalmente se encuentra en el men
aplicaciones->Accesorios-->Terminal, o presione ALT+F2 y escriba gnome-terminal,
ahora dirijase a la carpeta donde se encuentra el archivo .bin y teclee el siguiente
comando:
./postgresql-8.3.6-1-linux.bin
Una vez iniciada la instalacin, aparecer un Wizard que lo guiara como si estuviera en
un entorno Windows, solo siga los pasos del asistente y el, se encargara tanto de la
copia de archivos, configuraciones y el levantamiento del demonio (Servicio).

by: Geniz SWF

Una vez que postgresql ha sido instalado, encontrara un acceso directo en el men
aplicaciones, donde se ha creado un submenu llamado PostgreSQL, en este men
encontrara acceso a la documentacin, al constructor de la pila de aplicaiones, a la
configuracin del servidor, a la consola de psql, yunao de las utilidadees mas
importantes que es el PgAdmin lll, que es una interfaz grfica parecida al Query
Browser de MySQL. Aunque en este caso no utilizaremos pgadmin, sino que
utilizaremos
solo
la
terminal
de
Gnome.
Una vez que ya se encuentra instalado Postgresql, ahora iniciaremos creando nuestra
primera base de datos, recuerde NO utilizar PGADMIN, como se indico anteriormente
nos enfocaremos a la creacin y manipulacin de bases de datos, tablas, etc, pero solo
desde la terminal, al final se agregara un pequeo apndice para que usted aprenda un
poco del uso y funcionamiento de PGAdmin

Creando una Base de Datos


by: Geniz SWF
Ahora iniciaremos con la creacin de una base de datos llamada MiBase, para ello haremos
antes algunas configuraciones dentro de nuestra terminal, a continuacin siga los siguientes
pasos:
1. Debe abrir la terminal de Gnome y logearse con el usuario postgres, si se dio cuenta
cuando postgres se instalaba creo un nuevo usuario llamado postgres que tiene la clave que
ud. Introdujo en la configuracin del servidor. Para ello escriba en la terminal:
1. login postgres y escriba su password(No se visualiza nada mientras lo escribe)
2. ahora con el comando cd dirjase hasta la carpeta bin, (por default el usuario postgres tiene
como predeterminada la carpeta de instalacin), as que solo teclee cd bin

Creando una Base de Datos


by: Geniz SWF
Una vez dentro del directorio bin, escriba lo siguiente:
./createdb MiBase
A continuacin postgres le pedir su password, solo escribalo y la base estar creada.
Si en la terminal se llegara a lanzar el mensaje de comando no encontrado, asegrese de
estar en el directorio correcto donde ese encuentra postgres, otro posible error puede ser que
omiti ./ asegrese de escribirlo tal y como se muestra en el dibujo. Tambin puede
asegurarse de que se encuentra en l directorio correcto escribiendo el comando ls, el cual
mostrara la lista de archivos del directorio, si aparece el archivo createdb esta en el correcto.

Accediendo a una Base de


Datos (MiBase)
by: Geniz SWF

Ya que creamos la base de datos, accederemos a ella con ayuda de psql, cabe mencionar
que este manejador de base de datos no tiene un comando USE como el de MySQL o el de
SQL
Server,
as
que
utilice
psql
de
la
siguiente
manera:
1. teclee psql, seguido del nombre de la base de datos a la que se quiere acceder:
./psql
MiBase
En ese instante se le pedir su password, tecleelo y enseguida aparecer una bienvenida a la
terminal interactiva de postgres, y como se dar cuenta nuestra base de datos seleccionada
ya es MiBase, eso significa que todas las consultas que realicemos se ejecutaran
directamente
sobre
nuestra
base
de
datos
de
ejemplo.

Ejecutando consultas con PSQL


by: Geniz SWF

Ahora probaremos un poco la terminal interactiva llamada psql: para probarla teclee las
siguientes consultas:
SELECT version();
SELECT current_date;
SELECT 2 + 2;

Creando una Tabla


by: Geniz SWF

Ahora crearemos una tabla llamada climas, este ejemplo nos servira para verificar su
estructura:
CREATE TABLE climas (
ciudad
varchar(80),
temp_baja
int,
-- baja temperatura
temp_alta
int,
-- alta temperatura
prcp
real,
-- precipitacion
fecha
date
);

Nota: como podr darse cuenta los dos guiones indican un comentario comentario
Listo, ahora ya tenemos nuestra primera tabla de ejemplo.

Creando una Tabla


by: Geniz SWF

Ahora crearemos otra tabla llamada ciudades, una de las cualidades de esta es que utilizara
un tipo de dato especifico de postgres, el tipo POINT el cual sera explicado un poco mas
adelante
CREATE TABLE ciudades (
nombre
varchar(80),
localizacion
point
);

Nota: Si desea eliminar una tabla utilice el siguiente comando:


DROP TABLE tablename;
10

El Statement INSERT
by: Geniz SWF

Ya creadas nuestras tablas ahora procederemos a utilizar INSERT el Statement (Sentencia)


que nos servir para insertar datos en nuestras tablas, su sintaxis puede ser alguna de las
siguientes:
INSERT INTO climas ( ciudad, temp_baja , temp_alta, prcp, fecha)
VALUES ('Mexico', 5, 30, 0.25, '2009-06-23');

INSERT INTO climas VALUES ('Atlautla', 5, 30, 0.25, '2009-06-23');

11

El Statement SELECT
by: Geniz SWF

Como se menciono anteriormente postgres soporta el estndar SQL as que para realizar una
consulta, puede utilizar el Statement SELECT con sus respectivas clusulas FROM, WHERE
y los operadores. Por ejemplo:
--Esto nos Arrojara una tabla con todos los registros
SELECT * FROM climas;
--Esto nos una tabla con los campos especificados
SELECT Ciudad, temp_baja,temp_alta FROM climas;
--Esto nos mostrar solo la ciudad llamado Atlautla solo si su prcp(precipitacin) es mayor a
20
SELECT * FROM climas WHERE Ciudad = 'Atlautla' AND prcp > 0.20;
--Muestra todos los registros ordenados por el nombre de la ciudad
SELECT * FROM climas ORDER BY ciudad;
--Elimina registros duplicados
SELECT DISTINCT ciudad FROM climas;

12

Operadores
by: Geniz SWF

AND
OR
=
>=
<=
<> o !=

Y lgica o Conjuncin
O logica o Disyuncin
Igual a
Mayor o Igual
Menor o Igual
Diferente

13

JOINS
by: Geniz SWF

Muchas veces necesitamos acceder a mas de una tabla al mismo tiempo, para ello utilizares
los joins que nos permitirn acceder a mltiples registros de dos o mas tablas al mismo
tiempo. Un JOIN es la unin de dos o mas tablas. Por ejemplo:
SELECT * FROM climas, ciudades WHERE ciudad= 'Mexico';

SELECT climas.ciudad,climas.temp_baja,climas.temp_alta,climas.prcp, climas.fecha,


ciudades.localizacion
FROM climas, ciudades
WHERE ciudades.nombre = climas.ciudad;

14

JOINS
by: Geniz SWF
SELECT * FROM climas INNER JOIN ciudades ON (climas.ciudad = ciudades.nombre);

SELECT * FROM climas LEFT OUTER JOIN ciudades ON (climas.ciudad = ciudades.nombre);

SELECT * FROM climas t, ciudades c WHERE t.ciudad = c.nombre;

15

Funciones de Agregacin
by: Geniz SWF

Las funciones de agregacion realizan operaciones con un conjunto de valores. Por ejemplo:
encontrar promedios o encontrar el mximo o mnimo valor.
SELECT max(temp_baja) FROM climas;
SELECT ciudad FROM climas WHERE temp_baja = (SELECT max(temp_baja) FROM climas);

SELECT ciudad, max(temp_baja)


FROM climas
WHERE ciudad LIKE 'M%'
GROUP BY ciudad
HAVING max(temp_baja) < 40;

16

UPDATE
by: Geniz SWF

Este Statement se utiliza para actualizar algunos datos o cuando estos han cambiado o
simplemente por algn error en la insercin Por ejemplo:
SELECT * FROM climas;

UPDATE climas
SET temp_alta = temp_alta - 2,
WHERE fecha >= '2009-06-23';

temp_baja = temp_baja - 5

17

DELETE
by: Geniz SWF

Delete Statement se utiliza para eliminar registros de las tablas, Por ejemplo:
DELETE FROM climas WHERE ciudad='Mexico';

Su sintaxis es:
DELETE FROM NombreTabla (Condicion);

18

Vistas
by: Geniz SWF

Una vista es una tabla virtual que puede contener campos de una o varias tablas, y estas a su
vez se manipulan como tablas, cualquier Statement SELECT puede ser una vista, Para crear
una vista:

CREATE VIEW MiVista AS


SELECT ciudad, temp_baja, temp_alta, prcp, fecha, localizacion
FROM climas, ciudades
WHERE ciudad = nombre;

19

Foreign Keys
by: Geniz SWF

Una llave fornea es una referencia entre tablas (campo coincidente), el hecho de no tenerlas
hara que nuestros datos no tengan integridad referencial ya que no podemos asegurarnos de
que nuestros registros no estn duplicados, si ahora agregamos llaves forneas a nuestras
tablas de ejemplo, su estructura quedara de la siguiente manera:
CREATE TABLE ciudades (
ciudad
varchar(80) primary key,
localizacion point
);
CREATE TABLE climas (
ciudad
varchar(80) references
temp_baja
int,
temp_alta
int,
prcp
real,
fecha
date
);
Ahora si tratramos de hacer una insercin
un error indicando que ese campo no existe
nuestros datos quedaran ntegros y no abra

ciudades(ciudad),

en la tabla climas postgres lanzara


en la tabla ciudades, por tanto
informacin dems.

NOTA: Un campo para poder ser llave fornea deber ser del mismo tipo de dato de
la otra tabla.
20

Transacciones (ROLLBACK)
by: Geniz SWF

Las transacciones son fundamentales en cualquier sistema manejador de base de datos ya que nos permiten ejecutar
mltiples consultas y hacer que todas se ejecuten o que ninguna lo haga. En el siguiente ejemplo haremos una
transaccin para modificar la temperatura baja de la ciudad Atlautla. Si se da cuenta al principio se muestran los
registros originales, despues iniciampos la transaccion conb el comando BEGIN, despues ejecutamos un UPDATE, y
para terminar con la transaccion usamos ROLLBACK, y como se dara cuenta los datos quedaron intactos ya que
ROLLBACK deshace todas las operaciones que escribimos y por tanto ninguna, en este caso el UPDATE no fue
ejecutado,
pero
si
desea
que
lops
cambios
sean
permanentes
utilize
COMMIT.

21

Transacciones (COMMIT)
by: Geniz SWF

En este caso las


actualizaciones fueron
realizadas sobre los dos
registros gracias al
comando COMMIT, si
hubiramos escrito
ROLLBACK, ninguna de ellas
hubiera sido efectuada,
esto se debe al ACID de
SQL. Cabe mencionar
tambin que si intenta
acceder a la tabla durante
la transaccin no le sera
posible debido a que
durante esta, las tablas
son aisladas(Isolation).

22

Herencia
by: Geniz SWF

Este es un concepto bsico de las base de datos orientados a objetos, pero postgres tabien lo
implementa, por ejemplo considere dos tablas:
CREATE TABLE
name
population
altitude
state
);

capitals (
text,
real,
int,
-- (in ft)
char(2)

CREATE TABLE
name
population
altitude
);

non_capitals (
text,
real,
int
-- (in ft)

CREATE VIEW cities AS


SELECT name, population, altitude FROM capitals
UNION
SELECT name, population, altitude FROM non_capitals;

23

Herencia
by: Geniz SWF

SOLUCION CON LA HERENCIA:


CREATE TABLE
name
population
altitude
);

cities (
text,
real,
int
-- (in ft)

CREATE TABLE capitals (


state
char(2)
)

INHERITS

(cities);

24

Tipos de Datos (Geometric Type)


by: Geniz SWF

Postgres soporta al igual que otros manejadores los mismos tipos de datos como son los tipo
TEXTO, NUMERICOS, REALES, PUNTO FIJO, etc, por lo que solo se explicaran los tipo de
datos de especiales de postgres, si desea ver los otros tipos de datos consulte la seccin
DATATYPES de mi manual MySQL for Developers:
POSTGRES DATA TYPES
Los tipos de datos geometricos representan Objetos espaciales en dos dimensiones como
coordenadas, lineas y figuras.

Geometric Types

25

Tipos de Datos ( Network


Address Types)
by: Geniz SWF

Network Address Types


Este tipo de datos se utiliza para representar direcciones de red tales como direcciones IP v4
e IPV6 y Direcciones MAC.

EJEMPLOS:

26

Tipos de Datos (XML Type)


by: Geniz SWF

Se utiliza para almacenar datos en XML, una de sus principales ventajas es que un campo
XML puede ser utilizado como texto, para producir un valor de tipo XML de un carcter de
datos se utiliza la funcin XMLPARSE :

Ejemplo:

Para producir una cadena a XML se utiliza la funcin xmlserialize

27

Tipos de Datos (Composite


Types)
by: Geniz SWF

Estos son tipos de datos definidos por el usuario, son tipos de datos que pueden ser
mezclados, es decir; un solo tipo de dato puede ser cadena, entero, numerico, espacial, etc.
ejemplo:
CREATE TYPE Mis_Datos
nombre
Edad
localizacion
);

AS (
text,
integer,
point

Apartir de este tipo de dato nuevo podemos crear tablas


CREATE TABLE Datos (
id
serial,
datos Mis_Datos
);
Al momento de realizar la insercion solo se especifica la columna datos, ya que el
tipo serial es autonumerico y se incrementara en uno, equivale al auto_increment de
mysql.
INSERT INTO Datos(datos) VALUES (ROW('Geniz', 22, '20,50'));

28

También podría gustarte