Você está na página 1de 182

Humanidades Digitais: introdução a

bancos de dados e SQL para pesquisa em


humanidades
João Leopoldo e Silva
Historiador (PUC-SP)
Ms. História Social (PUC-SP)
Ms. Ciência da Informação (ECA-USP)
Pesquisador do CEHAL PUC-SP
Governança de Dados (ZUP IT Innovation)

https://www.linkedin.com/in/joao-leopoldo-e-silva/
DIA 01: 12/04
Humanidades Digitais e bancos de dados

DIA 02: 13/04


Introdução à linguagem SQL: criação de estruturas de
dados e alimentação de tabelas

DIA 03: 14/04


Introdução à linguagem SQL: extração de relatórios
ENTRETANTO, CONTUDO, TODAVIA
....

ANTES
DE
COMEÇARMOS
...
1. O que vamos aprender não é trivial

2. Meu objetivo é introduzir vocês com o conhecimento que eu


queria ter tido no começo

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


1. O que vamos aprender não é trivial

2. Meu objetivo é introduzir vocês com o conhecimento que eu


queria ter tido no começo dos meus estudos em TI

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


1. O que vamos aprender não é trivial

2. Meu objetivo é introduzir vocês com o conhecimento que eu


queria ter tido no começo dos meus estudos em TI

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


1. O que vamos aprender não é trivial

2. Meu objetivo é introduzir vocês com o conhecimento que eu


queria ter tido no começo dos meus estudos em TI

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


IMPORTANTE:

SQL É UMA LINGUAGEM

ALGUMAS COISAS “SÃO POSTAS”, isto é,


PRECISAMOS “SABER”

PARA NÓS:
TECNOLOGIA É UM MEIO E NÃO UM FIM
O que eu já fiz? O que eu vi na TI?
Arte-educação
Arquivo Desenvolver programas de
Iniciação científica computador
Projetos de pesquisa
Grupos de pesquisa Analisar dados em pesquisas
Mestrados
Analista de governança de dados Mercado de trabalho
O que eu já fiz? O que eu vi na TI?
Arte-educação
Arquivo Desenvolver programas de
Iniciação científica computador
Projetos de pesquisa
Grupos de pesquisa Analisar dados em pesquisas
Mestrados
Analista de governança de dados Mercado de trabalho
DIRETO AO ASSUNTO:

TEORIA:
PRÁTICA:
Humanidades Digitais (1)
Instalar um banco de dados (1)
O que é um banco de dados (1)
Implementar uma estrutura de dados (2)
Ler uma estrutura de dados (2)
Manipular uma arquitetura de dados (2)
Planejar uma estrutura de dados (2)
Alimentar tabelas (2)
Escrever linguagem SQL (2 e 3)
Extrair relatórios (2 e 3)
Sobre bancos de dados:
https://www.ime.usp.br/~jef/apostila.pdf

Cursos de SQL:
https://www.udemy.com/course/aprenda-sql-do-zero/
https://www.udemy.com/course/the-complete-sql-bootcamp/

Sites legais:
https://www.postgresql.org/
https://www.postgresqltutorial.com/
https://www.w3schools.com/sql/
DIA 01: 12/04
Humanidades Digitais e bancos de dados

DIA 02: 13/04


Introdução à linguagem SQL: criação de estruturas de
dados e alimentação de tabelas

DIA 03: 14/04


Introdução à linguagem SQL: extração de relatórios
DIA 01: 12/04
Humanidades Digitais e bancos de dados

- Humanidades Digitais
- Bancos de dados
- Instalação do PostgreSQL
- Trocar umas ideias
Instalação do
PostgreSQL

Site oficial PostgreSQL


https://www.postgresql.org/

Site direto para download


https://www.postgresql.org/download/windows/
https://www.enterprisedb.com/downloads/postgres-
postgresql-downloads
Humanidades

1 Digitais
(digital humanities)
Introdução
The Economist (2017): a commodity mais valiosa do
mundo não é mais o petróleo, mas a informação

● Séc. XXI: acesso à informação adquire


importância estrutural

● Casos recentes: eleições 2018; vazamento de


dados (NSA, Vaza-jato…), fake News 2020/21...
eleições 2022?

● Trabalho com grande volumes de informação


THE ECONOMIST. The world’s most valuable resource is no
longer oil, but data. 2017.
(Big data)

○ Armazenamento e análise em tempo ao vivo


○ Predição (Inteligência Artificial / Machine
Learning)
BUZZWORDS
BIG DATA Inteligência Artificial
● Grandes conjuntos ou quantidade de
conjuntos de dados estruturados, ● Robô vs Código
semi-estruturados ou não- ● AI = robô composto por
estruturados sequência de códigos

● Necessária metodologia de trabalho e ● Código que alguém fez


ferramentas para limpar, organizar e > Quem? > Por que? > Como?
analisar
○ Volume ● Criação =/= uso
○ Velocidade
○ Variedade ● Identificação de padrões - análise
○ Veracidade preditiva
○ Valor
Introdução

TERRITÓRIO: ação humana vs. digital (identidades)

1. Como esta interação acontece (humano vs humano)?

2. O que é produzido nesta interação (humano vs máquina)?

Autor(a) desconhecido(a)
● PERSPECTIVA 1): as ciências humanas não podem ficar
presas ao estudo e relacionamento de informações presentes
somente na plataforma física do papel

● PERSPECTIVA 2): cabe aos humanistas se apropriarem de


métodos, instrumentos e meios utilizados pelas ciências da
computação de modo a agilizar seu trabalho e desenvolver
outras perspectivas de análise
Introdução
• Como melhorar
instrumentos de pesquisa
em acervos?

Autor(a) desconhecido(a)
• Como melhorar o acesso à
informação e ao
conhecimento?

• Como analisar o impacto


de políticos em redes
sociais no “mundo real”?
CONHECIMENTO

Análise

INFORMAÇÃO

Organizaçã
o
DADO

Informação pode ser compreendida como base para tomada de ação,


como recurso e fundamentação para construção de conhecimento
(Saracevic, 1999, apud ARAUJO, 2014, P.18)
Organização Análise

CONHECIMENTO
DADO INFORMAÇÃO CONHECIMENTO
PARA POLÍTICAS
PÚBLICAS
O que é ‘Humanidades Digitais’?

LEOPOLDO E SILVA, J. Livro-computador (inspiração Manifesto 2.0). 2019


As humanidades digitais, indo direto ao
ponto, é a aplicação de princípios,
processos e mecanismos
computacionais aos textos de
humanidades - e aqui eu uso “textos”
para se referir a todas as formas de
formas culturais materializadas, como
imagens, livros, artigos, som, filme,
vídeo e assim por diante (BERRY, 2014)
O que é ‘Humanidades Digitais’?

LEOPOLDO E SILVA, J. Livro-computador (inspiração Manifesto 2.0). 2019


• Caráter exploratório e
transdisciplinar
• Conhecimento compartilhado

• Desafios:
“Desenvolver”, “Criar”, “Gerar”,
“Arquitetar”

• Tarefa-meio (uso de ferramenta)


• Tarefa-fim (construção de
ferramenta)
O que é ‘Humanidades Digitais’?

HUMANIDADES

● Compreender processos computacionais


● Aprender linguagens de programação

CIÊNCIAS DA COMPUTAÇÃO

● Entender a dinâmica das ciências humanas


O que é ‘Humanidades Digitais’?

HUMANIDADES
HUMANIDADES DIGITAIS
● Compreender processos computacionais
● Aprender linguagens de programação ● Usando computação, entender padrões ou
novas conexões entre pessoas ou
evidências materiais

CIÊNCIAS DA COMPUTAÇÃO

● Entender a dinâmica das ciências humanas


O que é ‘Humanidades Digitais’?

http://history-lab.org/
Contexto das ‘Humanidades Digitais’
Humanities Computing (Humanidades Computacionais)

1949: padre jesuíta italiano Roberto Busa trabalhou com


11 milhões de palavras de São Tomás de Aquino e autores
relacionados (index verborum). Trabalho com ajuda
computacional da IBM, sendo seu primeiro volume
publicado em 1974 e, posteriormente, em CD-ROM em
1992

1960: literários e linguistas: analisar qualitativa e quantitativamente textos

1970: surgimento de centros de estudo dedicados a este trabalho (Association for Computers and
the Humanities (ACH) - 1978); tópico comum de conferências e produções regulares, passando
a ser reconhecido como parte do escopo trabalhado por linguistas
Contexto das ‘Humanidades Digitais’

1980: grandes avanços tecnológicos na


informática com a chegada dos
computadores pessoais e do e-mail
eletrônico.

● Exibição gráfica de programas e com a


interface de usuário de sistemas
operacionais

○ massificação do uso do computador


em todos os aspectos para ‘usuários
comuns’, entre eles estudantes e
pesquisadores das ciências humanas

● GIS (Geographic Information Systems)


Uma certa “história da tecnologia”

Apple LISA, 1983


Uma certa “história da tecnologia”
Uma certa “história da tecnologia”

Fotografia de Jason Koebler


“Fossil” por Heartless Machine

http://www.heartlessmachine.com/shop/aurisonitus-caeruleodenta-airpod-fossil
Contexto das ‘Humanidades Digitais’

1990: World Wide Web: início de uma nova


era para os meios de comunicação como
também uma nova etapa para o ensino e
pesquisa científica (acessar e compartilhar)

2000: ‘etapa’ intermediária entre o mundo


físico e o digital (offline - - > online)

ESPAÇO

“GEOGRAFIA” VIRTUAL
Contexto das ‘Humanidades Digitais’

2010: Humanidades Pós-Digitais (BERRY,


2014): conectados a todo momento
(microfone, câmera e sistema de GPS…)

● Pesquisa sobre e em Redes:

○ Facilitando a troca de conhecimento


entre metodologias e
pesquisadores(as)

○ Perpassa por noções de periferia e


centro (“rede entre redes”; “rede das
redes”)
Contexto das ‘Humanidades Digitais’

○ novos paradigmas para a práxis das profissões das ciências


humanas e/ou para a construção da história?

○ ou são apenas outros paradigmas calcados em conhecimento


técnico de computação?

O campo das Humanidades Digitais se desenvolve em conjunto e a partir


das teorias clássicas, modernas e contemporâneas que o sustenta. Se trata,
portanto, de aprofundar as raízes do conhecimento humanístico
consoante as constantes alterações nos campos cultural, social, econômico
e tecnológico da sociedade mundial.
Humanidades Digitais sob perspectiva do(a)
historiador(a)
Trabalho sistemático com
dados/informações/conhecimento
● Capturar (escolher, salvar, minerar)
● Sistematizar (planejar organização)
Autor(a) desconhecido(a)

● Armazenar (organizar)
● Analisar (qualitativa e quantitativa)
● Publicar (divulgar)

● A própria pesquisa como laboratório de reinvenção,


redefinição, reconfiguração de novas metodologias,
tecnologias, sistemas de informação voltadas para a
análise histórico-social/cultural/etc a partir do acesso a
documentação em meio virtual
O que é ‘Humanidades Digitais’ - Manifesto (THATCamp, 2010)

https://humanidadesdigitais.org/manifesto-das-humanidades-digitais/
https://www.humanitiesblast.com/manifesto/Manifesto_V2.pdf
Estado da arte das Humanidades Digitais
TaDiRAH (Taxonomia das Atividades de Pesquisa nas Humanidades Digitais) - EUA e Europa
• Língua anglófona (inglês)

Captura
Criação
Enriquecimento
Análise
Interpretação
Armazenamento
Disseminação
Meta-Atividades

(SULA, HACKNEY, CUNNINGHAM,


Estado da arte das Humanidades Digitais

Início de programas de HD: 1991

● Centros de pesquisa, revistas,


cursos em escolas e universidades

● Crescimento contínuo a partir de


2009

● 2016: 37 cursos

● EUA: 22
● CANADA: 6
● INGLATERRA: 5
● IRLANDA: 3
● AUSTRALIA: 1

(SULA, HACKNEY, CUNNINGHAM, 2017)


Estado da arte das Humanidades Digitais

23 programas com ‘graduação’

• Doutorado (8%)
• Mestrado (22%)
• Graduação (8%)

(SULA, HACKNEY, CUNNINGHAM, 2017)


Estado da arte das Humanidades Digitais

DITO
Distribuição física de centros de
Humanidades Digitais reflete
economias de alta renda versus de
média e baixa renda e distribuição da
penetração da internet

NÃO-DITO
Não reflete uso da internet entre
aqueles com educação superior
[universitária] ou a taxa de troca em
várias formas de comunicação
presentes nas tecnologias de
comunicação e informação

(ADHO, 2012)
(TERRAS, 2011) e (ADHO, 2012)
Estado da arte das Humanidades Digitais no Brasil

Pesquisa do termo ‘Humanidades Digitais’ em bases de dados acadêmicas


● Google Acadêmico (15 pt; 21 br)

Oliveira e Martins (2017). O Estado da Arte em Pesquisas sobre Humanidades Digitais no Brasil

● Tema pouco estudado; Falta de identificação à área; área dominante em língua inglesa
Estado da arte das Humanidades Digitais no Brasil

• Letras (Bahia e Paraná)


• Linguística (Bahia e Rio de Janeiro)
• História (São Paulo)
• Comunicação (São Paulo)
• Ciência da informação (Pernambuco)

Os autores argumentam a diferença entre a presença das áreas a partir de texto de Berry (2011), que
discute a apropriação da tecnologia pelas ciências humanas em duas grandes ondas:
• estudo de repositórios digitais
• uso de softwares para análise de materiais eletrônicos

(OLIVEIRA, MARTINS, 2017)


Bancos de dados
PostgreSQL PgAdmin
(Bancos de dados relacionais) (interface de usuário para SGBD)
(Sistema Gerenciador de Banco de Dados) (manutenção de bancos de dados em PostgreSQL)
Captura e análise dados

FACEPAGER GEPHI
(extração –mineração- de dados do Facebook) (construção de mapas de redes - pontos de ligação entre polos)
Análise dados textuais

IRAMUTEQ
(leitura de textos)
(construção de mapas de conceitos)
(parametrização através da linguística - peso às palavras)
Análise de dados

Análise de dados usando Python e


bibliotecas de Data Science
○ Pandas, matplotlib, seaborn,
geopandas...

● Jupyter notebook (ferramenta)

○ Manipulação de dados

○ Geração de gráficos

○ Construção de mapas
Análise de dados

Análise de dados usando Python e


bibliotecas de Data Science
○ Pandas, matplotlib, seaborn,
geopandas...

● Jupyter notebook (ferramenta)

○ Manipulação de dados

○ Geração de gráficos

○ Construção de mapas
várias etapas:
raspagem,
armazenamento,
limpeza, etc...

DADO CONHECIMENTO
“mundo real” (PgAdmin ou qualquer outro
programa para processar as
infos)

“interpretação do mundo real,


através de um modelo”

INFORMAÇÃO
(bd-relacional)
“modelo do mundo real,
representação, mini-mundo”
Introdução a bancos de

2 dados relacionais
O que é um ‘banco de dados’?
O QUE É
● Armazenar dados

COMO
● Arquitetar estruturas de dados
● Alimentar o banco de dados
● Extrair relatórios
● Cruzar informações

USANDO O QUE
● Linguagem de programação (SQL)
O que é uma ‘tabela’?
Planilhas

● Conjuntos de dados (dataset)


● Determinada temática
● Organizada em colunas e linhas
● Arquivo de Excel ou de valores
Banco de dados

● Uma database é composta


por vários schemas

● Um schema é composto
por várias tabelas

● Uma tabela é composta por


várias colunas
Funcionamento de uma aplicação de dados
Instalação do

3 PostgreSQL
Site oficial PostgreSQL
https://www.postgresql.org/

Site direto para download


https://www.postgresql.org/download/windows/
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

[importante: durante instalação, pedir


para instalar o PgAdmin4]

Documentação
https://www.postgresql.org/files/documentation/pdf/12/postgresql-12-US.pdf
(Inglês - versão atual - 12)

http://pgdocptbr.sourceforge.net/pg80/index.html (PT-BR, versão mais antiga - 8)


1 2

3 4
5 6

7 8
9 10

11 12
O Stack
Builder é
utilizado para
instalar
extensões no
PostgreSQL
13 … mas, no
nosso caso,
não vamos
instalar
nenhuma...

14
1
5
https://dbeaver.io/
Humanidades Digitais: introdução a
bancos de dados e SQL para pesquisa em
humanidades
DIA 01: 12/04
Humanidades Digitais e bancos de dados

DIA 02: 13/04


Introdução à linguagem SQL: criação de estruturas de
dados e alimentação de tabelas

DIA 03: 14/04


Introdução à linguagem SQL: extração de relatórios
DIA 02: 13/04
Introdução à linguagem SQL: criação de estruturas de
dados e alimentação de tabela

- Modelo-entidade Relacionamento
- Modelo físico
- SQL create, alter, drop, delete, insert
- Construir tabelas
- Alimentar tabelas
O que é um ‘banco de dados’?
O QUE É
● Armazenar dados

COMO
● Arquitetar estruturas de dados
● Alimentar o banco de dados
● Extrair relatórios
● Cruzar informações

USANDO O QUE
● Linguagem de programação (SQL)
Banco de dados

● Uma database é composta


por vários schemas

● Um schema é composto
por várias tabelas

● Uma tabela é composta por


várias colunas
1 Visão geral do
PgAdmin4
TI: funcionamento de uma aplicação de dados
Abra o pgAdmin4 no
seu computador....
Visão geral - PostgreSQL
2 PostgreSQL: bancos de
dados relacionais
Noções de leitura e construção de códigos em SQL
O que é um ‘banco de dados relacional’?

“Um banco de dados relacional armazena


dados em tabelas. Tabelas são organizadas
em colunas, e cada coluna armazena um tipo
de dado” (https://www.devmedia.com.br/bancos-de-dados-relacionais/20401)

O ponto-chave dos bacos de dados relacionais


são as relações entre tabelas
Banco relacional: relacionamentos
CARDINALIDADE
PODER DO BANCO DE DADOS
RELACIONAL

CHAVE PRIMÁRIA (PRIMARY KEY - PK)


● Identificador único
● Campo de contagem de entradas - principal
campo
● Toda tabela tem

dica: sempre lembrar da


CHAVE ESTRANGEIRA (FOREIGN KEY - FK)
● Identificador que permite relacionar (‘ponte’)
relação ente UF e município
campos de tabelas diferentes, combinando
colunas UMA UF POSSUI MAIS DE UM
○ Empresta ou recebe valor
● Nem toda tabela tem MUNICÍPIO
CARDINALIDADE

• Um conjunto de dados organizados em


uma tabela possui uma relação com os
dados de outra tabela

• A relação se dá por meio de dados que


indicamos que indicamos em código que
são “iguais”/”irmãos” (passíveis de serem
relacionados)

• Cardinalidade: relação entre tabelas via


Chaves primárias (PKs) e Chaves externas
(estrangeiras – FKs)
Arquitetando e
3 implementando um
banco de dados
Noções de leitura e construção de códigos em SQL
Primeiros passos...
Aula 08 IME-USP (MAC5760) <https://www.ime.usp.br/~jef/bd08.pdf>
Guia rápido <https://www.devmedia.com.br/guia/guia-completo-de-sql/38314>
Para saber mais sobre os tipos <http://www.thomazrossito.com.br/comandos-dml-ddl-dcl-tcl-sql-server/>
não há consenso sobre
distinção entre DQL e DML
-
consideramos aqui DQL
como parte do DML
DDL
(Data Definition Language - Linguagem de Definição de Dados)

CRIAR tabela(s)
usar interface do PgAdmin4 e depois verificar códigos
● CREATE
● ALTER
● DROP ALTERAR tabela(s)
modificar direto no código e depois executar via PgAdmin4

DELETAR tabela(s) ou campos


usar interface do PgAdmin4
Primeiros passos...

• Entender o que quero acompanhar (armazenar) – temática

• Identificar as informações relevantes

• Desenhar o “Modelo-entidade Relacionamento” (MER)

• Construir o “Modelo Físico” (em SQL)

• Alimentar o banco de dados (linha por linha, ou em massa


via importação de arquivos)
Primeiros passos...
EXEMPLO

• Entender o que quero acompanhar (armazenar) – temática


VACINAS

• Identificar as informações relevantes -> Tipo da vacina, Nome


da vacina, Se a vacina foi aprovada ou não, Quando foi criada

• Desenhar o “Modelo-entidade Relacionamento” (MER) ->


DRAW.IO

• Construir o “Modelo Físico” (em SQL) -> ESCREVER O CÓDIGO

• Alimentar o banco de dados (linha por linha, ou em massa


via importação de arquivos)
SQL: tipos de dados

boolean

https://www.w3schools.com/sql/sql_alter.asp
Primeiros passos...
EXEMPLO

• Identificar as informações relevantes


• Tipo da vacina
• Nome da vacina
• Se a vacina foi aprovada ou não
• Quando foi criada
Primeiros passos...
EXEMPLO

• Identificar as informações relevantes


• Tipo da vacina - > texto
• Nome da vacina - > texto
• Se a vacina foi aprovada ou não - > boolean
• Quando foi criada - > data
Primeiros passos...
EXEMPLO

• Desenhar o “Modelo-entidade Relacionamento” (MER) ->


DRAW.IO

• TIPO DA VACINA
• NOME DA VACINA
• SE FOI APROVADA OU NÃO
• QUANDO FOI CRIADA
DDL
(Data Definition Language - Linguagem de Definição de Dados)

CREATE TABLE <nome_tabela> (


campo1 <tipo_dado>,
● CREATE campo2 <tipo_dado>,
campo3 <tipo_dado>,
campo4 <tipo_dado>,
campo5 <tipo_dado>,
);
Primeiros passos...
EXEMPLO

CREATE TABLE vacina(


id_vacina integer PRIMARY KEY,
tipo_vacina varchar(100),
nome_vacina text,
aprovada boolean,
data_criacao timestamp
);
CARDINALIDADE

PODER DO BANCO DE DADOS RELACIONAL

CHAVE PRIMÁRIA (PRIMARY KEY - PK)


● Identificador único
● Campo de contagem de entradas - principal campo
● Toda tabela tem

CHAVE ESTRANGEIRA (FOREIGN KEY - FK)


● Identificador que permite relacionar (‘ponte’)
campos de tabelas diferentes, combinando colunas
○ Empresta ou recebe valor UMA UF POSSUI MAIS
● Nem toda tabela tem
DE UM MUNICÍPIO
CARDINALIDADE Modelo físico

MER
CREATE TABLE uf(
id_uf integer PRIMARY KEY,
uf varchar(2)
);

CREATE TABLE municipio(


id_municipio integer PRIMARY KEY,
id_uf integer,
municipio varchar(300)
);
1. Crio das tabelas

2. Crio o relacionamento entre elas


CARDINALIDADE Modelo físico
CREATE TABLE uf(
MER id_uf integer PRIMARY KEY,
uf varchar(2)
);

CREATE TABLE municipio(


id_municipio integer PRIMARY KEY,
id_uf integer,
municipio varchar(300)
);

ALTER TABLE municipio


1. Crio das tabelas
ADD CONSTRAINT municipio_fk01
FOREIGN KEY (id_uf) REFERENCES uf (id_uf);
2. Crio o relacionamento entre elas
CARDINALIDADE Modelo físico
CREATE TABLE uf(
MER id_uf integer PRIMARY KEY,
uf varchar(2)
);

CREATE TABLE municipio(


id_municipio integer PRIMARY KEY,
id_uf integer,
municipio varchar(300)
);

ALTER TABLE municipio


CHAVE PRIMÁRIA (PRIMARY KEY - PK)
ADD CONSTRAINT municipio_fk01
CHAVE ESTRANGEIRA (FOREIGN KEY - FK) FOREIGN KEY (id_uf) REFERENCES uf (id_uf);
Manipulando as
4 tabelas do banco
de dados
DML
(Data Manipulation Language - Linguagem de Manipulação de Dados)

INSERIR valores em campos de tabela(s)


por código ou via .csv (derrubar banco e subir de novo)
● INSERT
● UPDATE UPDATE valores em campos de tabela(s)
● DELETE modificar nas tabelas excel, exportar para .csv, derrubar
banco, subir de novo e depois executar via PgAdmin4

DELETAR valores em campos de tabela(s)


usar interface do PgAdmin4
DML - INSERT

https://www.w3schools.com/sql/sql_insert.asp
DML - UPDATE

https://www.w3schools.com/sql/sql_update.asp
DML - DELETE

https://www.w3schools.com/sql/sql_delete.asp
DDL - ALTER

https://www.w3schools.com/sql/sql_alter.asp
DDL - DROP

https://www.w3schools.com/sql/sql_alter.asp
5 Importar dados
BANCO DE DADOS QUE VAMOS TRABALHAR
Banco relacional: relacionamentos
O que é um arquivo .csv?

“comma separated values”


Importação de arquivos .csv (1/2)
Importação de arquivos .csv (2/2)
Humanidades Digitais: introdução a
bancos de dados e SQL para pesquisa em
humanidades
DIA 01: 12/04
Humanidades Digitais e bancos de dados

DIA 02: 13/04


Introdução à linguagem SQL: criação de estruturas de
dados e alimentação de tabelas

DIA 03: 14/04


Introdução à linguagem SQL: extração de relatórios
DIA 03: 14/04
Introdução à linguagem SQL: extração de relatórios

- Importar tabelas
- Importar dados
- SQL select
- Extrair relatórios
● DIA 01: vimos um pouco de Humanidades
Digitais, aprendemos o que é e para que
serve um banco de dados e instalamos o
PostgreSQL

● DIA 02: aprendemos como ler um


diagrama de banco de dados, modelar e
implementar estruturas de dados,
alimentá-las e manipulá-las

● DIA 03 (hoje): vamos aprender como


extrair relatórios (conhecimento) dos
dados da tabela que construímos
Abra o
pgAdmin4 no
seu
computador...
Consulta/extração de relatórios (1/3)
1 Extração de relatórios na
prática - SELECT
DML - SELECT
● Código que segue padrão, com variações de acordo com necessidade
● Termina com ;
● AND (e), OR (se um ou outro)
● Usar * para selecionar todos
● Funções de agregação (SUM, COUNT, AVG)
● JOIN (união de tabelas) - teoria dos conjuntos

SELECT -> selecione os campos das tabelas que você quer levantar
FROM -> indique as tabelas que os campos de seu interesse fazem parte
WHERE -> condição (pode servir como JOIN também)
AND / OR -> condição adicional (uma consulta pode ter vários AND e/ou vários OR)
DML - SELECT

SELECT campo1, campo2


SELECT campo
SELECT campo FROM tabela
FROM tabela
FROM tabela WHERE campo = ‘X’
WHERE campo = ‘X’
AND campo2 = ‘Y’
DML - SELECT

● Selecione tudo da minha SELECT *


tabela FROM tabela

SELECT coluna1, coluna2


● Selecione duas colunas da
FROM tabela
minha tabela

SELECT coluna1, coluna2


● Selecione uma coluna mas FROM tabela
com uma condicional WHERE coluna1 = ‘string’ / boolean
DML - SELECT

Toda extração de relatório começa com uma pergunta


que será transformada em código SQL

● Quais são os tipos de vacina que tenho


na base de dados?

● Qual o status de aprovação de cada


vacina?

● Quais os nomes das vacinas


aprovadas?
DML - SELECT
Toda extração de relatório começa com uma pergunta
que será transformada em código SQL

● Quais são os tipos de vacina que


tenho na base de dados?

● Qual o status de aprovação de cada


vacina?

● Qual os nomes das vacinas


aprovadas?
DML - SELECT

SELECT tipo_vacina
FROM vacina
● Quais são os tipos de vacina
que tenho na base de
dados? SELECT DISTINCT tipo_vacina
FROM vacina
DML - SELECT
Toda extração de relatório começa com uma pergunta
que será transformada em código SQL

● Quais são os tipos de vacina que


tenho na base de dados?

● Qual status de aprovação de cada


vacina?

● Qual os nomes das vacinas


aprovadas?
DML - SELECT

● Qual o status de aprovação


SELECT nome_vacina, aprovada
de cada vacina?
FROM vacina
DML - SELECT
Toda extração de relatório começa com uma pergunta
que será transformada em código SQL

● Quais são os tipos de vacina que


tenho na base de dados?

● Qual status de aprovação de cada


vacina?

● Quais os nomes das vacinas


aprovadas?
DML - SELECT

● Qual o nome das vacinas SELECT nome_vacina


aprovadas? FROM vacina
WHERE aprovada = True
DML - SELECT

SELECT tipo_vacina
● Quais são os tipos de vacina FROM vacina
que tenho na base de
dados? SELECT DISTINCT tipo_vacina
FROM vacina

● Qual o status de aprovação


SELECT tipo_vacina, aprovada
de cada vacina? FROM vacina

● Qual os nomes das vacinas SELECT nome_vacina, tipo_vacina


aprovadas? FROM vacina
WHERE aprovada = True
DML – SELECT

BÔNUS

SELECT nome_vacina
● Qual o nome das vacinas
FROM vacina
que não são de RNA? WHERE tipo_vacina != ‘RNA’
Extração de relatórios na

2 prática com função de


agregação – count()
DML - SELECT

SELECT -> selecione os campos das tabelas que você quer levantar
FROM -> indique as tabelas que os campos de seu interesse fazem parte
GROUP BY -> obrigatório utilização quando há função de agregação no SELECT
ORDER BY -> ordenar pelo campo

● count()
● Contagem de dados
● sum()
● Soma de valores
● avg()
● Estatística (média, moda, ...)
● ...
DML - SELECT

Toda extração de relatório começa com uma pergunta


que será transformada em código SQL

● Quantas vacinas de cada tipo temos no


banco de dados?

● Quantas vacinas de cada tipo foram


aprovadas?

● Quantas vacinas foram aprovadas?


DML - SELECT

Toda extração de relatório começa com uma pergunta


que será transformada em código SQL

● Quantas vacinas de cada tipo temos no


banco de dados?

● Quantas vacinas foram aprovadas?

● Quantas vacinas de cada tipo foram


aprovadas?
DML - SELECT

SELECT tipo_vacina, count(id_vacina)


● Quantas vacinas de cada tipo FROM vacina
temos no banco de dados? GROUP BY tipo_vacina
DML - SELECT

Toda extração de relatório começa com uma pergunta


que será transformada em código SQL

● Quantas vacinas de cada tipo temos no


banco de dados?

● Quantas vacinas foram aprovadas?

● Quantas vacinas de cada tipo foram


aprovadas?
DML - SELECT

SELECT COUNT(aprovada)
● Quantas vacinas foram
FROM vacina
aprovadas? WHERE aprovada = True
DML - SELECT

Toda extração de relatório começa com uma pergunta


que será transformada em código SQL

● Quantas vacinas de cada tipo temos no


banco de dados?

● Quantas vacinas foram aprovadas?

● Quantas vacinas de cada tipo foram


aprovadas?
DML - SELECT

SELECT tipo_vacina, COUNT(id_vacina)


● Quantas vacinas de cada
FROM vacina
tipo foram aprovadas?
WHERE aprovada = True
GROUP BY tipo_vacina
DML - SELECT

SELECT tipo_vacina, count(id_vacina)


● Quantas vacinas de cada FROM vacina
tipo temos no banco de GROUP BY tipo_vacina
dados?

● Quantas vacinas foram


SELECT COUNT(aprovada)
aprovadas? FROM vacina
WHERE aprovada = True

● Quantas vacinas de cada


tipo foram aprovadas? SELECT tipo_vacina, COUNT(id_vacina)
FROM vacina
WHERE aprovada = True
GROUP BY tipo_vacina
DML – SELECT

BÔNUS

● Quais vacinas foram criadas no ano


de 2019?

● Quais vacinas aprovadas foram


criadas em 2020?

● Qual o status de aprovação de


vacinas de tipo RNA?
DML – SELECT

BÔNUS

● Quais vacinas foram criadas no ano


de 2019?

● Quais vacinas aprovadas foram


criadas em 2020?

● Qual o status de aprovação de


vacinas de tipo RNA?
DML - SELECT

SELECT nome_vacina, data_criacao


● Quais vacinas foram criadas FROM vacina
no ano de 2019? WHERE data_criacao
BETWEEN ‘2019-01-01’ AND ‘2019-12-31’
DML – SELECT

BÔNUS

● Quais vacinas foram criadas no ano


de 2019?

● Quais vacinas aprovadas foram


criadas em 2020?

● Qual o status de aprovação de


vacinas de tipo RNA?
DML - SELECT

SELECT nome_vacina, aprovada, data_criacao


FROM vacina
● Quais vacinas aprovadas WHERE aprovada = True
foram criadas em 2020? AND data_criacao
BETWEEN ‘2019-01-01’ AND ‘2019-12-31’
DML – SELECT

BÔNUS

● Quais vacinas foram criadas no ano


de 2019?

● Quais vacinas aprovadas foram


criadas em 2020?

● Qual o status de aprovação de


vacinas de tipo RNA?
DML - SELECT

● Qual o status de aprovação SELECT tipo_vacina, aprovada, COUNT(id_vacina)


FROM vacina
de vacinas vacinas de tipo
WHERE tipo_vacina = ‘RNA’
RNA?
GROUP BY tipo_vacina, aprovada
DML - SELECT

SELECT nome_vacina, data_criacao


FROM vacina
● Quais vacinas foram criadas WHERE data_criacao
no ano de 2019? BETWEEN ‘2019-01-01’ AND ‘2019-12-31’

SELECT nome_vacina, aprovada, data_criacao


● Quais vacinas aprovadas
FROM vacina
foram criadas em 2020?
WHERE aprovada = True
AND data_criacao
BETWEEN ‘2019-01-01’ AND ‘2019-12-31’
● Qual o status de aprovação
de vacinas vacinas de tipo SELECT tipo_vacina, aprovada, COUNT(id_vacina)
RNA? FROM vacina
WHERE tipo_vacina = ‘RNA’
GROUP BY tipo_vacina, aprovada
Extraindo relatórios

3 considerando a cardinalidade
(relacionamento entre tabelas)
https://www.devmedia.com.br/sql-join-entenda-como-funciona-o-retorno-dos-dados/31006
CARDINALIDADE
PODER DO BANCO DE DADOS
RELACIONAL

CHAVE PRIMÁRIA (PRIMARY KEY - PK)


● Identificador único
● Campo de contagem de entradas - principal
campo
● Toda tabela tem

dica: sempre lembrar da


CHAVE ESTRANGEIRA (FOREIGN KEY - FK)
● Identificador que permite relacionar (‘ponte’)
relação ente UF e município
campos de tabelas diferentes, combinando
colunas UMA UF POSSUI MAIS DE UM
○ Empresta ou recebe valor
● Nem toda tabela tem MUNICÍPIO
CONSULTA COM DUAS OU MAIS TABELAS

SELECT tabela1.campo, tabela2.campo

FROM tabela1

JOIN tablea2

ON tabela1.campo_pk = tabela2.campo_fk
CONSULTA COM DUAS OU MAIS TABELAS

INSERT INTO uf
VALUES
(1,'SP'),
(2,'MG'),
(3,'PB');

INSERT INTO municpio


VALUES
(1, 1, 'São Paulo'),
(2, 1, 'Osasco'),
(3, 1, 'Rio Claro'),
(4, 2, 'Belo Horizonte'),
(5, 3, 'João Pessoa');
CONSULTA COM DUAS OU MAIS TABELAS

SELECT tabela1.campo1, tabela2.campo1


FROM tabela1
JOIN tablea2
ON tabela1.campo_pk = tabela2.campo_fk

SELECT uf.uf, municipio.municipio


FROM uf
JOIN municipio
ON uf.id_uf= municipio.id_uf
4 Extração de relatórios na
prática
BANCO DE DADOS QUE VAMOS TRABALHAR
RECUPERANDO UM BACKUP DE UM BANCO DE DADOS
DML – SELECT

● Selecione a data da ocorrência e as vítimas


envolvidas
DML – SELECT

● Selecione a data da ocorrência e as vítimas


envolvidas
DML – SELECT

● Selecione a data da ocorrência e os tipos de vítimas


envolvidas

SELECT ocorrencia.data_ocorrencia,
vitima.tipo_vitima,
vitima.nome,
vitima.genero,
vitima.idade,
vitima.cor_raca
FROM ocorrencia
JOIN vitima
ON vitima.id_ocorrencia = ocorrencia.id_ocorrencia
DML – SELECT

● Selecione a data da ocorrência, o tipo da violência e


a instituição dos autores envolvidos
DML – SELECT

● Selecione a data da ocorrência, o tipo da violência e


a instituição dos autores envolvidos
DML – SELECT

● Selecione a data da ocorrência, o tipo da violência e


a instituição dos autores envolvidos

SELECT ocorrencia.data_ocorrencia,
violencia.tipo_violencia,
autor.instituicao
FROM ocorrencia
JOIN violencia
ON violencia.id_ocorrencia= ocorrencia.id_ocorrencia
JOIN autor
ON autor.id_ocorrencia = ocorrencia.id_ocorrencia
DML – SELECT

● Conte quantas violações por tipo de autor


DML – SELECT

● Conte quantas violações por tipo de autor


DML – SELECT

● Conte quantas violações por tipo de autor

SELECT autor.instituicao,
count(violencia.tipo_violencia),
FROM ocorrencia
JOIN violencia
ON violencia.id_ocorrencia= ocorrencia.id_ocorrencia
JOIN autor
ON autor.id_ocorrencia = ocorrencia.id_ocorrencia
GROUP BY autor.instituicao
DML - SELECT

SELECT nome_vacina, data_criacao


● Quais vacinas foram criadas FROM vacina
no ano de 2019? WHERE data_criacao
BETWEEN ‘2019-01-01’ AND ‘2019-12-31’

● Quais vacinas foram


SELECT COUNT(aprovada)
aprovadas em? FROM vacina
WHERE aprovada = True

● Quantas vacinas de cada


tipo foram aprovadas? SELECT tipo_vacina, aprovada, COUNT(id_vacina)
FROM vacina
GROUP BY tipo_vacina, aprovada
ORDER BY tipo_vacina
http://www.sqltutorial.org/wp-content/uploads/2016/04/SQL-Cheet-Sheet-1.png
APOSTILA MAC5760 (IME-USP: INTRODUÇÃO A BANCO
DE DADOS): https://www.ime.usp.br/~jef/apostila.pdf

Para saber mais SQL:

https://www.w3schools.com/sql/default.asp

https://www.devmedia.com.br/sql-basico/28877

https://www.devmedia.com.br/sql-avancado/28889
CONSEQUENTEMENTE, POR FIM,
....

ANTES
DE
FINALIZARMOS
...
1. O que aprendemos não é trivial

2. Meu objetivo é introduzir vocês com o conhecimento que eu


queria ter tido no começo

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


1. O que aprendemos não é trivial

2. Acho que consegui introduzir vocês a um campo do


conhecimento um pouco diferente do que vcs estão acostumados

3. Procure executar os comandos comigo

4. Pratique para de fato aprender


1. O que aprendemos não é trivial

2. Acho que consegui introduzir vocês a um campo do


conhecimento um pouco diferente do que vcs estão acostumados

3. Procure revisar os comandos que trabalhamos

4. Pratique para de fato aprender


1. O que aprendemos não é trivial

2. Acho que consegui introduzir vocês a um campo do


conhecimento um pouco diferente do que vcs estão acostumados

3. Procure revisar os comandos que trabalhamos

4. Pratique para de fato aprender


PARA NÓS:
TECNOLOGIA É UM MEIO E NÃO UM FIM

UMA PROPOSTA:
REDE DE TROCA DE IDEIAS SOBRE
TECNOLOGIA PARA AS CIÊNCIA
SHUMANAS
Sobre bancos de dados:
https://www.ime.usp.br/~jef/apostila.pdf

Cursos de SQL:
https://www.udemy.com/course/aprenda-sql-do-zero/
https://www.udemy.com/course/the-complete-sql-bootcamp/

Sites legais:
https://www.postgresql.org/
https://www.postgresqltutorial.com/
https://www.w3schools.com/sql/

Você também pode gostar