Este documento presenta una introducción a PostgreSQL, sus características principales como su modelo orientado a objetos y su alta concurrencia, y compara sus ventajas frente a MySQL para procesos complejos. Explica cómo manejar PostgreSQL mediante su lenguaje de definición de datos, operadores, lenguaje de manipulación de datos y el uso de triggers y procedimientos.
1. 1. Introducción a PostgreSQL.
2. Características principales.
3. ¿Postgres o MySQL?.
4. Manejo con PostgreSQL.
5. Conclusiones.
POSTGRESQL
2. 1. Introducción
• Nace en 1982 bajo el proyecto Ingres de la
Universidad de Berkeley, este proyecto es
liderado por Michael Stonebreaker (pionero en
intentar crear SGBD relacionales).
• Tras su experiencia comercial con Ingres,
Stonebraker vuelve en 1985 para retomar el
proyecto con el nombre ‘Post-Ingres’ o Postgres.
3. 2. Características principales
- Modelo Orientado a Objetos.
- 100% ACID.
- Alta concurrencia.
- Amplia variedad de tipos de datos.
- Copias de seguridad en caliente.
- Funciones.
- Claves foráneas (Integridad Referencial).
- Triggers.
- Acceso encriptado vía SSL.
- Múltiples métodos de autenticación.
- Copias de seguridad en caliente.
4. 3. ¿MySQL o Postgres?
• MySQL aporta mayor velocidad en procesos
simples y menor consumo de recursos.
• PostgreSQL aporta mayor eficiencia, rapidez y
fiabilidad en procesos complejos.
¿VELOCIDAD O POTENCIA?
5. 4. Manejo con PostgreSQL
4.1. Lenguaje de definición de datos
4.2. Operadores
4.3. Lenguaje de manipulación de datos
4.4. Triggers y procedimientos
6. 4.1. Lenguaje de definición de datos
• Inclusión de tipos de datos como SERIAL, Money o Array.
CREATE TABLE Comprador(
nombre text,
apellidos text,
plazos money[],
Fecha_pagos text[][],
id_comprador SERIAL primary key
);
9. 4.2. Operadores
• En postgreSQL se incluyen operadores como
EXCEPT e INTERSECT útiles para trabajar con
conjuntos tal de forma similar al álgebra
relacional sin necesidad de recurrir a los
operadores IN y NOT IN.
10. 4.3. Lenguaje de manipulación de
datos
• Postgres permite la inserción de varios
registros a través de una única sentencia
INSERT.
INSERT INTO Extras (descripcion) VALUES
('Control de crucero'),
('Climatizador bizona'),
('LLantas 17“ ');
11. 4.4. Triggers y procedimientos
• Crear triggers a nivel de columna.
• Permite devolver funciones tipo void o tipo trigger.
• Se puede crear más de un trigger para un mismo evento en una
misma tabla.
• Hace uso de la condición WHEN para ejecutar el trigger bajo dichas
circunstancias.
• Permite ejecutar la función asociada al trigger mediante EXECUTE
PROCEDURE cuando este sea disparado.
• Sustituye la cláusula de MYSQL:
-SIGNAL SQLSTATE ‘45000’ SET MESSAGE_TEXT = ‘ ‘ por
-RAISE EXCEPTION permitiendo parametrizar literales.
12. Función
CREATE FUNCTION AlertaVendedorSinNombre()
RETURNS trigger
AS $$
BEGIN
RAISE EXCEPTION 'nombre del vendedor sin nombre (%)', NEW.id_vendedor;
END;
$$ LANGUAGE plpgsql;
Trigger
CREATE TRIGGER VendedorSinNombre BEFORE INSERT ON Vendedor
FOR EACH ROW
WHEN (New.nombre=‘ ')
EXECUTE PROCEDURE AlertaVendedorSinNombre();
Inserción de prueba
INSERT INTO Vendedor (nombre, apellidos, salario) VALUES
('','Martín García', '1500');
Resultado