STRUCTURED QUERY LANGUAGE (SQL)

Documentos relacionados
ANÁLISE E PROJETO DE BANCO DE DADOS

SQL (Tópicos) Structured Query Language

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Definida pelo American National Standard Institute (ANSI) em 1986

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Comandos de Manipulação

IMPLEMENTAÇÃO DE BANCO DE DADOS

Sumário SELECT + FROM

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

BCD29008 Banco de dados

Linguagem de Consulta Estruturada SQL- DML

SQL DML. Frederico D. Bortoloti

Rápida revisão do Modelo Relacional

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Page 1. Prof. Constantino Jacob

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

SQL. Prof. Roger Cristhian Gomes

Apresentação Modelo e SQL. André Luiz Montevecchi

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Banco de Dados. Prof. Antonio

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

SQL. Prof. Márcio Bueno.

Linguagem de Consulta Estruturada SQL- DML

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Programação SQL. INTRODUÇÃO II parte

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

Ordenação de tuplos order by

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Bancos (Bases) de Dados

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

Introdução ao PostgreSQL

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Prof. Fabiano Taguchi

SQL Básica DML. Prof. Marcos A. Schreiner. 22 de outubro de Curso de Licenciatura em Computação

Marcelo Henrique dos Santos

Álgebra Relacional e SQL

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

António Rocha Nuno Melo e Castro

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Gerenciamento de Dados e Informação

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

SQL - Consultas

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Sintaxe do comando SELECT

Linguagem de Consulta - SQL

SQL-99: Esquema de BD EMPRESA

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Structured Query Language (SQL)

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

EXEMPLOS DE COMANDOS NO SQL SERVER

Banco de Dados I Introdução SQL

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

SQL Structured Query Language

Introdução a Bancos de Dados

SQL (Structured Query Language)

Bases de Dados 2005/2006. Aula 5

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Banco de Dados II. Aula do dia 10/03. Revisão. SQL Estudado até o dia 03/03/2011

Linguagem de Consulta Estruturada (SQL)

Revisão + Visões + Sub-Consultas + JOINS

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Utilizando o Postgres - comandos SQL para a manipulação de dados

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

Revisão de Bancos de Dados

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

A linguagem SQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Linguagem SQL Comando SELECT Subqueries

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

Bases de Dados. DML Data Manipulation Language Parte 2

Transcrição:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUL DE MINAS GERAIS Câmpus Inconfidentes STRUCTURED QUERY LANGUAGE () Sistemas de Informações Geográficas O QUE É É uma linguagem normalizada para DEFINIÇÃO, ACESSO, MANIPULAÇÃO e CONTROLE de Base de Dados Relacionais. Na maioria dos SGBD, esta linguagem pode ser utilizada: Interativamente; Embutida em linguagens de programação. 1

EXEMPLO Interatividade EXEMPLO Embutida em Linguagens de Programação 2

HISTÓRIA 1970: Edgar Frank Codd define o Modelo Relacional 1974: IBM desenvolve o projecto SYSTEM/R com a linguagem SEQUEL 1979: É lançado o primeiro SGBD comercial (ORACLE) 1981: É lançado o SGBD INGRES 1983: IBM anuncia o DB2 1986, 1987: É ratificada a norma que fica conhecida como -86 (ANSI X3.135-1986 e ISO 9075:1987) HISTÓRIA 1989: É ratificada a norma -89 quer pela ANSI quer pela ISO 1992: É ratificada a norma: 2 1999: É ratificada a norma 1999, anteriormente conhecida como 3 2006: :2006, define a forma como o pode ser usado em conjunção com o XML (ANSI/ISO/IEC 9075-14:2006 ) 3

OPERAÇÕES DA ÁLGEBRA RELACIONAL Operações derivadas da teoria de conjuntos União Interseção Diferença Produto Cartesiano Operações Relacionais Especiais Seleção Projeção Junção (Natural) 4

5

6

7

ESTRUTURA BÁSICA DO é baseada em operações de conjuntos e de álgebra relacional com algumas modificações e extensões Uma consulta básica tem a forma: SELECT A 1, A 2, A 3,..., A n FROM T 1, T 2,..., T n WHERE P 1 AND P 2 OR P 3 ; A n representam os Atributos das Tabelas T n e P n os Predicados de seleção. ESQUEMA RELACIONAL EMPREGADO ( id, nome, data_admissao, id_cat, id_dept, id_chefe ) DEPARTAMENTO ( id, nome, localizacao) CATEGORIA ( id, cargo, salario ) 8

BASE DE DADOS RELACIONAL CATEGORIA id cargo salario 1 Senior 5000 2 Pleno 3000 3 Junior 2000......... DEPARTAMENTO id nome localidade 1 Contabilidade Lisboa 2 Vendas Porto 3 Recursos Humanos Coimbra......... EMPREGADO id nome data_admissao id_cat id_dept id_chefe 1 José da Silva 13/01/2005 3 3 2 2 Rui Barbosa 01/12/1991 1 3 2 3 Pedro Vaz de Caminha 04/06/1984 1 2 20.................. 20 Maria de Lourdes de Souza 23/11/2000 2 2 2.................. A PERGUNTA Qual o salário do empregado Rui Barbosa e o nome do departamento onde ele trabalha O COMANDO SELECT te.nome, tc.salario, td.nome FROM empregado AS te, departamento AS td, categoria AS tc WHERE te.nome = Rui Barbosa AND te.id_cat = tc.id AND td.id = te. id_dept 9

CARACTERÍSTICAS Linguagem não procedimental em que se especifica O QUÊ e não COMO Existe uma clara abstração perante a estrutura física dos dados, isto é, não é necessário especificar caminhos de acesso nem algoritmos de pesquisa física Operações sobre estruturas lógicas As operações são efetuadas sobre conjuntos de dados (tabelas), não sendo necessário (nem possível) manipular linha-a-linha COMPONENTES DDL (Data Definition Language) - é uma linguagem de programação de computador utilizada para a definição de estrutura de dados, especialmente esquemas de Bancos de Dados. DML (Data Manipulation Language) - é uma linguagem de programação de computador utilizada para a recuperação, remoção, inclusão e modificação de Bancos de Dados. O é um exemplo não procedural (ex: SELECT, INSERT, DELETE e UPDATE). TML/TCL (Transaction Manipulation Language) é uma linguagem de programação que é um subconjunto da. Ela controla processamento transacionais no Banco de Dados. DCL (Data Control Language) é uma linguagem de programação que é um subconjunto da. Ela controla o acesso aos dados de um Banco de Dados. 10

manipulação dos dados (DML) SELECT è Acesso aos dados INSERT UPDATE è Manipulação dos dados DELETE clausula SELECT e FROM SELECT [ DISTINCT ] coluna,... * FROM tabela O símbolo * é utilizado quando se pretende selecionar todos os atributos da tabela especificada na clausula FROM. DISTINCT é aplicado a todas as colunas especificadas na clausula SELECT e elimina as repetições existentes. 11

projeção EMPREGADO id nome data_admissao id_cat id_dept id_chefe 1 José da Silva 13/01/2005 3 3 1 2 Rui Barbosa 01/12/1991 1 3 1 3 Pedro Vaz de Caminha 04/06/1984 1 3 1.................. 20 Maria de Lourdes de Souza 23/11/2000 2 2 2.................. SELECT FROM nome empregado restrição CATEGORIA id cargo salario 1 Senior 5000 2 Pleno 3000 3 Junior 2000......... SELECT * FROM categoria WHERE salario > 2000 12

juncão (produto cartesiano) EMPREGADO id nome data_admissao id_cat id_dept id_chefe 1 José da Silva 13/01/2005 3 3 1 2 Rui Barbosa 01/12/1991 1 3 1 3 Pedro Vaz de Caminha 04/06/1984 1 3 1.................. 20 Maria de Lourdes de Souza 23/11/2000 2 2 2.................. CATEGORIA id cargo salario 1 Senior 5000 2 Pleno 3000 3 Junior 2000......... SELECT * FROM empregado, categoria WHERE empregado.id_cat = categoria.id projeção, junção e restrição EMPREGADO id nome data_admissao id_cat id_dept id_chefe 1 José da Silva 13/01/2005 3 3 1 2 Rui Barbosa 01/12/1991 1 3 1 3 Pedro Vaz de Caminha 04/06/1984 1 3 1.................. 20 Maria de Lourdes de Souza 23/11/2000 2 2 2.................. CATEGORIA id cargo salario 1 Senior 5000 2 Pleno 3000 3 Junior 2000......... SELECT * FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND categoria.cargo = Pleno 13

aliases de tabelas (apelido) SELECT * FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND categoria.cargo = Pleno ANTES SELECT * FROM empregado e, categoria c WHERE e.id_cat = c.id AND c.cargo = Pleno DEPOIS Particularmente útil quando se pretende usar a mesma tabela com significados diferentes. junções múltiplas CATEGORIA id cargo salario 1 Senior 5000 2 Pleno 3000 3 Junior 2000......... DEPARTAMENTO id nome localidade 1 Contabilidade Lisboa 2 Vendas Porto 3 Recursos Humanos Coimbra......... EMPREGADO id nome data_admissao id_cat id_dept id_chefe 1 José da Silva 13/01/2005 3 3 1 2 Rui Barbosa 01/12/1991 1 3 1 3 Pedro Vaz de Caminha 04/06/1984 1 3 1.................. 20 Maria de Lourdes de Souza 23/11/2000 2 2 2.................. 14

junções múltiplas Pergunta: Para cada categoria listar o nome dos empregados, salário e repectivo departamento Comando: SELECT c.cargo, e.nome, c.salario, d.nome FROM empregado e, departamento d, categoria c WHERE e.id_dept = d.id AND e.id_cat = c.id junções outer (Outer Join) Pergunta: Quais os departamentos e respectivos empregados Comando: SELECT e.id, e.nome, d.id, d.nome FROM empregado e RIGHT OUTER JOIN departamento d ON e.id_dept = d.id 15

união Suponha que com as seguintes tabelas: CLIENTE ( nome, municipio) FORNECEDOR ( nome, municipio) Deseja-se listar os nomes e municípios seja dos clientes, seja dos fornecedores SELECT nome, municipio FROM cliente UNION SELECT nome, municipio FROM fornecedor intersecção Suponha que com as seguintes tabelas: CLIENTE ( nome, municipio) FORNECEDOR ( nome, municipio) Deseja-se listar os nomes e municípios dos clientes que também são fornecedores SELECT nome, municipio FROM cliente INTERSECT SELECT nome, municipio FROM fornecedor 16

diferença Suponha que com as seguintes tabelas: CLIENTE ( nome, municipio) FORNECEDOR ( nome, municipio) Deseja-se listar os nomes e municípios dos clientes que não são fornecedores SELECT nome, municipio FROM cliente EXCEPT SELECT nome, municipio FROM fornecedor a clausula WHERE SELECT [ DISTINCT ] coluna,... * FROM tabela, [tabela,...] WHERE condição-de-pesquisa Uma condição-de-pesquisa é basicamente uma colecção de predicados, combinados através dos operadores booleanos AND, OR, NOT e parêntesis. 17

predicados Os predicados podem ser: Um predicado de comparação (WHERE nome = Manuel Silva ) Um predicado de BETWEEN (WHERE id_cat BETWEEN 1 AND 5) Um predicado de LIKE (WHERE nome LIKE ' M% ) Um teste de valor nulo (WHERE cargo IS NULL) Um predicado de IN (WHERE id_cat IN (1,2)) predicados Os predicados podem ser utilizados num contexto estático, sendo avaliados com base em valores constantes. Ex: WHERE id_cat IN (1,2) Podem também ser avaliados com base em valores dinâmicos, a retirar da base de dados Ex: WHERE id_cat IN (SELECT id_cat FROM CATEGORIA) SUBQUERY 18

predicados utilizados em SUBQUERIES Predicados de comparação Predicado IN Predicados ALL ou ANY Predicado EXISTS SELECT cod_emp, nome_emp FROM empregado WHERE id_dept = ( SELECT id_dept FROM empregado WHERE nome = 'Carlos Castro ) predicados utilizados em SUBQUERIES (exemplos) Qual o código e nome dos empregados que trabalham no mesmo departamento que o empregado 'Carlos Castro' SELECT id, nome FROM empregado WHERE id_dept = ( SELECT id_dept FROM empregado WHERE nome = 'Carlos Castro ) 19

predicados utilizados em SUBQUERIES (exemplos) Quais os nomes dos empregados que trabalham nos departamentos de Lisboa SELECT id, nome FROM empregado WHERE id_dept IN ( SELECT id FROM departamento WHERE localidade = 'Lisboa ) predicados utilizados em SUBQUERIES (exemplos) Quais os empregados cujo salário é superior a todos os salários dos empregados do departamento 1 SELECT nome FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND salario > ALL ( SELECT salario FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND id_dept = 1 ) 20

predicados utilizados em SUBQUERIES (exemplos) Quais os empregados cujo salário é superior a algum dos salários dos empregados do departamento 1 SELECT nome FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND salario > ANY ( SELECT salario FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND id_dept = 1 ) predicados utilizados em SUBQUERIES (exemplos) Nome dos departamentos que têm empregados (pelo menos um) SELECT nome FROM departamento WHERE EXISTS (SELECT * FROM empregado WHERE departamento.id = empregado.id_dept ) A condição é VERDADEIRA se o resultado da subquery não for vazio 21

predicados utilizados em SUBQUERIES (exemplos) Nome dos departamentos que não têm empregados SELECT nome FROM departamento WHERE NOT EXISTS ( SELECT * FROM empregado WHERE departamento.id = empregado.id_dept ) A condição é VERDADEIRA se o resultado da subquery for vazio a clausula ORDER BY A clausula ORDER BY é usada para ordenar os dados referentes a uma ou mais colunas. É a última clausula a ser especificada SELECT [ DISTINCT ] coluna,... * FROM tabela WHERE condição ORDER BY coluna [ASC DESC ], 22

a clausula ORDER BY (exemplo) SELECT * FROM empregado ORDER BY nome Por padrão, os dados são ordenados ascendentemente. Z 9 Recentes A 0 Menos Recentes Caracter (Char) Numérico (Number) Data (Date) funções agregadoras 1 2 MIN = ----------> 3 4 5 6 7 8 MAX = ----------> 9 10 Salário 100 200 12,5 450 700 100 120 350 890 400 SUM = COUNT(*) = 10 AVG = SUM / COUNT 23

funções agregadoras (exemplos) SELECT MAX(salario) FROM categoria SELECT MIN(salario) FROM categoria SELECT COUNT(*) FROM categoria SELECT SUM(salario) FROM categoria, empregado WHERE empregado.id_cat = categoria.id SELECT AVG(salario) FROM categoria, empregado WHERE empregado.id_cat = categoria.id funções agregadoras (exemplos) id_dept e salario 1 120 1 250 1 150 1 300 1 250 2 100 2 150 2 230 3 300 3 400 3 200 3 160 120 100 160 Para cada departamento qual o salário minímo SELECT id_dept, MIN(salario) FROM empregado, categoria WHERE empregado.id_cat = categoria.id GROUP BY id_dept 24

funções agregadoras (exemplos) id_dept id salario 1 A 120 1 A 250 1 B 150 1 B 300 1 B 250 2 A 100 2 B 150 2 B 230 3 B 300 3 B 400 3 C 200 3 C 160 120 150 100 150 300 160 Para cada categoria de cada departamento qual o salário minímo SELECT e.id_dept, c.id, MIN(c.salario) FROM empregado e, categoria c WHERE e.id_cat = c.id GROUP BY e.id_dept, c.id funções agregadoras (exemplos) Qual o nome do empregado que tem o maior salário SELECT empregado.id, nome FROM empregado, categoria WHERE empregado.id_cat = categoria.id AND salario = ( SELECT MAX(salario) FROM categoria, empregado WHERE empregado.id_cat = categoria.id ) 25

funções agregadoras (exemplos) Para cada departamento qual o empregado que tem o maior salário SELECT e.id_dept, e.id, e.nome FROM empregado e, categoria c WHERE e.id_cat = c.id AND (id_dept, salario) IN ( SELECT id_dept, MAX(salario) FROM categoria c, empregado e WHERE e.id_cat = c.id GROUP BY e.id_dept) a clausula HAVING SELECT [ DISTINCT ] coluna,... * FROM tabela,... WHERE condição GROUP BY coluna,... HAVING condição WHERE OU HAVING A cláusula WHERE nunca contém funções agregadoras A cláusula HAVING deve sempre conter funções agregadoras 26

a clausula HAVING (exemplos) ID_DEPT SALARIO 1 120 1 250 1 150 1 300 1 250 2 100 2 150 2 230 3 300 3 400 3 200 3 160 AVG = 214 120 AVG = 160 100 AVG = 265 160 Para cada departamento. Qual o salário mínimo Seleccionar apenas os departamentos cujo salário médio seja superior a 200 SELECT e.id_dept, MIN(c.salario) FROM empregado e, categoria c WHERE e.id_cat = c.id GROUP BY e.id_dept HAVING AVG (c.salario) > 200 manipulação dos dados INSERÇÕES, ATUALIZAÇÕES e REMOÇÕES INSERT INTO tabela_nome [ (coluna, coluna,...)] VALUES (valor, valor,...) comando SELECT UPDATE tabela_nome SET lista_de_atribuições [WHERE condição] DELETE FROM tabela_nome [WHERE condição] 27

manipulação dos dados: Exemplo (INSERT) DEPARTAMENTO id nome localidade 1 Contabilidade Lisboa 2 Vendas Porto 3 Recursos Humanos Coimbra......... INSERT INTO departamento VALUES (4, Logística', Lisboa') Cópia de Valores de outras Tabelas INSERT INTO EMP_HIST (id, nome, data_admissao) SELECT id, nome, data_admissao FROM empregado DEPARTAMENTO WHERE data_admissao > 01-01-1991' id nome localidade 1 Contabilidade Lisboa 2 Vendas Porto 3 Recursos Humanos Coimbra 4 Logística Lisboa......... manipulação dos dados: Exemplo (UPDATE) Atualizar o código do chefe do empregado Bernardo Bento UPDATE empregado SET id_chefe = 2 WHERE nome = 'Bernardo Bento' 28

manipulação dos dados: Exemplo (DELETE) Apagar todos os empregados que trabalham no departamento 2 DELETE FROM empregado WHERE id_dept = 2 29

POSTGIS O PostGIS é um projeto opensource para adicionar suporte a objetos geográficos ao banco de dados relacional Postgre. De fato, o PostGIS espacializa os dados do servidor Postgre, permitindo que ele seja usado como um banco de dados espacial para os sistemas de informação geográfica (SIG). POSTGIS alguns operadores topológicos ST_Distance(geometry, geometry) retorna a distância cartesiana entre duas geometrias; ST_DWithin(geometry, geometry, float) retorna verdadeiro se as geometrias estão dentro da distância especifica em relação a outra geometria; ST_Equals(geometry, geometry) retorna verdadeiro se as geometrias forem espacialmente iguais; ST_Disjoint(geometry, geometry) retorna verdadeiro se as geometrias forem espacialmente separadas; 30

POSTGIS alguns operadores topológicos ST_Intersects(geometry, geometry) retorna verdadeiro se as geometrias espacialmente se intersectarem; ST_Touches(geometry, geometry) retorna verdadeiro se as geometrias espacialmente se tocam; ST_Crosses(geometry, geometry) retorna verdadeiro se as geometrias forem espacialmente se cruzam; ST_Within(geometry A, geometry B) retorna verdadeiro se a geometria A está espacialmente dentro da geometria B; POSTGIS alguns operadores topológicos ST_Overlaps(geometry, geometry) retorna verdadeiro se as geometrias espacialmente se sobrepõem; ST_Contains(geometry A, geometry B) retorna verdadeiro se as geometria A espacialmente contem a geometria B; ST_Covers(geometry A, geometry B) retorna verdadeiro se nenhum ponto da geometria B está fora da geometria A; ST_CoveredBy(geometry A, geometry B) retorna verdadeiro se nenhum ponto da geometria A está fora da geometria B; 31

POSTGIS algumas funções de processamento ST_Centroid(geometry) retorna o centroide da geometria como um ponto; ST_Area(geometry) retorna a área de uma geometria do tipo poligono; ST_Length(geometry) retorna o comprimento de uma geometria do tipo linha considerando o sistema de referencia associado a geometria; ST_Difference(geometry A, geometry B) retorna a parte da geometria A que não interage com a geometria B; ST_Union(geometry, geometry) retorna uma geometria que representa o conjunto de pontos de das duas geometrias; OPERAÇÕES 32

POSTGIS exemplo POSTGIS exemplo SELECT d2.nome_munic FROM municipios d1, municipios d2 WHERE ST_Touches(d1.the_geom, d2.the_geom) AND (d2.nome_munic <> 'Congonhal') AND (d1.nome_munic = 'Congonhal'); 33

POSTGIS exemplo SELECT m.nome_munic FROM municipios m, vias v WHERE ST_Intersects( ST_Buffer (v.the_geom, 1000), m.the_geom) AND v.gid = 884; POSTGIS exemplo SELECT m1.nome_munic FROM municipios m1, municipios m2 WHERE (ST_Distance(ST_Centroid(m1.the_geom), ST_Centroid(m2.the_geom) ) < 26000) AND m1.nome_munic <> 'Estiva AND m2.nome_munic = 'Estiva' ORDER BY m1.nome_munic; 34

DÚVIDAS e-mail: luciano.barbosa@ifsuldeminas.edu.br Fonte: BOLSTAD (2012). 35