Leccion9 PostgresSQL PostGIS
Leccion9 PostgresSQL PostGIS
9. Lenguaje de Consulta Estructurado después usarla, con el SQL tenemos una serie
completa de herramientas de base de datos en un
(SQL) formato consistente. En la jerga del modelo se dice
que el SQL es un lenguaje ‘relacionalmente
El álgebra y el cálculo relacional son parte del Modelo completo’.
Relacional y los teóricos los utilizan para determinar qué
es posible hacer dentro del modelo. Sin embargo, los • Simplicidad: A pesar de su naturaleza completa,
usuarios no tienen por qué saber manipular el álgebra hay menos de treinta comandos SQL, lo que hace
relacional directamente ya que todos los SGBDR deberían que aprender este lenguaje no sea una tarea tan
contener uno o dos lenguajes prácticos que, aunque se ardua. Los nuevos usuarios pueden adquirir
derivan del álgebra o el cálculo, se presentan al usuario de rápidamente los conocimientos suficientes para ser
un modo conveniente para gestionar su base de datos. El capaces de llevar a cabo la mayoría de las
Structured Query Language (SQL) o Lenguaje de Consulta operaciones. Al mismo tiempo, la flexibilidad del SQL
Estructurado es el más popular y el que vamos a utilizar permite a los usuarios experimentados realizar
en los ejercicios prácticos de este curso. operaciones complejas.
Estrictamente, SQL no forma parte del modelo relacional • Declarativo: El SQL es un lenguaje declarativo en el
teórico, que consiste simplemente en los elementos sentido que las sentencias SQL dicen al ordenador lo
Estructurales, de Manipulación e Integridad descritos que se le pide, pero le dan completa libertad para
anteriormente. Sin embargo, SQL ha devenido tan determinar la manera de conseguir el resultado. Esto
ampliamente implementado en los SGBDR que creemos contrasta con los métodos de bajo nivel de los
apropiado y conveniente tratarlo aquí. lenguajes de tercera generación, como el COBOL,
que precisan que el usuario sea capaz de escribir un
Como lenguaje de bases de datos, SQL tiene un programa para explicarle al ordenador qué debe
determinado número de ventajas que le ha llevado a su hacer (¡y cómo!) para extraer la información.
actual popularidad: Mientras que los lenguajes de tercera generación
tienden a operar registro a registro, las sentencias
• Completo: El SQL contiene instrucciones que SQL, como el álgebra relacional, operan sobre un
implementan la mayoría de los requerimientos de conjunto de registros. Los inputs de las sentencias
integridad, manipulación y estructura del Modelo SQL son conjuntos de registros (y condiciones lógicas
Relacional. Así, ofrece un lenguaje de base de datos que debe cumplir cada fila) y los outputs son nuevos
completo que permite crear, usar y borrar bases de conjuntos de registros.
datos. Mientras que con otros sistemas podría ser
necesario aprender diferentes conjuntos de
comandos para establecer una base de datos y
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -1 Página -2 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
La ventaja de este método es que el usuario no Windows, como MS Access, que presentan una
necesita ser programador. Para utilizar el SQL, los interfaz gráfica bastante agradable para el usuario,
usuarios necesitan conocer la manera de formular la utilizan normalmente el SQL. La mayoría de los
pregunta: el software determina el mecanismo paquetes SIG, incluso los destinados a usuarios no
mediante el que encontrará la respuesta. especialistas asumen que se tiene cierta familiaridad
con el SQL. El conocimiento sobre SQL es,
Codd contempla esto como uno de los beneficios simplemente, esencial para cualquiera que desee
principales del método relacional. En los años utilizar los sistemas de información más allá del nivel
setenta, la necesidad de emplear programas básico.
especializados para operar sobre bases de datos
existentes estaba causando serias dificultades. Codd Además de lo ya señalado, hoy en día existen varios
interpretó la facilidad de uso del SQL y otros intentos para producir un SQL geográfico, mediante el cual
lenguajes relacionales como un aumento de la el usuario podría llegar a realizar cualquiera de las
productividad de los profesionales y como una ayuda consultas geográficas típicas con tan solo escribir una
para los usuarios. ‘pequeña’ frase en pseudo-inglés. Productos tales como el
ArcSDE de ESRI, Oracle Spatial o PostGIS ofrecen este
• Estructura de Comandos ‘Pseudo Inglesa’: Un tipo de lenguaje.
primer prototipo del SQL fue el ‘Structured English
Query Language’ (SEQUEL) que introdujo IBM en Además de utilizarse en paquetes SGBDR individuales, el
1974, por lo que el SQL aún conserva una sintaxis SQL también se utilizaba como mecanismo para transferir
similar al idioma inglés. Todas las sentencias SQL la información de una base de datos a otra en sistemas en
pueden verse como frases en inglés muy restringidas red. Supón que hay diferentes usuarios que quieren
y estructuradas. Los comandos SQL siempre acceder a una serie de datos común, pero que cada uno
empiezan con un verbo que especifica la acción que de ellos quiere utilizar en su PC su paquete de base de
debe realizar el software (Create, Select, Grant, datos preferido. Una solución a este problema consiste en
Drop, Insert, ...) y siempre hay un objeto que es el almacenar los datos en un servidor de red utilizando un
sujeto de la acción (normalmente una tabla). gestor de bases de datos que se base totalmente en SQL.
El software de base de datos del usuario, no importa cuál,
• Ampliamente utilizado: El SQL se ha convertido en puede entonces utilizar SQL para extraer los datos del
un lenguaje de base de datos ampliamente utilizado. servidor y modificarlos para convertirlos a un formato
Los SGBDR de los grandes ordenadores (mainframe) familiar para el usuario. Los usuarios no necesitan ser
han utilizado el SQL durante muchos años y, cada conscientes que ambos paquetes han utilizado SQL para
vez más, se está incorporando en paquetes SGBD transferir los datos requeridos.
para microordenadores. Incluso los SGBDR para MS
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -3 Página -4 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -5 Página -6 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
Fíjate que las expresiones SQL pueden escribirse en El tipo de dato, por el contrario, no puede ser una cadena
diferentes líneas ya que sólo el punto y coma final (;) de texto de nuestra invención sino que debe hacer
determina el final de la expresión. Los/las usuarios/as referencia a una de las palabras clave reservadas a este
pueden aprovecharse de esto para facilitar la lectura del efecto. En el ejemplo precedente hemos visto tres tipos de
comando en expresiones SQL complejas. datos distintos (números enteros, cadenas de caracteres y
números decimales) pero existen muchos tipos de datos
El siguiente ejemplo ilustrará la utilización del comando distintos, algunos comunes entre todos los SGBDR y otros
Create Table. Para crear la tabla PROPIEDAD, utilizaríamos más particulares. Para el caso de las prácticas evaluables
el siguiente comando: de esta lección puedes remitirte al documento Tipos de
datos que acompaña esta lección.
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -7 Página -8 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
ALTER TABLE Propiedad Para crear el ejemplo citado, el diseñador debería escribir
ADD (NumArea integer); la línea siguiente:
ALTER TABLE puede utilizarse sobre tablas que ya tienen CREATE VIEW PropA
datos. El efecto de este comando es análogo a trazar una (Area,CodigoPostal,Ocupante,Direccion)
nueva columna en las tablas en papel. AS
SELECT
Area.Nombre,Area.CodigoPostal,Propiedad.Nombr
ALTER TABLE también puede utilizarse para borrar e,Propieda
columnas de una tabla, siendo la sintaxis necesaria: d.Direccion
FROM Propiedad,Area
WHERE Propiedad.NumArea = Area.NumArea;
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -9 Página -10 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -11 Página -12 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -13 Página -14 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
UPDATE <nombre_tabla>
SET <nombre_columna> = <expresión> DELETE FROM Propiedad
[,<nombre_columna> = <expresión>]... WHERE Valor < 30000;
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -15 Página -16 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -17 Página -18 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
c) SELECT NúmId
AREA FROM Propiedad, Area
NúmArea Cod. Postal WHERE Area.Nombre = ‘Barrio San José’
Nombre AND Area.NumArea = Propiedad.NumArea
AND Valor < 30000;
1 17003
Centro Ciudad NúmId
2 17007 3
Barrio San José 5
b) SELECT Nombre Es posible utilizar otras palabras clave como ‘ORDER BY’,
FROM Propiedad ‘DISTINCT’, ’HAVING’ y ‘GROUP BY’ para controlar el
WHERE Valor > (SELECT Valor formato de los resultados del comando SELECT, pero éstas
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -19 Página -20 © 1999 Universitat de Girona – SIGTE. Actualización 2010
Bases de datos espaciales: estructuras y 9. Lenguaje de Consulta Estructurado (SQL)
modelos
se detallan en el caso práctico que acompaña a esta GRANT select on PropA to UsuA;
unidad didáctica.
Permitiría al Usuario A, que responde al nombre de
usuario UsuA, ver y seleccionar datos de la tabla vista
9.3 Lenguaje de Control de Datos PropA.
Las bases de datos en las que la seguridad es un elemento • Lenguaje de Consulta Estructurado (SQL):
importante se crean, normalmente, con una restricción
sobre todos los usuarios, excepto para los que el - lenguaje de BD relacionales dominante
administrador ha dado permiso explícitamente, mediante - declarativo
la sentencia GRANT del SQL. - de alto nivel
- completo
La sintaxis es: - fácil de usar
GRANT <lista_privilegios>
On <lista_tablas>
To <lista_usuarios>;
© 1999 Universitat de Girona – SIGTE. Actualización 2010 Página -21 Página -22 © 1999 Universitat de Girona – SIGTE. Actualización 2010