Informática para Ciências e Engenharias 2013/14. Teórica 10



Documentos relacionados
Informática para Ciências e Engenharias 2012/13. Teórica 10

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

ICE-B Sqlite e Python. Ludwig Krippahl

PHP INTEGRAÇÃO COM MYSQL PARTE 1

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

SQL. Autor: Renata Viegas

Bases de Dados. Lab 1: Introdução ao ambiente

A linguagem SQL

SQL - Criação de Tabelas

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

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Principais Comandos SQL Usados no MySql

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Comandos de Manipulação

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

Disciplina: Unidade V: Prof.: Período:

Curso PHP Aula 08. Bruno Falcão

O que são Bancos de Dados?

SQL: Definição de tabelas, Modificações à Base de Dados

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

Programação Orientada a Objetos (DPADF 0063)

Bases de Dados 2007/2008. Aula 1. Referências

SQL (STRUCTUREDQUERY LANGUAGE)

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

Banco de Dados. Prof. Antonio

Banco de Dados. Um momento crucial na organização dos dados é a forma com que cadastramos estes dados, a estrutura de armazenamento que criamos.

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Android e Bancos de Dados

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

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Bases de Dados 2005/2006. Aula 5

Programação SQL. Introdução

MYSQL BÁSICO. 12 Horas Instrutor: Antonio Itamar Júnior

Structured Query Language (SQL)

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

Introdução ao SQL. Aécio Costa

Linguagem SQL Parte I

PROGRAMA. Objectivos Gerais :

Á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:

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Informática I. Aula 6. Aula 6-12/09/2007 1

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Linguagem SQL. Comandos Básicos

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

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

4.6. SQL - Structured Query Language

Bases de Dados 2007/2008. Aula 9

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

SQL DML. Frederico D. Bortoloti

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Definida pelo American National Standard Institute (ANSI) em 1986

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Oracle SQL Developer

Bases de Dados 1º semestre

Tarefa Orientada 1 Base de Dados Editora

EXERCÍCIOS PRÁTICOS. Banco de Dados

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

SQL Structured Query Language

Linguagem SQL - Structured Query Language

Módulo 6: Linguagem de Programação IV 6.1. Introdução 6.2. Bases de Dados Visão Estrutural SGBD: Sistema de Gestão de Bases de Dados

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Prof.: Clayton Maciel Costa

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

Linguagem SQL (Parte I)

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Tarefa Orientada 15 Manipulação de dados

Microsoft Access Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Disciplina de Banco de Dados Parte V

Linguagem SQL - Structured Query Language

No final desta sessão o formando deverá ser capaz de aceder ao Word e iniciar um novo documento.

Bases de Dados. DML Data Manipulation Language Parte 1

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

1. Domínio dos Atributos

SQL (Structured Query Language)

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

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

Disciplina: Unidade III: Prof.: Período:

Administração e Optimização de BDs

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

SQL (Structured Query Language)

SQL (Structured Query Language)

Transcrição:

Informática para Ciências e Engenharias 2013/14 Teórica 10

Na aula de hoje... Introdução aos sistemas de bases de dados: Modelo relacional SQL (Structured Query Language) SQL e MATLAB Um exemplo prático Alguns slides adaptados de N. Dell, J. Lewis, Computer Science Illuminated, 4th Ed 2

Sistemas de gestão de bases de dados Sistema de Gestão de Bases de Dados (SGBD) (Database management system, DBMS) Combinação de software e dados: Base de dados Ficheiros estruturados, com os dados. Motor de base de dados Software para consulta e modificação dos dados. Esquema de base de dados: Especificação da organização lógica dos dados. 3

Sistemas de gestão de bases de dados Esquema da base de dados Motor da base de dados Ficheiros de suporte da base de dados Utilizador/ Programador 4

Modelo relacional Registo (objeto, entidade) Conjunto de atributos (campos) relacionados Análogo às estruturas em Matlab. Tabela Conjunto de registos. Análogo ao vector de estruturas em Matlab. Base de dados relacional Conjunto de tabelas relacionadas 5

Tabela filmes da BD videos Filme_id Titulo Tipo Classificacao 101 Sexto Sentido suspense drama maiores de 12 102 Regresso ao Futuro comedia aventura maiores de 6 103 Monstros e Cia. animacao maiores de 4 104 Alien ficcao-cientifica terror maiores de 16 105 X-Men ficcao-cientifica acao maiores de 12 106 Elizabeth drama historico maiores de 12 107 Dia da Independencia ficcao-cientifica acao maiores de 12 108 Platoon acao drama guerra maiores de 16 109 Idade do Gelo animacao maiores de 4 110 Impacto Profundo suspense policial Maiores de 16 6

Tabela filmes da BD videos Filme_id Titulo Tipo Classificacao 101 Sexto Sentido suspense drama maiores de 12 102 Regresso ao Futuro comedia aventura maiores de 6 103 Monstros e Cia. animacao maiores de 4 104 Alien ficcao-cientifica terror maiores de 16 Como identificar um registo? 105 X-Men ficcao-cientifica acao maiores de 12 106 Elizabeth drama historico maiores de 12 107 Dia da Independencia ficcao-cientifica acao maiores de 12 108 Platoon acao drama guerra maiores de 16 109 Idade do Gelo animacao maiores de 4 110 Impacto Profundo suspense policial Maiores de 16 7

Chave primária de uma tabela Chave primária (primary key) Um campo ou combinação de campos que identifica inequivocamente esse registo A tabela filmes tem quatro campos FiIme_id, Titulo, Tipo e Classificacao A chave primária é Filme_id. 8

Tabela clientes da BD videos Cliente_id Nome Morada Numero_cartao_credito 101 Artur Meireles Rua da Paz, 20 123412341234123401 102 Joana Fonseca Rua da Guerra, 1234 123412341234123402 103 Artur Lopes da Silva Av.Liberdade, 202 123412341234123403 104 Isabel Lopes da Silva Rua do La Vem Um, 1 123412341234123404 105 Passos Coelho Av. Massama, 20-3 123412341234123405 106 Vitor Gaspar Rua do 5 %, 8 123412341234123406 Chave primária: Cliente_id 107 Cavaco Silva Boliqueime 123412341234123407 108 Antonio Jose Seguro Largo do Rato, 2 123412341234123408 9

Chaves externas Aluguer_id Cliente_id Filme_id Data_aluguer Data_entrega 100 102 109 2013/11/11 2013/11/15 101 101 106 2013/11/12 2013/11/14 102 107 102 2013/11/14 2013/11/20 103 106 104 2013/11/11 2013/11/15 A tabela alugueres tem duas chaves externas: FiIme_id, que a liga à tabela filmes Cliente_id, que a à tabela clientes 10

Structured Query Language (SQL) 11

SQL Linguagem para manipular dados e efectuar perguntas (queries) sobre os dados armazenados na base de dados. Criar tabelas, onde se guarda os dados um registo por linha um campo por coluna Inserir, alterar e remover registos Interrogar 12

SQL CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE); 13

SQL CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE); Nome da tabela 14

SQL CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE); Campos e tipos respectivos Simbolo é do tipo texto (string) massa da tabela 15

SQL CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE); Tipos de string: CHAR(N): string com exactamente N caracteres. VARCHAR(N): string com N caracteres no máximo TEXT: string mais longa Sqlite3: é tudo tratado como TEXT 16

SQL CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE); Em SQL é indiferente escrever as palavras-chave em maiúsculas ou minúsculas. No entanto, é comum escrever-se em maiúsculas. Quanto aos nomes dos campos e tabelas depende do sistema. À cautela, é melhor escrever estes de forma consistente. 17

SQL Exemplos CREATE TABLE Filmes ( Filme_id INTEGER, Titulo TEXT, Tipo TEXT, Classificacao TEXT, PRIMARY KEY(Filme_id) ); CREATE TABLE Clientes ( Cliente_id INTEGER, Nome TEXT, Morada TEXT, Numero_cartao_credito TEXT, PRIMARY KEY(Cliente_id) ); CREATE TABLE Alugueres ( Aluguer_id INTEGER, Cliente_id INTEGER, Filme_id INTEGER, Data_aluguer TEXT, Data_entrega TEXT, PRIMARY KEY(Aluger_id) ); 18

SQL Exemplo, criar tabela CREATE TABLE Filmes ( Filme_id INTEGER, Titulo TEXT, Tipo TEXT, Classificacao TEXT, PRIMARY KEY(Filme_id)); Especifica o campo (ou combinação de campos) que identificam inequivocamente cada registo. Tentar criar repetições neste dá erro. 19

SQL Exemplo, inserir registo INSERT INTO Filmes VALUES ( 10,"Meaning of Life","comedia","maiores de 16"); Valores dos campos neste registo, pela mesma ordem da definição original dos campos no CREATE TABLE. 20

SQL Exemplo, modificar ou apagar registos UPDATE Filmes SET Tipo = "drama" WHERE Titulo = "Elizabeth"; DELETE FROM Filmes WHERE Nome = "Avengers"; 21

SQL Interrogação SELECT lista-campos from lista-tabelas WHERE condição ORDER BY campo; SELECT * FROM Filmes; SELECT Titulo FROM Filmes WHERE Tipo = "comedia"; SELECT Titulo,Tipo FROM Filmes ORDER BY Titulo; 22

SQLite 23

SQLite Motor de bases de dados Gratuito, código aberto http://www.sqlite.org/ Podemos usá-lo interactivamente como interpretador de linha de comando. Interpreta SQL e gere a base de dados Para executar sqlite3 basedados 24

SQLite Para executar sqlite3 basedados basedados é o nome do ficheiro onde ficam guardadas as tabelas. Se já existe, abre esse e dá acesso ás tabelas lá guardadas; caso contrário cria um novo. Se for só para experimentar pode ser algo como temp.db. 25

SQLite Além de SQL, dispõe de mais comandos particulares do SQLite.help lista comandos disponíveis (além do SQL).read nomeficheiro executa script SQL.schema lista esquemas das tabelas.quit sair do interpretador 26

SQLite.tables lista as tabelas.separator sep especifica o separador dos campos.import nomeficheiro tabela importa o ficheiro para a tabela assumindo os campos separados pelo separador definido Sqlite 27

MATLAB + SQL 28

MATLAB + SQL Para combinar SQL com MATLAB, usamos uma função que corre o SQLite para executar o comando SQL que queremos. 29

SQLite na linha de comando O SQLite pode ser executado com parâmetros na linha de comando. nome do ficheiro com a base de dados. e podemos incluir também um comando SQL Na consola (cmd em Windows) sqlite3 teste.db "CREATE TABLE Massas (Simbolo TEXT, Massa REAL);" sqlite3 teste.db "INSERT INTO Massas VALUES ('H', 1);" sqlite3 teste.db "SELECT * FROM Massas;" H 1.0 Consola 30

SQLite na linha de comando O SQLite pode ser executado com parâmetros na linha de comando. um, já conhecemos, é o nome do ficheiro com a base de dados. podemos incluir também um comando SQL o que não serve de muito por si, mas pode ser útil para executar comandos SQL a partir de um programa em MATLAB. 31

SQLite na linha de comando Executar comandos SQL a partir de um programa MATLAB function result=sqlite(sql,db) Nota: esta função tem elementos que não fazem parte da matéria de ICE. 32

MATLAB + SQL 33

MATLAB + SQL Nome da base de dados se não for indicado nenhum em argumento. 34

MATLAB + SQL Troca aspas por plicas (é preciso duas dentro de uma string) 35

MATLAB + SQL Executa o sqlite3 com o comando SQL usando a função system. 36

MATLAB + SQL No Octave / MATLAB > sqlite('create TABLE Massas (Simbolo TEXT, Massa REAL);','teste.db') ans = > sqlite('insert INTO Massas VALUES ("H", 1);','teste.db') ans = > sqlite('select * FROM Massas;','teste.db') ans = H 1.0 37

Exemplo: projectos de recuperação de praias 38

Exemplo: MATLAB + SQL praias.txt Concelho, Nome, Custo, Prioridade Marinha Grande;Esporao da Praia da Vieira;720000.00;Media Lourinha;Arribas junto ao forte do Paimogo;591000.00;Media Lourinha;Arribas em Porto das Barcas;691000.00;Media Lourinha;Arribas em Porto Dinheiro;606500.00;Media Sintra;Arribas da praia Grande do Rodizio;39951.63;Media Sintra;Arribas da praia das Azenhas do Mar;326560.08;Media... Setubal;Arribas da praia de Galapos;100000.00;Baixa... Portimao;Saneamento da arriba na praia do Vau;30000.00;Elevada 39

Exemplo: MATLAB + SQL Objectivo Usar um sistema de gestão de bases de dados (SGBD) para gerir a informação Esquema da base de dados Utilizador/ Programador Motor da base de dados Ficheiros de suporte da base de dados 40

Exemplo: MATLAB + SQL Objectivo Criar tabela Inserir dados dos projectos de recuperação Questionar a BD usando SQL Exemplo: obter os projectos de prioridade alta, média e baixa. 41

Exemplo: MATLAB + SQL Criar tabela function criatabela(nomebd) 42

Exemplo: MATLAB + SQL 43

Exemplo: MATLAB + SQL Porquê PRIMARY KEY? Numa base de dados relacional, as chaves permitem relacionar tabelas diferentes. (Não vamos usar BDs com várias tabelas). Mas mesmo só com uma tabela é útil poder identificar inequivocamente cada registo por exemplo, para evitar a inserção de duplicados neste caso assumimos que dois projectos com o mesmo nome seria um erro 44

Exemplo: MATLAB + SQL Porquê PRIMARY KEY? O SQLite cria sempre um atributo chamado Rowid que identifica inequivocamente cada registo, mesmo que não se crie uma chave primária. No entanto, esse não serve para evitar registos repetidos porque incrementa automaticamente. 45

Exemplo: MATLAB + SQL Testes podemos começar por criar uma tabela numa BD de teste, para podermos testar a função que carrega os dados. octave:23> criatabela('teste.db'); octave:24> sqlite('.tables','teste.db') ans = Projectos 46

Exemplo: MATLAB + SQL Carregar os dados function carregapraias(nomefich, nomebd) 47

Exemplo: MATLAB + SQL 48

Exemplo: MATLAB + SQL Lê cada linha do ficheiro de entrada. 49

Exemplo: MATLAB + SQL Cria o comando SQL de inserção tabela. A função sprintf funciona como fprintf mas devolve uma string. 50

Exemplo: MATLAB + SQL Executa o comando SQL na BD especificada. 51

Exemplo: MATLAB + SQL Testar: (podemos fazer tudo no MATLAB/Octave) octave:12> carregapraias('praias.txt', 'teste.db') octave:13> sqlite('select * from Projectos;','teste.db') ans = Marinha Grande Esporao da Praia da Vieira 720000.0 Media Lourinha Arribas junto ao forte do Paimogo 591000.0 Media Lourinha Arribas em Porto das Barcas 691000.0 Media Lourinha Arribas em Porto Dinheiro 606500.0 Media Sintra Arribas da praia Grande do Rodizio 39951.63 Media Sintra Arribas da praia das Azenhas do Mar 326560.08 Media Sintra Arribas da praia Pequena 428015.58 Media... 52

Exemplo: MATLAB + SQL LIKE octave:29> sqlite('select Nome FROM Projectos WHERE Nome LIKE "Arriba%";','teste.db') ans = Arribas junto ao forte do Paimogo Arribas em Porto das Barcas Arribas em Porto Dinheiro Arribas da praia Grande do Rodizio Arribas da praia das Azenhas do Mar Arribas da praia Pequena Arriba da Praia Fonte do Cortico Arribas da praia de Galapos 53

Exemplo: MATLAB + SQL LIKE octave:32> sqlite('select Nome FROM Projectos WHERE Nome LIKE "%praia%";','teste.db') ans = Esporao da Praia da Vieira Arribas da praia Grande do Rodizio Arribas da praia das Azenhas do Mar Arribas da praia Pequena Arriba da Praia Fonte do Cortico Relocalizacao de acessos das praias de Morgavel, Franquia e Farol Arribas da praia de Galapos Alimentacao artificial da praia da Mareta Saneamento da arriba na praia do Vau 54

Exemplo: MATLAB + SQL DISTINCT octave:33> sqlite('select Concelho FROM Projectos;','teste.db') ans = Marinha Grande Lourinha Lourinha Lourinha Sintra Sintra Sintra Santiago do Cacem Sines Setubal Vila do Bispo Portimao 55

Exemplo: MATLAB + SQL DISTINCT > sqlite('select DISTINCT Concelho FROM Projectos;','teste.db') ans = Marinha Grande Lourinha Sintra Santiago do Cacem Sines Setubal Vila do Bispo Portimao 56

Exemplo: MATLAB + SQL DISTINCT > sqlite('select DISTINCT Prioridade FROM Projectos;','teste.db') ans = Media Baixa Elevada 57

Exemplo: MATLAB + SQL Problema: o resultado do sqlite é uma string mas convém estruturar melhor a informação ans = Marinha Grande Esporao da Praia da Vieira 720000.0 Media Lourinha Arribas junto ao forte do Paimogo 591000.0 Media Lourinha Arribas em Porto das Barcas 691000.0 Media Lourinha Arribas em Porto Dinheiro 606500.0 Media Sintra Arribas da praia Grande do Rodizio 39951.63 Media Sintra Arribas da praia das Azenhas do Mar 326560.08 Media Sintra Arribas da praia Pequena 428015.58 Media... 58

Exemplo: MATLAB + SQL Converter a string do resultado num vector de estruturas function recs=parserecords(sqlresult,namestring) Nota: esta função tem elementos que não fazem parte da matéria de ICE. 59

Lista os nomes dos campos das estruturas, ou nada se nenhuma string for fornecida no segundo argumento. 60

Parte a string pelas linhas, percorre as linhas partindo pelo separador (' '). 61

Para cada atributo (coluna da tabela) gerar ou obter o nome do campo da estrutura, converter em número se possível e guardar no vector de estruturas. 62

Exemplo: MATLAB + SQL Obter nome e custo de projectos com uma prioridade especificada. function projs=selprioridade(tabela, basedados, prioridade) 63

Exemplo: MATLAB + SQL A função sprintf funciona como fprintf mas em vez de escrever num ficheiro ou consola devolve a string formatada 64

Exemplo: MATLAB + SQL Obtido o resultado da função sqlite (numa só string), convertemos num vector de estruturas com parserecords, indicando os nomes dos campos: nome e custo. 65

Exemplo: MATLAB + SQL Testar: octave:19> elevada=selprioridade('projectos', 'teste.db', 'Elevada'); octave:20> elevada(1) nome = Alimentacao artificial da praia da Mareta custo = 2500000 octave:21> elevada(2) nome = Saneamento da arriba na praia do Vau custo = 30000 octave:22> baixa=selprioridade('projectos', 'teste.db', 'Baixa') baixa = nome = Arribas da praia de Galapos custo = 100000 66

Exemplo: MATLAB + SQL Função principal: function [elevada,media,baixa]=processaprojs(fich, basedados) 67

Exemplo: MATLAB + SQL 68

Exemplo: MATLAB + SQL Testar: octave:25> [elev,med,baix]=processaprojs('praias.txt','praias.db') elev = 1x2 struct array containing the fields: nome custo med = 1x9 struct array containing the fields: nome custo baix = scalar structure containing the fields: nome = Arribas da praia de Galapos custo = 100000 69

Exemplo: MATLAB + SQL Testar: octave:26> elev.nome ans = Alimentacao artificial da praia da Mareta ans = Saneamento da arriba na praia do Vau octave:27> med.nome ans = Esporao da Praia da Vieira ans = Arribas junto ao forte do Paimogo ans = Arribas em Porto das Barcas ans = Arribas em Porto Dinheiro ans = Arribas da praia Grande do Rodizio ans = Arribas da praia das Azenhas do Mar ans = Arribas da praia Pequena ans = Arriba da Praia Fonte do Cortico ans = Relocalizacao de acessos das praias de Morgavel, Franquia e Farol SQL+Matlab 70

Para consultar SQL Muito fácil encontrar tutoriais na Web, mas normalmente têm muito mais do que damos aqui. Exemplo de uma cábula que pode ser útil: http://www.zentut.com/sql-tutorial/sql-cheat-sheet/ 71

Dúvidas 72