Sei sulla pagina 1di 20

Elementos avanzados y Extensiones

SQL.

Dr.C. LUIS CUEVAS RODRGUEZ


Email: lcuevas@facinf.edu.cu y lcuevas_br@yahoo.com

Diciembre, 2011
CONTENIDO

Conocer las capacidades adicionales a


SQL en gestores de bases de datos
objeto-relacional
CONTENIDO

SQL (Structured Query Language),


estndares actuales.
Gestores de bases de datos.
Funciones avanzadas de SQL.
Funciones Ventana.
Sentencias recursivas.
Extensiones SQL
SQL
Introduccin

SQL-89
En 1974 Donald Chamberlin saca la primera definicin sobre
SQL.
SEQUEL SEQUEL/2 SQL.
System R de IBM.
IBM saca DB2.
En 1986 ANSI adopto a SQL.
SQL-92
Aparece en 1992. Emplea el concepto de catalogo.
SQL- 3
Es la base de algunos sistemas de maneja de base de datos
orientadas a objetos
SQL 200n
Continua incorporando nuevas funcionalidades al SQL (XML,
JAVA, Objetos Largos, etc)
SQL

ISO (the International Organization for Standardization)


IEC (the International Electrotechnical Commission)

Elementos a recordar de SQL:


Se puede trabajar de dos formas
De forma interactiva
Mediante una aplicacin
Cada fabricante de bases de datos
implementa parte del estndar y define sus
propias extensiones.
Dos sub-lenguajes DDL y DML.
Gestores de Bases de datos

MySQL
PostgreSQL
Oracle Database dBase
SQL Server MS Access
IBM DB2 Teradata
Informix Redis
Firebird Sybase
Casandra
Couch DB
http://es.classora.com/reports/x46901/rankin zope Object DB
g-de-las-mejores-bases-de-datos-actuales
Funciones Avanzadas SQL

Se incorporan numerosas funcionalidades a SQL


Nuevos tipos de datos (array, referencia, objetos
largos)
Definicin de tipos de datos del usuario.
Herencia de tablas.
Utilizacin de catlogos de la bases de datos.
Extensiones a SQL para definir nuevas funciones,
externas e internas. BD activas.
Nuevas posibilidades de consultas (adaptadas a
sistemas OLAP)
Soporte de bases de datos web (XML)
Funciones Avanzadas SQL

Sub lenguajes SQL


DDL Lenguaje de Definicin de Datos.
Sentencias CREATE, ALTER

DML Lenguaje de Manipulacin de Datos.


Sentencias INSERT, DELETE, UPDATE,
TRUNCATE.
Sentencia SELECT
Funciones Ventanas.
Recursividad
Funciones Recursivas
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ [ AS ] output_name ] [, ...] [ FROM
from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...]
]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ]
[ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS }
ONLY ]
[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ]
[ NOWAIT ] [...] ]
Funciones Recursivas

CREATE TABLE prueba_insert ( col1 serial, col2


text);

INSERT INTO prueba_insert VALUES (1, NULL);


INSERT INTO prueba_insert DEFAULT VALUES;
INSERT INTO prueba_insert VALUES(DEFAULT,
DOS);
INSERT INTO prueba_insert VALUES (3, NULL),(4,
CUATRO);
INSERT INTO prueba_insert SELECT i, generado
FROM generate_series(5, 7) as i ;
INSERT INTO prueba_insert VALUES (8, NULL)
RETURNING *;
Funciones Recursivas

La forma mas simple de usar la clausula WITH es para


definir un conjunto de registros que procesaremos luego:

WITH q AS (SELECT * FROM prueba_insert WHERE col2 IS


NOT NULL)
SELECT * FROM q;
col1 | col2
------+----------
2 | DOS
4 | CUATRO
5 | generado
6 | generado
7 | generado
(5 rows)
Funciones Recursivas

WITH RECURSIVE nos permite crear consultas recursivas


para recorrer: Listas enlazadas, arboles binarios, etc
Una consulta recursiva tiene dos partes: caso bsico y
recursin
WITH RECURSIVE cte AS
(SELECT 1 AS i
UNION ALL
SELECT i+1 FROM cte WHERE i < 10)
SELECT * FROM cte;
Funciones Recursivas

m
PARTICIPANTE

m
GRUPO TRABAJADOR
Funciones Ventana

Similares a las funciones de agregacin


Permite calcular valores en base a varios
registros pero no los devuelve como uno solo

SELECT col2, SUM(col1)


FROM prueba_insert
GROUP BY col2
col2 | sum
---------+-----
| 13
DOS | 2
generado | 18
CUATRO | 4
(4 rows)
Funciones Ventana

SELECT col2, SUM(col1)OVER SELECT col2, MAX(col1)


(partition by col2) FROM OVER (partition by col2)
prueba_insert FROM prueba_insert
col2 | sum col2 | max
----------+----- ----------+-----
CUATRO | 4 CUATRO | 4
DOS | 2 DOS | 2
generado | 18 generado | 7
generado | 18 generado | 7
generado | 18 generado | 7
| 13 | 8
| 13 | 8
| 13 | 8
| 13 | 8
(9 rows) (9 rows)
Funciones Ventana

Una funcin ventana puede tener


particiones (PARTITION BY)
y puede tener FRAMES (marcos)
descritos por la clausula ORDER BY

SELECT col2, SUM(col1)OVER


(partition by col2 ORDER BY col2
desc) FROM prueba_insert
Funciones Ventana

row_number()
lag()
rank()
lead()
dense_rank()
first_value()
percent_rank()
last_value()
cume_dist()
nth_value()
ntile()
Funciones Ventana
Funciones Ventana

Potrebbero piacerti anche