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

Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

Embed Size (px)

Citation preview

Page 1: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

Informática para Ciências e Engenharias

2013/14

Teórica 10

Page 2: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

2

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

Page 3: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

3

Sistemas de gestão debases 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.

Page 4: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

4

Sistemas de gestão debases de dados

Ficheiros de suporte da base de dados

Utilizador/Programador

Esquema da base de dados

Motor da

base dedados

Page 5: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

5

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

Page 6: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

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

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

Page 7: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

7

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

Como identificar um registo?

Page 8: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

8

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.

Page 9: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

9

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

107 Cavaco Silva Boliqueime 123412341234123407

108 Antonio Jose Seguro Largo do Rato, 2 123412341234123408

Chave primária: Cliente_id

Page 10: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

10

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

Page 11: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

11

Structured Query Language (SQL)

Page 12: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

12

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

Page 13: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

13

SQL

CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);

Page 14: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

14

SQL

CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);

Nome da tabela

Page 15: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

15

SQL

CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);

Campos e tipos respectivosSimbolo é do tipo texto (string)massa da tabela

Page 16: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

16

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áximoTEXT: string mais longa

Sqlite3: é tudo tratado como TEXT

Page 17: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

17

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.

Page 18: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

18

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) );

Page 19: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

19

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.

Page 20: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

20

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.

Page 21: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

21

SQL

Exemplo, modificar ou apagar registos

UPDATE Filmes SET Tipo = "drama" WHERE Titulo = "Elizabeth";

DELETE FROM Filmes WHERE Nome = "Avengers";

Page 22: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

22

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;

Page 23: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

23

SQLite

Page 24: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

24

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

Page 25: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

25

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.

Page 26: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

26

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

Page 27: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

27

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

Page 28: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

28

MATLAB + SQL

Page 29: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

29

MATLAB + SQL

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

Page 30: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

30

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

Page 31: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

31

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.

Page 32: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

32

SQLite na linha de comando

Executar comandos SQL a partir de um programa MATLAB

Nota: esta função tem elementos que não fazem parte da matéria de ICE.

function result=sqlite(sql,db)

Page 33: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

33

MATLAB + SQL

Page 34: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

34

MATLAB + SQL

Nome da base de dados se não for indicado nenhum em argumento.

Page 35: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

35

MATLAB + SQL

Troca aspas por plicas(é preciso duas dentro de uma string)

Page 36: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

36

MATLAB + SQL

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

Page 37: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

37

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

Page 38: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

38

Exemplo:

projectos de recuperação

de praias

Page 39: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

39

Exemplo: MATLAB + SQL

praias.txt• Concelho, Nome, Custo, Prioridade

Marinha Grande;Esporao da Praia da Vieira;720000.00;MediaLourinha;Arribas junto ao forte do Paimogo;591000.00;MediaLourinha;Arribas em Porto das Barcas;691000.00;MediaLourinha;Arribas em Porto Dinheiro;606500.00;MediaSintra;Arribas da praia Grande do Rodizio;39951.63;MediaSintra;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

Page 40: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

40

Exemplo: MATLAB + SQL

Objectivo• Usar um sistema de gestão de bases de

dados (SGBD) para gerir a informação

Ficheiros de suporte da base de dados

Utilizador/Programador

Esquema da base de dados

Motor da

base dedados

Page 41: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

41

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.

Page 42: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

42

Exemplo: MATLAB + SQL

Criar tabela

function criatabela(nomeBD)

Page 43: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

43

Exemplo: MATLAB + SQL

Page 44: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

44

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

Page 45: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

45

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.

Page 46: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

46

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

Page 47: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

47

Exemplo: MATLAB + SQL

Carregar os dados

function carregapraias(nomeFich, nomeBD)

Page 48: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

48

Exemplo: MATLAB + SQL

Page 49: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

49

Exemplo: MATLAB + SQL

Lê cada linha do ficheiro de entrada.

Page 50: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

50

Exemplo: MATLAB + SQL

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

Page 51: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

51

Exemplo: MATLAB + SQL

Executa o comando SQL na BD especificada.

Page 52: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

52

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|MediaLourinha|Arribas junto ao forte do Paimogo|591000.0|MediaLourinha|Arribas em Porto das Barcas|691000.0|MediaLourinha|Arribas em Porto Dinheiro|606500.0|MediaSintra|Arribas da praia Grande do Rodizio|39951.63|MediaSintra|Arribas da praia das Azenhas do Mar|326560.08|MediaSintra|Arribas da praia Pequena|428015.58|Media...

Page 53: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

53

Exemplo: MATLAB + SQL

LIKE octave:29> sqlite('SELECT Nome FROM Projectos

WHERE Nome LIKE "Arriba%";','teste.db')

ans = Arribas junto ao forte do PaimogoArribas em Porto das BarcasArribas em Porto DinheiroArribas da praia Grande do RodizioArribas da praia das Azenhas do MarArribas da praia PequenaArriba da Praia Fonte do CorticoArribas da praia de Galapos

Page 54: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

54

Exemplo: MATLAB + SQL

LIKE octave:32> sqlite('SELECT Nome FROM Projectos

WHERE Nome LIKE "%praia%";','teste.db')

ans = Esporao da Praia da VieiraArribas da praia Grande do RodizioArribas da praia das Azenhas do MarArribas da praia PequenaArriba da Praia Fonte do CorticoRelocalizacao de acessos das praias de Morgavel, Franquia e FarolArribas da praia de GalaposAlimentacao artificial da praia da MaretaSaneamento da arriba na praia do Vau

Page 55: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

55

Exemplo: MATLAB + SQL

DISTINCToctave:33> sqlite('SELECT Concelho FROM Projectos;','teste.db')

ans = Marinha GrandeLourinhaLourinhaLourinhaSintraSintraSintraSantiago do CacemSinesSetubalVila do BispoPortimao

Page 56: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

56

Exemplo: MATLAB + SQL

DISTINCT> sqlite('SELECT DISTINCT Concelho FROM Projectos;','teste.db')

ans = Marinha GrandeLourinhaSintraSantiago do CacemSinesSetubalVila do BispoPortimao

Page 57: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

57

Exemplo: MATLAB + SQL

DISTINCT> sqlite('SELECT DISTINCT Prioridade FROM Projectos;','teste.db')

ans = MediaBaixaElevada

Page 58: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

58

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|MediaLourinha|Arribas junto ao forte do Paimogo|591000.0|MediaLourinha|Arribas em Porto das Barcas|691000.0|MediaLourinha|Arribas em Porto Dinheiro|606500.0|MediaSintra|Arribas da praia Grande do Rodizio|39951.63|MediaSintra|Arribas da praia das Azenhas do Mar|326560.08|MediaSintra|Arribas da praia Pequena|428015.58|Media...

Page 59: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

59

Exemplo: MATLAB + SQL

Converter a string do resultado num vector de estruturas

Nota: esta função tem elementos que não fazem parte da matéria de ICE.

function recs=parseRecords(sqlResult,nameString)

Page 60: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

60

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

Page 61: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

61

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

Page 62: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

62

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.

Page 63: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

63

Exemplo: MATLAB + SQL

Obter nome e custo de projectos com uma prioridade especificada.

function projs=selprioridade(tabela, baseDados, prioridade)

Page 64: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

64

Exemplo: MATLAB + SQL

A função sprintf funciona como fprintf mas em vez de escrever num ficheiro ou consola devolve a string formatada

Page 65: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

65

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.

Page 66: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

66

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

Page 67: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

67

Exemplo: MATLAB + SQL

Função principal:

function [elevada,media,baixa]=processaprojs(fich, baseDados)

Page 68: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

68

Exemplo: MATLAB + SQL

Page 69: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

69

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

Page 70: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

70

Exemplo: MATLAB + SQL

Testar:octave:26> elev.nomeans = Alimentacao artificial da praia da Maretaans = Saneamento da arriba na praia do Vauoctave:27> med.nomeans = Esporao da Praia da Vieiraans = Arribas junto ao forte do Paimogoans = Arribas em Porto das Barcasans = Arribas em Porto Dinheiroans = Arribas da praia Grande do Rodizioans = Arribas da praia das Azenhas do Marans = Arribas da praia Pequenaans = Arriba da Praia Fonte do Corticoans = Relocalizacao de acessos das praias de Morgavel, Franquia e Farol

SQL+Matlab

Page 71: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

71

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/

Page 72: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo

72

Dúvidas