SlideShare uma empresa Scribd logo
1 de 33
Um exemplo do uso de bases de
dados relacionais
SQLite e a exploração SQL
Luís Borges Gouveia
lmbg@ufp.edu.pt
V2.1, Fevereiro de 2016
Para as práticas
• Utilização do um SGBD relacional
– http://www.sqlite.org
– Software livre, open source e sem custos, de domínio
público (opensource, freeware, public domain)
– Disponível para os sistemas operativos: Linux, MS
Windows e MAC OS
– Permite a criação de bases de dados de fácil utilização
e é adotado em inúmeras aplicações:
• Entre outras: Dropbox, Firefox, Skype e Adobe Acrobat
– Motor de base de dados fiável e de pequena
dimensão
Iniciar o SQLite
• O SQLite é um SGBD de interface de linha de comando (baseado num só
ficheiro executável que funciona isolado) que é muito fácil de instalar e
usar (não necessita de servidor ou de um cliente)
– MS Windows: ir para http://www.sqlite.org/download.html e considerar a sessão
Precompiled Binaries for Windows. Descarregar o ficheiro .zip do link command-line shell
(não o DLL ou o da analysis). Extrair o ficheiro sqlite3.exe e colocar o mesmo onde for
pretendido – o desktop pode ser um local. Basta agora um duplo clique no ficheiro
extraído para ser executado
– MAC OS X: ir para http://www.sqlite.org/download.html e considerar a sessão
Precompiled Binaries for Mac OS X. Descarregar o ficheiro .zip file do link command-line
shell (não o link analysis). Extrair o ficheiro sqlite3 e colocar o mesmo onde for
pretendido – o desktop pode ser um local. Basta agora um duplo clique no ficheiro
extraído para ser executado
A escolha do executável correto
Depois de extrair o ficheiro…
• Aspeto do ícone do executável SQLite
• Aspeto da janela da linha de comando
A linha
de
comando
(.help)
Reutilizar bases de dados no SQLite…
• Depois de utilizar o SGBD e para concluir a sessão, deve utilizar o comando
'.exit‘ (ou ‘.quit’ que, aparentemente, é o mesmo…)
– Tenha em atenção que o estado da base de dados não é gravado entre sessões,
pelo que será necessário repetir os comandos e carregar os dados novamente,
para cada sessão
– Claro que é possível forçar o SQL a manter o estado de base dados entre
sessões
• Para garantir a preservação de estado entre sessões, o SQLite pode ser
executado tendo como argumento a indicação da base dados que se
pretende abrir
– Pode ser utilizada a linha de comando do sistema operativo e executar o SQLite
com indicação do nome do ficheiro para a base de dados a criar ou a utilizar:
SQLite3 nome_basedados (exemplo: sqlite3 teste.db)
– Este comando força o SQLite a abrir um ficheiro onde contém a base dados
com o nome indicado. Caso o ficheiro ainda não exista, cria um. O estado da
base de dados irá sendo gravado e pode ser reutilizado depois
Para poder lançar o Sqlite com um
ficheiro para persistência de dados…
• É necessário lançar uma janela de sessão em
ambiente de linha de comando ou MS DOS
– Botão da direita, no menu Windows e selecionar
“executar” ou “procurar”
– Introduzir “cmd” (cria uma janela de linha de comandos,
para poder invocar o SGBD com atributos)
Interagir no SQLite
• Uma vez iniciado o SQLite, existem três
opções para correr consultas:
– teclados diretamente, um de cada vez, usando a
linha de comando
– Copiados e colocados (copy & paste) de um outro
local, na linha de comando
– Executados de um ficheiro externo (script)
Uso da linha de comando
• Experimentar e obter a resposta, de comando a
comando
– Comandos SQLite: iniciados por um ponto e listados em
.help
– Comandos SQL, de acordo com a norma e finalizados por ;
(ponto e vírgula)
• Um exemplo de um manual sobre a 4GL SQL para o SQLite
(http://zetcode.com/databases/sqlitetutorial/)
Copiar e colar na linha de comando
• uma forma fácil de replicar comandos de linha, a partir de manuais ou da
produção de textos em processadores de texto ou outros editores mais
evoluídos, é possível e até desejável
– Selecionar e copiar o texto e, na janela de comando, colar
Copiar e colar na linha de comando
• Para assegurar que é possível realizar a operação de copiar e colar
numa janela de comando, é necessário garantir que a opção de
modo de edição rápida esteja selecionada (na barra de título deve
escolher a opção Propriedades do menu acionado pela tecla direita
do rato)
Executar um ficheiro de script
• uma forma clássica de reproduzir e correr sequências complexas de
comandos é a utilização de scripts. O SQLite facilita a sua leitura por via do
comando ‘.read’
.read primeiroSQLscript.sql
– Em que o ficheiro de texto de nome primeiroSQLscript.sql está colocado no
diretório do executável SQLite3 e contém o script a correr
/* As duas primeiras linhas formatam os resultados do comando SELECT */
/* Para obter uma lista de comandos específicos do SQLite, digite '.help' */
.mode columns
.headers on
.nullvalue NULL
drop table if exists Tabela;
create table Tabela (Atributo1 text, Atributo2 text);
insert into Tabela values ('Olá,', 'mundo!');
select * from Tabela;
Considere o seguinte contexto
• Existe a necessidade de registo de uma pequena
coleção de livros associada a uma biblioteca pessoal
– Pretende-se o registo de livros, indicando o respetivo
título, ISBN e língua em que está escrito
– É necessário associar os respetivos autores, considerando
o seu nome e nacionalidade
– Deve ser igualmente registada a editora (nome)
– Deve ser considerado o registo de compra, indicando o
livro, o valor e a data de aquisição
– Adicionalmente, as relações de quem escreveu o livro
(associando o livro e o autor), quem publicou (associando
o livro e a editora)
Um modelo E-R do contexto proposto
• Consideram-se:
– quatro entidades: editora, livro,
autor e compra
– Três relações binárias:
publicado, escrito e pago
• Publicado: uma editora publica
vários livros e um livro é
publicado por várias editoras
• Escrito: um livro é escrito por
vários autores e um autor
escreve vários livros
• Pago: um livro é pago numa
compra e uma compra paga um
livro
Esquema relacional do contexto
• Livro (idl, titulo, lingua, isbn)
• Autor (ida, nome, nacionalidade)
• Editora (ide, nome)
• Escrito (idl, ida)
• Publicado (idl, ide)
• Compra (cmp, idl, valor, data)
Criar a base de dados…
• Na linha de comando do SO
– Sqlite3 biblio.db
• Criar a tabela Livro (idl, título, língua, isbn)
– Create table livro(idl integer primary key, titulo text, lingua text, isbn text);
• Criar a tabela Autor (ida, nome, nacionalidade)
– Create table autor(ida integer primary key, nome text, nacionalidade text);
• Criar a tabela Editora (ide, nome)
– Create table editora(ide integer primary key, nome text);
• Criar a tabela Escrito (idl, ida)
– Create table escrito(esc integer primary key autoincrement, idl integer, ida integer);
• Criar a tabela Publicado (idl, ide)
– Create table publicado(pub integer primary key autoincrement, idl integer, ide integer);
• Criar a tabela Compra (cmp, idl, valor, data)
– Create table compra(cmp integer primary key autoincrement, idl integer, valor real, data
date);
Informação sobre a bd biblio.db
• Testar os comandos: .databases (lista as bases de dados consideradas no
ficheiro biblio.db), .tables (lista as tabelas associadas com a base de
dados) e .schema (que lista o esquema das tabelas da base de dados)
Teste do modelo criado
• Para testar o modelo criado é tomada uma
coleção de livros, conforme descrita em
http://homepage.ufp.pt/lmbg/lg_livros.htm
– Incluia em 2013, 12 livros
– Foram adicionados mais 3 livros em 2015
Inserir dados na base de dados
• Inserir livros… [Livro (idl, título, língua, isbn)]
– Insert into livro values (1, ‘Sistemas de Informação de Apoio à Gestão’, ‘Português’, ‘9728589433’);
– Insert into livro values (2, ‘Cidades e Regiões Digitais: impacte nas cidades e nas pessoas’, ‘Português’, ‘9728830033’);
– Insert into livro values (3, ‘Informática e Competências Tecnológicas para a Sociedade da Informação’, ‘Português’,
‘9728830041’);
– Insert into livro values (4, ‘Readings in Information Society ’, ‘Inglês’, ‘9728830149’);
– Insert into livro values (5, ‘Sociedade da Informação: balanço e implicações ’, ‘Português’, ‘9728830181’);
– Insert into livro values (6, ‘O local e-government: a governação digital na autarquia’, ‘Português’, ‘9728589417’);
– Insert into livro values (7, ‘Informática e Competências Tecnológicas para a Sociedade da Informação 2ed’, ‘Português’,
‘9728830300’);
– Insert into livro values (8, ‘Negócio Electrónico - conceitos e perspectivas de desenvolvimento’, ‘Português’,
‘972858962X’);
– Insert into livro values (9, ‘Gestão da Informação na Biblioteca Escolar ’, ‘Português’, ‘9789899533004’);
– Insert into livro values (10, ‘A virtual environment to share knowledge’, ‘Inglês’, ‘9783639129861’);
– Insert into livro values (11, ‘Ciência da Informação: contributos para o seu estudo’, ‘Português’, ‘9789896430900’);
– Insert into livro values (12, ‘Repensar a Sociedade da Informação e do Conhecimento no Início do Século XXI’,
‘Português’, ‘9789726186953’);
• Os dados de 2015…
– Insert into livro values(13, ‘Gestão da Informação em Museus: uma contribuição para o seu estudo’, ‘Português’,
‘9789899901394’);
– Insert into livro values(14, ‘Web 2.0 and Higher Education. A psychological perspective’, Inglês’, ‘9783659683466’);
– Insert into livro values(15, ‘Contribuições para a discussão de um modelo de Governo Electrónico Local para Angola’ ,
‘Português’, ‘9789899933200’);
Inserir dados na base de dados
• Inserir autores… [Autor (ida, nome, nacionalidade)]
– Insert into autor values(1, ‘Luis Borges Gouveia’, ’Português’);
– Insert into autor values(2, ‘João Ranito’, ’Português’);
– Insert into autor values(3, ‘Nuno Magalhães Ribeiro’, ’Português’);
– Insert into autor values(4, ‘Paulo Rurato’, ’Português’);
– Insert into autor values(5, ‘Sofia Gaio’, ’Português’);
– Insert into autor values(6, ‘Rui Moreira’, ’Português’);
– Insert into autor values(7, ‘Margarida Bairrão’, ’Português’);
– Insert into autor values(8, ‘Judite Gonçalves de Freitas’, ’Português’);
– Insert into autor values(9, ‘António Borges Regedor’, ’Português’);
– Insert into autor values(10, ‘José Dias Coelho’, ’Português’);
• Dados de 2015
– Insert into autor values(11, ‘Paula Moura’, ‘Português’);
– Insert into autor values(12, ‘Luis Cunha’, ‘Português’);
– Insert into autor values(13, ‘Pereira Alfredo’, ‘Angolano’);
Inserir dados na base de dados
• Inserir editoras… [Editora (ide, nome)]
– Insert into editora values(1, ‘SPI - Principia’);
– Insert into editora values(2, ‘Edições Universidade Fernando Pessoa’);
– Insert into editora values(3, ‘Edições GestKnowing’);
– Insert into editora values(4, ‘VDM – Verlag Dr. Muller’);
– Insert into editora values(5, ‘Sílabo’);
• Dados de 2015
– Insert into editora values(6, ‘Green Lines Instituto’);
– Insert into editora values(7, ‘Lambert Academic Publishing’);
– Insert into editora values(8, ‘Kwigia Editora’);
Inserir dados na base de dados
• Associar livros a autores… [Escrito (idl, ida)]
– Insert into escrito values(1, 1, 1);
– Insert into escrito values(2, 1, 2);
– Insert into escrito values(3, 2, 1);
– Insert into escrito values(4, 3, 3);
– Insert into escrito values(5, 3, 1);
– Insert into escrito values(6, 3, 4);
– Insert into escrito values(7, 4, 1);
– Insert into escrito values(8, 4, 5);
– Insert into escrito values(9, 5, 1);
– Insert into escrito values(10, 5, 5);
– Insert into escrito values(11, 6, 1);
– Insert into escrito values(12, 7, 3);
– Insert into escrito values(13, 7, 1);
– Insert into escrito values(14, 7, 4);
– Insert into escrito values(15, 7, 6);
– Insert into escrito values(16, 8, 1);
– Insert into escrito values(17, 9, 7);
– Insert into escrito values(18, 9, 1);
– Insert into escrito values(19, 10, 1);
– Insert into escrito values(20, 11, 8);
– Insert into escrito values(21, 11, 1);
– Insert into escrito values(22, 11, 9);
– Insert into escrito values(23, 12, 10);
– Insert into escrito values(24, 12, 1);
• Dados de 2015
– Insert into escrito values(25, 13, 11);
– Insert into escrito values(26, 13, 1);
– Insert into escrito values(27, 14, 1);
– Insert into escrito values(28, 14, 12);
– Insert into escrito values(29, 15, 13);
– Insert into escrito values(30, 15, 1);
Inserir dados na base de dados
• Associar livros a editoras… [Publicado (idl, ide)]
– Insert into publicado values(1, 1, 1);
– Insert into publicado values(2, 2, 2);
– Insert into publicado values(3, 3, 2);
– Insert into publicado values(4, 4, 2);
– Insert into publicado values(5, 5, 2);
– Insert into publicado values(6, 6, 1);
– Insert into publicado values(7, 7, 2);
– Insert into publicado values(8, 8, 1);
– Insert into publicado values(9, 9, 3);
– Insert into publicado values(10, 10, 4);
– Insert into publicado values(11, 11, 2);
– Insert into publicado values(12, 12, 5);
• Dados de 2015
– Insert into publicado values(13, 13, 6);
– Insert into publicado values(14, 14, 7);
– Insert into publicado values(15, 15, 8);
Inserir dados na base de dados
• Inserir compras… [Compra (cmp, idl, valor, data)]
– Insert into compra values(1, 1, 15, ‘2004-12-12’);
– Insert into compra values(2, 2, 12, ‘2003-11-12’);
– Insert into compra values(3, 3, 10, ‘2003-10-20’);
– Insert into compra values(4, 4, 7, ‘2004-04-20’);
– Insert into compra values(5, 5, 14, ‘2004-06-15’);
– Insert into compra values(6, 6, 15, ‘2004-12-12’);
– Insert into compra values(7, 7, 10, ‘2003-10-26’);
– Insert into compra values(8, 8, 15, ‘2006-12-10’);
– Insert into compra values(9, 9, 15, ‘2007-03-10’);
– Insert into compra values(10, 10, 75, ‘2009-02-05’);
– Insert into compra values(11, 11, 10, ‘2012-06-18’);
– Insert into compra values(12, 12, 24, ‘2012-09-10’);
• Dados de 2015
– Insert into compra values(13, 13, 25, ‘2015-01-10’);
– Insert into compra values(14, 14, 54, ‘2015-01-25’);
– Insert into compra values(15, 15, 17, ‘2015-01-17’);
Obter o esquema da base de dados
• Obter o esquema da base de dados biblio,
utilizando o comando .schema
Obter uma cópia da base dados
• De forma a poder replicar a estrutura e conteúdos
da base de dados é possível obter a sequência de
comandos SQL, atráves de .dump
– Para obter a listagem num ficheiro de texto,
deve ser redirecionado o output, com base no
comando .output nome_do_ficheiro, antes do
uso do comando .dump (após o comando, deve
redirecionar novamente o output para o ecran,
utilizando .output stdout)
– O exemplo do dump da base de dados biblio.db,
ao lado…
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE livro(idlinteger primary key, titulo text, lingua text, isbn text);
INSERT INTO "livro" VALUES(1,'Sistemas de Informa‡Æo para
GestÆo','Portuguˆs','9728589433');
INSERT INTO "livro" VALUES(2,'Cidades e RegiäesDigitais: impacte nas cidadese
nas pessoas','Portuguˆs','9728830033');
INSERT INTO "livro" VALUES(3,'Inform tica e Competˆncias Tecnol¢gicas para a
Sociedade daInforma‡Æo','Portuguˆs','9728830041');
INSERT INTO "livro" VALUES(4,'Readings in Information Society
','Inglˆs','9728830149');
INSERT INTO "livro" VALUES(5,'Sociedade da Informa‡Æo: balan‡o e implica‡äes
','Portuguˆs','9728830181');
INSERT INTO "livro" VALUES(6,'O local e-government: a governa‡Æo digitalna
autarquia','Portuguˆs','9728589417');
INSERT INTO "livro" VALUES(7,'Inform tica e Competˆncias Tecnol¢gicas para a
Sociedade daInforma‡Æo 2ed','Portuguˆs','9728830300');
INSERT INTO "livro" VALUES(8,'Neg¢cio Electr¢nico - conceitose perspectivasde
desenvolvimento','Portuguˆs','972858962X');
INSERT INTO "livro" VALUES(9,'GestÆo da Informa‡Æo na Biblioteca Escolar
','Portuguˆs','9789899533004');
INSERT INTO "livro" VALUES(10,'A virtual environment to share
knowledge','Inglˆs','9783639129861');
INSERT INTO "livro" VALUES(11,'Ciˆncia da Informa‡Æo: contributos para o seu
estudo','Portuguˆs','9789896430900');
INSERT INTO "livro" VALUES(12,'Repensar a Sociedadeda Informa‡Æo e do
Conhecimento no In¡cio do S‚culo XXI','Portuguˆs','9789726186953');
CREATE TABLE autor(ida integer primary key, nome text, nacionalidadetext);
INSERT INTO "autor" VALUES(1,'Luis Borges Gouveia','Portuguˆs');
INSERT INTO "autor" VALUES(2,'JoÆo Ranito','Portuguˆs');
INSERT INTO "autor" VALUES(3,'Nuno MagalhÆesRibeiro','Portuguˆs');
INSERT INTO "autor" VALUES(4,'Paulo Rurato','Portuguˆs');
INSERT INTO "autor" VALUES(5,'Sofia Gaio','Portuguˆs');
INSERT INTO "autor" VALUES(6,'Rui Moreira','Portuguˆs');
INSERT INTO "autor" VALUES(7,'Margarida BairrÆo','Portuguˆs');
INSERT INTO "autor" VALUES(8,'Judite Gon‡alves de Freitas','Portuguˆs');
INSERT INTO "autor" VALUES(9,'Ant¢nio Borges Regedor','Portuguˆs');
INSERT INTO "autor" VALUES(10,'Jos‚ Dias Coelho','Portuguˆs');
CREATE TABLE editora(ide integer primary key, nome text);
INSERT INTO "editora" VALUES(1,'SPI - Principia');
INSERT INTO "editora" VALUES(2,'Edi‡äes UniversidadeFernando Pessoa');
INSERT INTO "editora" VALUES(3,'Edi‡äes GestKnowing');
INSERT INTO "editora" VALUES(4,'VDM - Verlag Dr. Muller');
INSERT INTO "editora" VALUES(5,'S¡labo');
CREATE TABLE escrito(esc integer primary key autoincrement,idl integer, ida
integer);
INSERT INTO "escrito" VALUES(1,1,1);
INSERT INTO "escrito" VALUES(2,1,2);
INSERT INTO "escrito" VALUES(3,2,1);
INSERT INTO "escrito" VALUES(4,3,3);
INSERT INTO "escrito" VALUES(5,3,1);
INSERT INTO "escrito" VALUES(6,3,4);
INSERT INTO "escrito" VALUES(7,4,1);
INSERT INTO "escrito" VALUES(8,4,5);
INSERT INTO "escrito" VALUES(9,5,1);
INSERT INTO "escrito" VALUES(10,5,5);
INSERT INTO "escrito" VALUES(11,6,1);
INSERT INTO "escrito" VALUES(12,7,3);
INSERT INTO "escrito" VALUES(13,7,1);
INSERT INTO "escrito" VALUES(14,7,4);
INSERT INTO "escrito" VALUES(15,7,6);
INSERT INTO "escrito" VALUES(16,8,1);
INSERT INTO "escrito" VALUES(17,9,7);
INSERT INTO "escrito" VALUES(18,9,1);
INSERT INTO "escrito" VALUES(19,10,1);
INSERT INTO "escrito" VALUES(20,11,8);
INSERT INTO "escrito" VALUES(21,11,1);
INSERT INTO "escrito" VALUES(22,11,9);
INSERT INTO "escrito" VALUES(23,12,10);
INSERT INTO "escrito" VALUES(24,12,1);
CREATE TABLE publicado(pubinteger primary key autoincrement,idl integer, ide
integer);
INSERT INTO "publicado"VALUES(1,1,1);
INSERT INTO "publicado"VALUES(2,2,2);
INSERT INTO "publicado"VALUES(3,3,2);
INSERT INTO "publicado"VALUES(4,4,2);
INSERT INTO "publicado"VALUES(5,5,2);
INSERT INTO "publicado"VALUES(6,6,1);
INSERT INTO "publicado"VALUES(7,7,2);
INSERT INTO "publicado"VALUES(8,8,1);
INSERT INTO "publicado"VALUES(9,9,3);
INSERT INTO "publicado"VALUES(10,10,4);
INSERT INTO "publicado"VALUES(11,11,2);
INSERT INTO "publicado"VALUES(12,12,5);
CREATE TABLE compra(cmp integer primary key autoincrement,idl integer, valor
real, data date);
INSERT INTO "compra" VALUES(1,1,15.0,'jan 12 2004');
INSERT INTO "compra" VALUES(2,2,12.0,'set 11 2003');
INSERT INTO "compra" VALUES(3,3,10.0,'out 20 2003');
INSERT INTO "compra" VALUES(4,4,7.0,'apr 20 2004');
INSERT INTO "compra" VALUES(5,5,14.0,'jun 15 2004');
INSERT INTO "compra" VALUES(6,6,15.0,'dez 12 2004');
INSERT INTO "compra" VALUES(7,7,10.0,'out 26 2003');
INSERT INTO "compra" VALUES(8,8,15.0,'dez 10 2006');
INSERT INTO "compra" VALUES(9,9,15.0,'mar 10 2007');
INSERT INTO "compra" VALUES(10,10,75.0,'fev 5 2009');
INSERT INTO "compra" VALUES(11,11,10.0,'jun 18 2012');
INSERT INTO "compra" VALUES(12,12,24.0,'set 10 2012');
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence"VALUES('escrito',24);
INSERT INTO "sqlite_sequence"VALUES('publicado',12);
INSERT INTO "sqlite_sequence"VALUES('compra',12);
COMMIT;
Alguns exercícios com base no
comando Select
• Quantas compras estão registadas?
– select count(*) from compra;
• Qual o valor total dos livros comprados?
– select sum(valor) from compra;
• Qual o valor mínimo de compra registado?
– select min(valor) from compra;
• Qual o valor máximo de compra registado?
– select max(valor) from compra;
• Diferença entre o maior e o menor valor de compra?
– select max(valor)-min(valor) from compra;
• Valor médio das compras registadas?
– select sum(valor)/count(*) from compra;
…ou (o resultado é igual, mas exige o uso de menos funções
– select avg(valor) from compra;
Mais alguns exercícios…
• Listar os títulos adquiridos por ordem crescente de valor?
– select titulo, valor, data from compra, livro where
compra.idl=livro.idl order by valor;
– …e por ordem decrescente?
select titulo, valor, data from compra, livro where
compra.idl=livro.idl order by valor desc;
– …e ordenados por data mais recente, primeiro?
select titulo, valor, data from compra, livro where
compra.idl=livro.idl order by data desc;
…saiu estranho o output? Tentar colocando antes do comando
SQL, o comando .width 30 10 10
– …e listar os titulos cujo valor de compra é de menos de 14 euros
select titulo, valor, data from compra, livro where
compra.idl=livro.idl and valor < 14 order by data desc;
Mais alguns exercícios…
• Listar os títulos existentes, indicando o número de anos de
antiguidade
– select titulo, valor, date(‘now’)-data from compra, livro where
compra.idl=livro.idl order by data desc;
– …e o número médio de anos das compras efetuadas?
Select avg(date)’now’)-data) from compra, livro where
compra.idl=livro.idl;
• Listar por ordem mais recente, os títulos de todas as
compras realizadas de valor maior que 14 euros e cuja
antiguidade seja menor ou igual a 5 anos
– Select titulo, valor from compra, livro where compra.idl=livro
and valor > 14 and (date(‘now’)-data) <= 5 order by data desc
Mais alguns exercícios…
• Listar, para todos os autores, os respetivos títulos e editoras em que
publicaram
– select autor.nome, titulo, editora.nome from livro, autor, editora, escrito,
publicado where escrito.idl=livro.idl and escrito.ida=autor.ida and
publicado.idl=livro.idl and publicado.ide=editora.ide order by autor.nome;
• Listar, para todos os autores, o número de livros que publicaram e que
estão na base de dados
– select autor.nome, count(*) from autor, escrito where escrito.ida=autor.ida
group by escrito.ida order by autor.nome;
– …ordenada pelo número de publicações…
select autor.nome, count(*) from autor, escrito where escrito.ida=autor.ida
group by escrito.ida order by count(*);
• Listar, para todos os livros, o número de autores da obra
– select titulo, count(*) from livro, autor, escrito where autor.ida=escrito.idl and
livro.idl=escrito.idl group by livro.idl order by titulo;
– …ordenar as obras pelo número crescente de autores
select titulo, count(*) from livro, autor, escrito where autor.ida=escrito.idl and
livro.idl=escrito.idl group by livro.idl order by count(*);
Desafio: tarefa 4
(resolver as seguintes consultas)
• Listar os livros disponíveis, indicando Titulo, editora, preço e isbn
• Listar as línguas das obras disponíveis, indicando o número de obras associadas a
cada uma das línguas existentes
• Contar o número de livros existentes
• Contar o número de livros existentes por ano de compra
• Listar as editoras existentes, indicando o número de livros por cada editora
• Contar o número de diferentes autores, existentes na base de dados
• Contar o número de nacionalidades distintas
• Listar as nacionalidades, indicando o número de autores para cada uma delas
• Listar as editoras, indicando o número de livros publicados por cada
• Indicar o valor de livros comprados por autor
• Indicar o valor de livros comprados por editora
• Indicar o valor de livros comprados por ano
• Indicar o número de compras efetuadas por ano
• Listar as compras efetuadas por editora
• Listar as compras efetuadas por língua e ordenadas por editora

Mais conteúdo relacionado

Mais procurados

Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosRoney Sousa
 
Redes de Computadores
Redes de ComputadoresRedes de Computadores
Redes de ComputadoresFábio Eliseu
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalDaniel Brandão
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
BD I - Aula 04 A - Resumo MER e Mapeamento Relacional
BD I - Aula 04 A - Resumo MER e Mapeamento RelacionalBD I - Aula 04 A - Resumo MER e Mapeamento Relacional
BD I - Aula 04 A - Resumo MER e Mapeamento RelacionalRodrigo Kiyoshi Saito
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoInstituto CENTEC
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticosCentro Paula Souza
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01Franklin Matos Correia
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 

Mais procurados (20)

Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - Algoritmos
 
Redes de Computadores
Redes de ComputadoresRedes de Computadores
Redes de Computadores
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Pensamento computacional
Pensamento computacional Pensamento computacional
Pensamento computacional
 
Programação Web com HTML e CSS
Programação Web com HTML e CSSProgramação Web com HTML e CSS
Programação Web com HTML e CSS
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Algoritmo 04 - Estruturas de decisão
 Algoritmo 04 - Estruturas de decisão Algoritmo 04 - Estruturas de decisão
Algoritmo 04 - Estruturas de decisão
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
BD I - Aula 04 A - Resumo MER e Mapeamento Relacional
BD I - Aula 04 A - Resumo MER e Mapeamento RelacionalBD I - Aula 04 A - Resumo MER e Mapeamento Relacional
BD I - Aula 04 A - Resumo MER e Mapeamento Relacional
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de Programação
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 

Destaque

Um exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumniUm exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumniLuis Borges Gouveia
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 
Privacidade, CiberSegurança e Regulamentação Económica
Privacidade, CiberSegurança e Regulamentação EconómicaPrivacidade, CiberSegurança e Regulamentação Económica
Privacidade, CiberSegurança e Regulamentação EconómicaLuis Borges Gouveia
 
Introducao Base Dados I
Introducao  Base  Dados  IIntroducao  Base  Dados  I
Introducao Base Dados Iguest3118b2
 
1º trabalho base dados
1º trabalho base dados1º trabalho base dados
1º trabalho base dadosessa
 
Conceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosConceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosPatrícia Morais
 
Do gastador ao pao duro
Do gastador ao pao duroDo gastador ao pao duro
Do gastador ao pao durovitadenarium
 
3 bases tecnológicas segunda aula 18 03
3 bases tecnológicas segunda aula 18 033 bases tecnológicas segunda aula 18 03
3 bases tecnológicas segunda aula 18 03Agronegócios
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros PassosRomualdo Andre
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Gustavo Ciello
 
Lista de exercícios sobre soma de P.A.
Lista de exercícios sobre soma de P.A.Lista de exercícios sobre soma de P.A.
Lista de exercícios sobre soma de P.A.Lucas Azevedo
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidCaelum
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidFernando Anselmo
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoRademaker Siena
 

Destaque (20)

Base de dados: desafio 1
Base de dados: desafio 1Base de dados: desafio 1
Base de dados: desafio 1
 
Base de dados desafio 2
Base de dados desafio 2Base de dados desafio 2
Base de dados desafio 2
 
Bases De Dados
Bases De DadosBases De Dados
Bases De Dados
 
Um exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumniUm exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumni
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 
Privacidade, CiberSegurança e Regulamentação Económica
Privacidade, CiberSegurança e Regulamentação EconómicaPrivacidade, CiberSegurança e Regulamentação Económica
Privacidade, CiberSegurança e Regulamentação Económica
 
SGBD
SGBDSGBD
SGBD
 
Introducao Base Dados I
Introducao  Base  Dados  IIntroducao  Base  Dados  I
Introducao Base Dados I
 
1º trabalho base dados
1º trabalho base dados1º trabalho base dados
1º trabalho base dados
 
Conceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosConceitos essenciais de bases de dados
Conceitos essenciais de bases de dados
 
Do gastador ao pao duro
Do gastador ao pao duroDo gastador ao pao duro
Do gastador ao pao duro
 
3 bases tecnológicas segunda aula 18 03
3 bases tecnológicas segunda aula 18 033 bases tecnológicas segunda aula 18 03
3 bases tecnológicas segunda aula 18 03
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros Passos
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)
 
Lista de exercícios sobre soma de P.A.
Lista de exercícios sobre soma de P.A.Lista de exercícios sobre soma de P.A.
Lista de exercícios sobre soma de P.A.
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google Android
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o Android
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 

Semelhante a Exemplo e caso prático do uso de base de dados

Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sqlrobinhoct
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Osny Pereira Filho
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistenciaRoberson Alves
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Artigo data warehouse bd ii - 2015-1 a
Artigo data warehouse   bd ii - 2015-1 aArtigo data warehouse   bd ii - 2015-1 a
Artigo data warehouse bd ii - 2015-1 aDarlene Coelho
 
Artigo data warehouse bd ii - 2015-1
Artigo data warehouse   bd ii - 2015-1Artigo data warehouse   bd ii - 2015-1
Artigo data warehouse bd ii - 2015-1Darlene Coelho
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 

Semelhante a Exemplo e caso prático do uso de base de dados (20)

Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
Python 04
Python 04Python 04
Python 04
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sql
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Apostila sqlserver65v1a
Apostila sqlserver65v1aApostila sqlserver65v1a
Apostila sqlserver65v1a
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Artigo data warehouse bd ii - 2015-1 a
Artigo data warehouse   bd ii - 2015-1 aArtigo data warehouse   bd ii - 2015-1 a
Artigo data warehouse bd ii - 2015-1 a
 
Artigo data warehouse bd ii - 2015-1
Artigo data warehouse   bd ii - 2015-1Artigo data warehouse   bd ii - 2015-1
Artigo data warehouse bd ii - 2015-1
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 

Mais de Luis Borges Gouveia

A Sala de Aula como um espaço de oportunidade num tempo pós pandémico
A Sala de Aula como um espaço de oportunidade num tempo pós pandémicoA Sala de Aula como um espaço de oportunidade num tempo pós pandémico
A Sala de Aula como um espaço de oportunidade num tempo pós pandémicoLuis Borges Gouveia
 
Sharing ongoing research from *TRS group on ICT for teaching and learning
Sharing ongoing research from *TRS group on ICT for teaching and learningSharing ongoing research from *TRS group on ICT for teaching and learning
Sharing ongoing research from *TRS group on ICT for teaching and learningLuis Borges Gouveia
 
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...Luis Borges Gouveia
 
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...Luis Borges Gouveia
 
Inteligência Artificial e o seu uso em contexto militar
Inteligência Artificial e o seu uso em contexto militarInteligência Artificial e o seu uso em contexto militar
Inteligência Artificial e o seu uso em contexto militarLuis Borges Gouveia
 
Curadoria Digital de Conteúdo para Educação a Distância
Curadoria Digital de Conteúdo para Educação a DistânciaCuradoria Digital de Conteúdo para Educação a Distância
Curadoria Digital de Conteúdo para Educação a DistânciaLuis Borges Gouveia
 
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...Luis Borges Gouveia
 
Livro de Resumos do Seminário PhD CI - SiTEGI 2020
Livro de Resumos do Seminário PhD CI - SiTEGI 2020Livro de Resumos do Seminário PhD CI - SiTEGI 2020
Livro de Resumos do Seminário PhD CI - SiTEGI 2020Luis Borges Gouveia
 
O Digital e um espaço de oportunidades num oceano de desafios
O Digital e um espaço de oportunidades num oceano de desafiosO Digital e um espaço de oportunidades num oceano de desafios
O Digital e um espaço de oportunidades num oceano de desafiosLuis Borges Gouveia
 
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...Luis Borges Gouveia
 
A oportunidade de um novo normal no ensino superior
A oportunidade de um novo normal no ensino superiorA oportunidade de um novo normal no ensino superior
A oportunidade de um novo normal no ensino superiorLuis Borges Gouveia
 
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...Luis Borges Gouveia
 
Transformação digital e gestão da informação
Transformação digital e gestão da informaçãoTransformação digital e gestão da informação
Transformação digital e gestão da informaçãoLuis Borges Gouveia
 
O momento da Transformação digital
O momento da Transformação digitalO momento da Transformação digital
O momento da Transformação digitalLuis Borges Gouveia
 
Emerging alternatives to leadership and governance in a digital ecosystem
Emerging alternatives to leadership and governance in a digital ecosystemEmerging alternatives to leadership and governance in a digital ecosystem
Emerging alternatives to leadership and governance in a digital ecosystemLuis Borges Gouveia
 
O lugar da leitura como espaço de convergência entre o real e o digital
O lugar da leitura como espaço de convergência entre o real e o digitalO lugar da leitura como espaço de convergência entre o real e o digital
O lugar da leitura como espaço de convergência entre o real e o digitalLuis Borges Gouveia
 
Responder a um contexto digital nas IES
Responder a um contexto digital nas IESResponder a um contexto digital nas IES
Responder a um contexto digital nas IES Luis Borges Gouveia
 

Mais de Luis Borges Gouveia (20)

A Sala de Aula como um espaço de oportunidade num tempo pós pandémico
A Sala de Aula como um espaço de oportunidade num tempo pós pandémicoA Sala de Aula como um espaço de oportunidade num tempo pós pandémico
A Sala de Aula como um espaço de oportunidade num tempo pós pandémico
 
Sharing ongoing research from *TRS group on ICT for teaching and learning
Sharing ongoing research from *TRS group on ICT for teaching and learningSharing ongoing research from *TRS group on ICT for teaching and learning
Sharing ongoing research from *TRS group on ICT for teaching and learning
 
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...
Casos de Estudo e Estudos de Caso. Práticas e Operacionalização: como resolve...
 
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...
Contribuições para o uso da MVR - Matriz de Valor e Relevância - Indicadores ...
 
Inteligência Artificial e o seu uso em contexto militar
Inteligência Artificial e o seu uso em contexto militarInteligência Artificial e o seu uso em contexto militar
Inteligência Artificial e o seu uso em contexto militar
 
Eventos PhD CI SiTEGI UFP
Eventos PhD CI SiTEGI UFPEventos PhD CI SiTEGI UFP
Eventos PhD CI SiTEGI UFP
 
Information Science PhD event
Information Science PhD eventInformation Science PhD event
Information Science PhD event
 
Curadoria Digital de Conteúdo para Educação a Distância
Curadoria Digital de Conteúdo para Educação a DistânciaCuradoria Digital de Conteúdo para Educação a Distância
Curadoria Digital de Conteúdo para Educação a Distância
 
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...
Proposta de um Modelo de Matriz de Correlação e Relevância – ODS e indicadore...
 
Livro de Resumos do Seminário PhD CI - SiTEGI 2020
Livro de Resumos do Seminário PhD CI - SiTEGI 2020Livro de Resumos do Seminário PhD CI - SiTEGI 2020
Livro de Resumos do Seminário PhD CI - SiTEGI 2020
 
O Digital e um espaço de oportunidades num oceano de desafios
O Digital e um espaço de oportunidades num oceano de desafiosO Digital e um espaço de oportunidades num oceano de desafios
O Digital e um espaço de oportunidades num oceano de desafios
 
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...
Uma análise prévia do ensino de emergência em tempos de pandemia e o impacto ...
 
A oportunidade de um novo normal no ensino superior
A oportunidade de um novo normal no ensino superiorA oportunidade de um novo normal no ensino superior
A oportunidade de um novo normal no ensino superior
 
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...
CULTURA DIGITAL DEFINIÇÃO E DIMENSÕES CONSTITUTIVAS: uma proposta para mapear...
 
Transformação digital e gestão da informação
Transformação digital e gestão da informaçãoTransformação digital e gestão da informação
Transformação digital e gestão da informação
 
O momento da Transformação digital
O momento da Transformação digitalO momento da Transformação digital
O momento da Transformação digital
 
Emerging alternatives to leadership and governance in a digital ecosystem
Emerging alternatives to leadership and governance in a digital ecosystemEmerging alternatives to leadership and governance in a digital ecosystem
Emerging alternatives to leadership and governance in a digital ecosystem
 
Sobre Cultura Digital
Sobre Cultura DigitalSobre Cultura Digital
Sobre Cultura Digital
 
O lugar da leitura como espaço de convergência entre o real e o digital
O lugar da leitura como espaço de convergência entre o real e o digitalO lugar da leitura como espaço de convergência entre o real e o digital
O lugar da leitura como espaço de convergência entre o real e o digital
 
Responder a um contexto digital nas IES
Responder a um contexto digital nas IESResponder a um contexto digital nas IES
Responder a um contexto digital nas IES
 

Último

GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfElianeElika
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 

Último (20)

GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 

Exemplo e caso prático do uso de base de dados

  • 1. Um exemplo do uso de bases de dados relacionais SQLite e a exploração SQL Luís Borges Gouveia lmbg@ufp.edu.pt V2.1, Fevereiro de 2016
  • 2. Para as práticas • Utilização do um SGBD relacional – http://www.sqlite.org – Software livre, open source e sem custos, de domínio público (opensource, freeware, public domain) – Disponível para os sistemas operativos: Linux, MS Windows e MAC OS – Permite a criação de bases de dados de fácil utilização e é adotado em inúmeras aplicações: • Entre outras: Dropbox, Firefox, Skype e Adobe Acrobat – Motor de base de dados fiável e de pequena dimensão
  • 3. Iniciar o SQLite • O SQLite é um SGBD de interface de linha de comando (baseado num só ficheiro executável que funciona isolado) que é muito fácil de instalar e usar (não necessita de servidor ou de um cliente) – MS Windows: ir para http://www.sqlite.org/download.html e considerar a sessão Precompiled Binaries for Windows. Descarregar o ficheiro .zip do link command-line shell (não o DLL ou o da analysis). Extrair o ficheiro sqlite3.exe e colocar o mesmo onde for pretendido – o desktop pode ser um local. Basta agora um duplo clique no ficheiro extraído para ser executado – MAC OS X: ir para http://www.sqlite.org/download.html e considerar a sessão Precompiled Binaries for Mac OS X. Descarregar o ficheiro .zip file do link command-line shell (não o link analysis). Extrair o ficheiro sqlite3 e colocar o mesmo onde for pretendido – o desktop pode ser um local. Basta agora um duplo clique no ficheiro extraído para ser executado
  • 4. A escolha do executável correto
  • 5. Depois de extrair o ficheiro… • Aspeto do ícone do executável SQLite • Aspeto da janela da linha de comando
  • 7. Reutilizar bases de dados no SQLite… • Depois de utilizar o SGBD e para concluir a sessão, deve utilizar o comando '.exit‘ (ou ‘.quit’ que, aparentemente, é o mesmo…) – Tenha em atenção que o estado da base de dados não é gravado entre sessões, pelo que será necessário repetir os comandos e carregar os dados novamente, para cada sessão – Claro que é possível forçar o SQL a manter o estado de base dados entre sessões • Para garantir a preservação de estado entre sessões, o SQLite pode ser executado tendo como argumento a indicação da base dados que se pretende abrir – Pode ser utilizada a linha de comando do sistema operativo e executar o SQLite com indicação do nome do ficheiro para a base de dados a criar ou a utilizar: SQLite3 nome_basedados (exemplo: sqlite3 teste.db) – Este comando força o SQLite a abrir um ficheiro onde contém a base dados com o nome indicado. Caso o ficheiro ainda não exista, cria um. O estado da base de dados irá sendo gravado e pode ser reutilizado depois
  • 8. Para poder lançar o Sqlite com um ficheiro para persistência de dados… • É necessário lançar uma janela de sessão em ambiente de linha de comando ou MS DOS – Botão da direita, no menu Windows e selecionar “executar” ou “procurar” – Introduzir “cmd” (cria uma janela de linha de comandos, para poder invocar o SGBD com atributos)
  • 9. Interagir no SQLite • Uma vez iniciado o SQLite, existem três opções para correr consultas: – teclados diretamente, um de cada vez, usando a linha de comando – Copiados e colocados (copy & paste) de um outro local, na linha de comando – Executados de um ficheiro externo (script)
  • 10. Uso da linha de comando • Experimentar e obter a resposta, de comando a comando – Comandos SQLite: iniciados por um ponto e listados em .help – Comandos SQL, de acordo com a norma e finalizados por ; (ponto e vírgula) • Um exemplo de um manual sobre a 4GL SQL para o SQLite (http://zetcode.com/databases/sqlitetutorial/)
  • 11. Copiar e colar na linha de comando • uma forma fácil de replicar comandos de linha, a partir de manuais ou da produção de textos em processadores de texto ou outros editores mais evoluídos, é possível e até desejável – Selecionar e copiar o texto e, na janela de comando, colar
  • 12. Copiar e colar na linha de comando • Para assegurar que é possível realizar a operação de copiar e colar numa janela de comando, é necessário garantir que a opção de modo de edição rápida esteja selecionada (na barra de título deve escolher a opção Propriedades do menu acionado pela tecla direita do rato)
  • 13. Executar um ficheiro de script • uma forma clássica de reproduzir e correr sequências complexas de comandos é a utilização de scripts. O SQLite facilita a sua leitura por via do comando ‘.read’ .read primeiroSQLscript.sql – Em que o ficheiro de texto de nome primeiroSQLscript.sql está colocado no diretório do executável SQLite3 e contém o script a correr /* As duas primeiras linhas formatam os resultados do comando SELECT */ /* Para obter uma lista de comandos específicos do SQLite, digite '.help' */ .mode columns .headers on .nullvalue NULL drop table if exists Tabela; create table Tabela (Atributo1 text, Atributo2 text); insert into Tabela values ('Olá,', 'mundo!'); select * from Tabela;
  • 14. Considere o seguinte contexto • Existe a necessidade de registo de uma pequena coleção de livros associada a uma biblioteca pessoal – Pretende-se o registo de livros, indicando o respetivo título, ISBN e língua em que está escrito – É necessário associar os respetivos autores, considerando o seu nome e nacionalidade – Deve ser igualmente registada a editora (nome) – Deve ser considerado o registo de compra, indicando o livro, o valor e a data de aquisição – Adicionalmente, as relações de quem escreveu o livro (associando o livro e o autor), quem publicou (associando o livro e a editora)
  • 15. Um modelo E-R do contexto proposto • Consideram-se: – quatro entidades: editora, livro, autor e compra – Três relações binárias: publicado, escrito e pago • Publicado: uma editora publica vários livros e um livro é publicado por várias editoras • Escrito: um livro é escrito por vários autores e um autor escreve vários livros • Pago: um livro é pago numa compra e uma compra paga um livro
  • 16. Esquema relacional do contexto • Livro (idl, titulo, lingua, isbn) • Autor (ida, nome, nacionalidade) • Editora (ide, nome) • Escrito (idl, ida) • Publicado (idl, ide) • Compra (cmp, idl, valor, data)
  • 17. Criar a base de dados… • Na linha de comando do SO – Sqlite3 biblio.db • Criar a tabela Livro (idl, título, língua, isbn) – Create table livro(idl integer primary key, titulo text, lingua text, isbn text); • Criar a tabela Autor (ida, nome, nacionalidade) – Create table autor(ida integer primary key, nome text, nacionalidade text); • Criar a tabela Editora (ide, nome) – Create table editora(ide integer primary key, nome text); • Criar a tabela Escrito (idl, ida) – Create table escrito(esc integer primary key autoincrement, idl integer, ida integer); • Criar a tabela Publicado (idl, ide) – Create table publicado(pub integer primary key autoincrement, idl integer, ide integer); • Criar a tabela Compra (cmp, idl, valor, data) – Create table compra(cmp integer primary key autoincrement, idl integer, valor real, data date);
  • 18. Informação sobre a bd biblio.db • Testar os comandos: .databases (lista as bases de dados consideradas no ficheiro biblio.db), .tables (lista as tabelas associadas com a base de dados) e .schema (que lista o esquema das tabelas da base de dados)
  • 19. Teste do modelo criado • Para testar o modelo criado é tomada uma coleção de livros, conforme descrita em http://homepage.ufp.pt/lmbg/lg_livros.htm – Incluia em 2013, 12 livros – Foram adicionados mais 3 livros em 2015
  • 20.
  • 21. Inserir dados na base de dados • Inserir livros… [Livro (idl, título, língua, isbn)] – Insert into livro values (1, ‘Sistemas de Informação de Apoio à Gestão’, ‘Português’, ‘9728589433’); – Insert into livro values (2, ‘Cidades e Regiões Digitais: impacte nas cidades e nas pessoas’, ‘Português’, ‘9728830033’); – Insert into livro values (3, ‘Informática e Competências Tecnológicas para a Sociedade da Informação’, ‘Português’, ‘9728830041’); – Insert into livro values (4, ‘Readings in Information Society ’, ‘Inglês’, ‘9728830149’); – Insert into livro values (5, ‘Sociedade da Informação: balanço e implicações ’, ‘Português’, ‘9728830181’); – Insert into livro values (6, ‘O local e-government: a governação digital na autarquia’, ‘Português’, ‘9728589417’); – Insert into livro values (7, ‘Informática e Competências Tecnológicas para a Sociedade da Informação 2ed’, ‘Português’, ‘9728830300’); – Insert into livro values (8, ‘Negócio Electrónico - conceitos e perspectivas de desenvolvimento’, ‘Português’, ‘972858962X’); – Insert into livro values (9, ‘Gestão da Informação na Biblioteca Escolar ’, ‘Português’, ‘9789899533004’); – Insert into livro values (10, ‘A virtual environment to share knowledge’, ‘Inglês’, ‘9783639129861’); – Insert into livro values (11, ‘Ciência da Informação: contributos para o seu estudo’, ‘Português’, ‘9789896430900’); – Insert into livro values (12, ‘Repensar a Sociedade da Informação e do Conhecimento no Início do Século XXI’, ‘Português’, ‘9789726186953’); • Os dados de 2015… – Insert into livro values(13, ‘Gestão da Informação em Museus: uma contribuição para o seu estudo’, ‘Português’, ‘9789899901394’); – Insert into livro values(14, ‘Web 2.0 and Higher Education. A psychological perspective’, Inglês’, ‘9783659683466’); – Insert into livro values(15, ‘Contribuições para a discussão de um modelo de Governo Electrónico Local para Angola’ , ‘Português’, ‘9789899933200’);
  • 22. Inserir dados na base de dados • Inserir autores… [Autor (ida, nome, nacionalidade)] – Insert into autor values(1, ‘Luis Borges Gouveia’, ’Português’); – Insert into autor values(2, ‘João Ranito’, ’Português’); – Insert into autor values(3, ‘Nuno Magalhães Ribeiro’, ’Português’); – Insert into autor values(4, ‘Paulo Rurato’, ’Português’); – Insert into autor values(5, ‘Sofia Gaio’, ’Português’); – Insert into autor values(6, ‘Rui Moreira’, ’Português’); – Insert into autor values(7, ‘Margarida Bairrão’, ’Português’); – Insert into autor values(8, ‘Judite Gonçalves de Freitas’, ’Português’); – Insert into autor values(9, ‘António Borges Regedor’, ’Português’); – Insert into autor values(10, ‘José Dias Coelho’, ’Português’); • Dados de 2015 – Insert into autor values(11, ‘Paula Moura’, ‘Português’); – Insert into autor values(12, ‘Luis Cunha’, ‘Português’); – Insert into autor values(13, ‘Pereira Alfredo’, ‘Angolano’);
  • 23. Inserir dados na base de dados • Inserir editoras… [Editora (ide, nome)] – Insert into editora values(1, ‘SPI - Principia’); – Insert into editora values(2, ‘Edições Universidade Fernando Pessoa’); – Insert into editora values(3, ‘Edições GestKnowing’); – Insert into editora values(4, ‘VDM – Verlag Dr. Muller’); – Insert into editora values(5, ‘Sílabo’); • Dados de 2015 – Insert into editora values(6, ‘Green Lines Instituto’); – Insert into editora values(7, ‘Lambert Academic Publishing’); – Insert into editora values(8, ‘Kwigia Editora’);
  • 24. Inserir dados na base de dados • Associar livros a autores… [Escrito (idl, ida)] – Insert into escrito values(1, 1, 1); – Insert into escrito values(2, 1, 2); – Insert into escrito values(3, 2, 1); – Insert into escrito values(4, 3, 3); – Insert into escrito values(5, 3, 1); – Insert into escrito values(6, 3, 4); – Insert into escrito values(7, 4, 1); – Insert into escrito values(8, 4, 5); – Insert into escrito values(9, 5, 1); – Insert into escrito values(10, 5, 5); – Insert into escrito values(11, 6, 1); – Insert into escrito values(12, 7, 3); – Insert into escrito values(13, 7, 1); – Insert into escrito values(14, 7, 4); – Insert into escrito values(15, 7, 6); – Insert into escrito values(16, 8, 1); – Insert into escrito values(17, 9, 7); – Insert into escrito values(18, 9, 1); – Insert into escrito values(19, 10, 1); – Insert into escrito values(20, 11, 8); – Insert into escrito values(21, 11, 1); – Insert into escrito values(22, 11, 9); – Insert into escrito values(23, 12, 10); – Insert into escrito values(24, 12, 1); • Dados de 2015 – Insert into escrito values(25, 13, 11); – Insert into escrito values(26, 13, 1); – Insert into escrito values(27, 14, 1); – Insert into escrito values(28, 14, 12); – Insert into escrito values(29, 15, 13); – Insert into escrito values(30, 15, 1);
  • 25. Inserir dados na base de dados • Associar livros a editoras… [Publicado (idl, ide)] – Insert into publicado values(1, 1, 1); – Insert into publicado values(2, 2, 2); – Insert into publicado values(3, 3, 2); – Insert into publicado values(4, 4, 2); – Insert into publicado values(5, 5, 2); – Insert into publicado values(6, 6, 1); – Insert into publicado values(7, 7, 2); – Insert into publicado values(8, 8, 1); – Insert into publicado values(9, 9, 3); – Insert into publicado values(10, 10, 4); – Insert into publicado values(11, 11, 2); – Insert into publicado values(12, 12, 5); • Dados de 2015 – Insert into publicado values(13, 13, 6); – Insert into publicado values(14, 14, 7); – Insert into publicado values(15, 15, 8);
  • 26. Inserir dados na base de dados • Inserir compras… [Compra (cmp, idl, valor, data)] – Insert into compra values(1, 1, 15, ‘2004-12-12’); – Insert into compra values(2, 2, 12, ‘2003-11-12’); – Insert into compra values(3, 3, 10, ‘2003-10-20’); – Insert into compra values(4, 4, 7, ‘2004-04-20’); – Insert into compra values(5, 5, 14, ‘2004-06-15’); – Insert into compra values(6, 6, 15, ‘2004-12-12’); – Insert into compra values(7, 7, 10, ‘2003-10-26’); – Insert into compra values(8, 8, 15, ‘2006-12-10’); – Insert into compra values(9, 9, 15, ‘2007-03-10’); – Insert into compra values(10, 10, 75, ‘2009-02-05’); – Insert into compra values(11, 11, 10, ‘2012-06-18’); – Insert into compra values(12, 12, 24, ‘2012-09-10’); • Dados de 2015 – Insert into compra values(13, 13, 25, ‘2015-01-10’); – Insert into compra values(14, 14, 54, ‘2015-01-25’); – Insert into compra values(15, 15, 17, ‘2015-01-17’);
  • 27. Obter o esquema da base de dados • Obter o esquema da base de dados biblio, utilizando o comando .schema
  • 28. Obter uma cópia da base dados • De forma a poder replicar a estrutura e conteúdos da base de dados é possível obter a sequência de comandos SQL, atráves de .dump – Para obter a listagem num ficheiro de texto, deve ser redirecionado o output, com base no comando .output nome_do_ficheiro, antes do uso do comando .dump (após o comando, deve redirecionar novamente o output para o ecran, utilizando .output stdout) – O exemplo do dump da base de dados biblio.db, ao lado… PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE livro(idlinteger primary key, titulo text, lingua text, isbn text); INSERT INTO "livro" VALUES(1,'Sistemas de Informa‡Æo para GestÆo','Portuguˆs','9728589433'); INSERT INTO "livro" VALUES(2,'Cidades e RegiäesDigitais: impacte nas cidadese nas pessoas','Portuguˆs','9728830033'); INSERT INTO "livro" VALUES(3,'Inform tica e Competˆncias Tecnol¢gicas para a Sociedade daInforma‡Æo','Portuguˆs','9728830041'); INSERT INTO "livro" VALUES(4,'Readings in Information Society ','Inglˆs','9728830149'); INSERT INTO "livro" VALUES(5,'Sociedade da Informa‡Æo: balan‡o e implica‡äes ','Portuguˆs','9728830181'); INSERT INTO "livro" VALUES(6,'O local e-government: a governa‡Æo digitalna autarquia','Portuguˆs','9728589417'); INSERT INTO "livro" VALUES(7,'Inform tica e Competˆncias Tecnol¢gicas para a Sociedade daInforma‡Æo 2ed','Portuguˆs','9728830300'); INSERT INTO "livro" VALUES(8,'Neg¢cio Electr¢nico - conceitose perspectivasde desenvolvimento','Portuguˆs','972858962X'); INSERT INTO "livro" VALUES(9,'GestÆo da Informa‡Æo na Biblioteca Escolar ','Portuguˆs','9789899533004'); INSERT INTO "livro" VALUES(10,'A virtual environment to share knowledge','Inglˆs','9783639129861'); INSERT INTO "livro" VALUES(11,'Ciˆncia da Informa‡Æo: contributos para o seu estudo','Portuguˆs','9789896430900'); INSERT INTO "livro" VALUES(12,'Repensar a Sociedadeda Informa‡Æo e do Conhecimento no In¡cio do S‚culo XXI','Portuguˆs','9789726186953'); CREATE TABLE autor(ida integer primary key, nome text, nacionalidadetext); INSERT INTO "autor" VALUES(1,'Luis Borges Gouveia','Portuguˆs'); INSERT INTO "autor" VALUES(2,'JoÆo Ranito','Portuguˆs'); INSERT INTO "autor" VALUES(3,'Nuno MagalhÆesRibeiro','Portuguˆs'); INSERT INTO "autor" VALUES(4,'Paulo Rurato','Portuguˆs'); INSERT INTO "autor" VALUES(5,'Sofia Gaio','Portuguˆs'); INSERT INTO "autor" VALUES(6,'Rui Moreira','Portuguˆs'); INSERT INTO "autor" VALUES(7,'Margarida BairrÆo','Portuguˆs'); INSERT INTO "autor" VALUES(8,'Judite Gon‡alves de Freitas','Portuguˆs'); INSERT INTO "autor" VALUES(9,'Ant¢nio Borges Regedor','Portuguˆs'); INSERT INTO "autor" VALUES(10,'Jos‚ Dias Coelho','Portuguˆs'); CREATE TABLE editora(ide integer primary key, nome text); INSERT INTO "editora" VALUES(1,'SPI - Principia'); INSERT INTO "editora" VALUES(2,'Edi‡äes UniversidadeFernando Pessoa'); INSERT INTO "editora" VALUES(3,'Edi‡äes GestKnowing'); INSERT INTO "editora" VALUES(4,'VDM - Verlag Dr. Muller'); INSERT INTO "editora" VALUES(5,'S¡labo'); CREATE TABLE escrito(esc integer primary key autoincrement,idl integer, ida integer); INSERT INTO "escrito" VALUES(1,1,1); INSERT INTO "escrito" VALUES(2,1,2); INSERT INTO "escrito" VALUES(3,2,1); INSERT INTO "escrito" VALUES(4,3,3); INSERT INTO "escrito" VALUES(5,3,1); INSERT INTO "escrito" VALUES(6,3,4); INSERT INTO "escrito" VALUES(7,4,1); INSERT INTO "escrito" VALUES(8,4,5); INSERT INTO "escrito" VALUES(9,5,1); INSERT INTO "escrito" VALUES(10,5,5); INSERT INTO "escrito" VALUES(11,6,1); INSERT INTO "escrito" VALUES(12,7,3); INSERT INTO "escrito" VALUES(13,7,1); INSERT INTO "escrito" VALUES(14,7,4); INSERT INTO "escrito" VALUES(15,7,6); INSERT INTO "escrito" VALUES(16,8,1); INSERT INTO "escrito" VALUES(17,9,7); INSERT INTO "escrito" VALUES(18,9,1); INSERT INTO "escrito" VALUES(19,10,1); INSERT INTO "escrito" VALUES(20,11,8); INSERT INTO "escrito" VALUES(21,11,1); INSERT INTO "escrito" VALUES(22,11,9); INSERT INTO "escrito" VALUES(23,12,10); INSERT INTO "escrito" VALUES(24,12,1); CREATE TABLE publicado(pubinteger primary key autoincrement,idl integer, ide integer); INSERT INTO "publicado"VALUES(1,1,1); INSERT INTO "publicado"VALUES(2,2,2); INSERT INTO "publicado"VALUES(3,3,2); INSERT INTO "publicado"VALUES(4,4,2); INSERT INTO "publicado"VALUES(5,5,2); INSERT INTO "publicado"VALUES(6,6,1); INSERT INTO "publicado"VALUES(7,7,2); INSERT INTO "publicado"VALUES(8,8,1); INSERT INTO "publicado"VALUES(9,9,3); INSERT INTO "publicado"VALUES(10,10,4); INSERT INTO "publicado"VALUES(11,11,2); INSERT INTO "publicado"VALUES(12,12,5); CREATE TABLE compra(cmp integer primary key autoincrement,idl integer, valor real, data date); INSERT INTO "compra" VALUES(1,1,15.0,'jan 12 2004'); INSERT INTO "compra" VALUES(2,2,12.0,'set 11 2003'); INSERT INTO "compra" VALUES(3,3,10.0,'out 20 2003'); INSERT INTO "compra" VALUES(4,4,7.0,'apr 20 2004'); INSERT INTO "compra" VALUES(5,5,14.0,'jun 15 2004'); INSERT INTO "compra" VALUES(6,6,15.0,'dez 12 2004'); INSERT INTO "compra" VALUES(7,7,10.0,'out 26 2003'); INSERT INTO "compra" VALUES(8,8,15.0,'dez 10 2006'); INSERT INTO "compra" VALUES(9,9,15.0,'mar 10 2007'); INSERT INTO "compra" VALUES(10,10,75.0,'fev 5 2009'); INSERT INTO "compra" VALUES(11,11,10.0,'jun 18 2012'); INSERT INTO "compra" VALUES(12,12,24.0,'set 10 2012'); DELETE FROM sqlite_sequence; INSERT INTO "sqlite_sequence"VALUES('escrito',24); INSERT INTO "sqlite_sequence"VALUES('publicado',12); INSERT INTO "sqlite_sequence"VALUES('compra',12); COMMIT;
  • 29. Alguns exercícios com base no comando Select • Quantas compras estão registadas? – select count(*) from compra; • Qual o valor total dos livros comprados? – select sum(valor) from compra; • Qual o valor mínimo de compra registado? – select min(valor) from compra; • Qual o valor máximo de compra registado? – select max(valor) from compra; • Diferença entre o maior e o menor valor de compra? – select max(valor)-min(valor) from compra; • Valor médio das compras registadas? – select sum(valor)/count(*) from compra; …ou (o resultado é igual, mas exige o uso de menos funções – select avg(valor) from compra;
  • 30. Mais alguns exercícios… • Listar os títulos adquiridos por ordem crescente de valor? – select titulo, valor, data from compra, livro where compra.idl=livro.idl order by valor; – …e por ordem decrescente? select titulo, valor, data from compra, livro where compra.idl=livro.idl order by valor desc; – …e ordenados por data mais recente, primeiro? select titulo, valor, data from compra, livro where compra.idl=livro.idl order by data desc; …saiu estranho o output? Tentar colocando antes do comando SQL, o comando .width 30 10 10 – …e listar os titulos cujo valor de compra é de menos de 14 euros select titulo, valor, data from compra, livro where compra.idl=livro.idl and valor < 14 order by data desc;
  • 31. Mais alguns exercícios… • Listar os títulos existentes, indicando o número de anos de antiguidade – select titulo, valor, date(‘now’)-data from compra, livro where compra.idl=livro.idl order by data desc; – …e o número médio de anos das compras efetuadas? Select avg(date)’now’)-data) from compra, livro where compra.idl=livro.idl; • Listar por ordem mais recente, os títulos de todas as compras realizadas de valor maior que 14 euros e cuja antiguidade seja menor ou igual a 5 anos – Select titulo, valor from compra, livro where compra.idl=livro and valor > 14 and (date(‘now’)-data) <= 5 order by data desc
  • 32. Mais alguns exercícios… • Listar, para todos os autores, os respetivos títulos e editoras em que publicaram – select autor.nome, titulo, editora.nome from livro, autor, editora, escrito, publicado where escrito.idl=livro.idl and escrito.ida=autor.ida and publicado.idl=livro.idl and publicado.ide=editora.ide order by autor.nome; • Listar, para todos os autores, o número de livros que publicaram e que estão na base de dados – select autor.nome, count(*) from autor, escrito where escrito.ida=autor.ida group by escrito.ida order by autor.nome; – …ordenada pelo número de publicações… select autor.nome, count(*) from autor, escrito where escrito.ida=autor.ida group by escrito.ida order by count(*); • Listar, para todos os livros, o número de autores da obra – select titulo, count(*) from livro, autor, escrito where autor.ida=escrito.idl and livro.idl=escrito.idl group by livro.idl order by titulo; – …ordenar as obras pelo número crescente de autores select titulo, count(*) from livro, autor, escrito where autor.ida=escrito.idl and livro.idl=escrito.idl group by livro.idl order by count(*);
  • 33. Desafio: tarefa 4 (resolver as seguintes consultas) • Listar os livros disponíveis, indicando Titulo, editora, preço e isbn • Listar as línguas das obras disponíveis, indicando o número de obras associadas a cada uma das línguas existentes • Contar o número de livros existentes • Contar o número de livros existentes por ano de compra • Listar as editoras existentes, indicando o número de livros por cada editora • Contar o número de diferentes autores, existentes na base de dados • Contar o número de nacionalidades distintas • Listar as nacionalidades, indicando o número de autores para cada uma delas • Listar as editoras, indicando o número de livros publicados por cada • Indicar o valor de livros comprados por autor • Indicar o valor de livros comprados por editora • Indicar o valor de livros comprados por ano • Indicar o número de compras efetuadas por ano • Listar as compras efetuadas por editora • Listar as compras efetuadas por língua e ordenadas por editora