Академический Документы
Профессиональный Документы
Культура Документы
PARTE 3
Gerenciamento de Bancos de
Dados com o SQL
1
ROTEIRO DA AULA
1. Motivao
2. Database Management Systems
Funes
Diagramas Entidade-Relacionamento
Bancos de Dados Relacionais
Opes no Mercado
3. Introduo ao SQL
Linguagens de Programao No-Procedurais
Vantagens de Utilizar SQL
4. Comandos SQL
Criao de Bancos e Tabelas
Preenchimento de Tabelas
Alterao e Remoo de Tabelas
5. Utilizao do MySQL Workbench
6. Integrao do MySQL com o R
7. Exerccios
2
MOTIVAO
O qu vamos estudar?
Bancos de Dados Relacionais
Conjunto de tabelas interligadas e pertencentes a
um mesmo campo semntico
3
MOTIVAO
O qu vamos estudar?
4
MOTIVAO
O qu vamos estudar?
5
MOTIVAO
Por qu vamos estudar?
BDs relacionais, DBMSs e SQL so peas fundamentais do
mundo dos softwares direcionados ao processamento e anlise
de dados.
6
MOTIVAO
Por qu vamos estudar?
7
DATABASE MANAGEMENT SYSTEMS
Funes
MANUTENO
ACESSO AOS DADOS atualizao
recuperao formatao
CRIAO DE BASES
aquisio
organizao disseminao
armazenamento
Pergunta:
Qual a diferena entre um DBMS e um processador de texto ou
um gerenciador de planilhas?
8
DATABASE MANAGEMENT SYSTEMS
Funes
Resposta:
No caso dos DBMSs necessrio planejamento antes de criar
as estruturas de armazenamento de dados. A forma como
estes dados se relacionam deve ser corretamente modelada.
Isso interessante porque
1) Facilita o acesso por parte do pesquisador
2) Agiliza a busca pela mquina
3) Assegura a integridade e consistncia dos dados
9
DATABASE MANAGEMENT SYSTEMS
Diagramas ER
Atravs de Diagramas
Entidade-Relacionamento
(ER)
10
DATABASE MANAGEMENT SYSTEMS
Diagramas ER
Vamos examin-los
mais de perto.
11
DATABASE MANAGEMENT SYSTEMS
Diagramas ER
Suponha que voc queira montar uma base de
dados para o seu blog. As tabelas poderiam ser:
nome da exemplos de
tabela Autores colunas
nome, sobrenome, apelido
Comentrios Usurios
usurio, data nome, sobrenome, apelido
12
DATABASE MANAGEMENT SYSTEMS
Diagramas ER
Posts
relacionados? Comentrios Usurios
usurio, data nome, sobrenome, apelido
13
blog_post no existe sem blog_author
PRIMARY KEY
FOREIGN KEY
Diagrama ER
14
DATABASE MANAGEMENT SYSTEMS
Bancos de Dados Relacionais
15
DATABASE MANAGEMENT SYSTEMS
Principais opes no mercado
SQL Server
(Microsoft)
Oracle
PostgreSQL
MySQL NOSSA
(Oracle) OPO
16
DATABASE MANAGEMENT SYSTEMS
Por qu usaremos o MySQL?
SQL Server:
- Excelente sistema de clusters e de partio de dados
- Compatvel com o padro ANSI/SQL
- No Open Source
- A verso gratuita limita o tamanho das bases em 4GB
Oracle:
- Mesmas vantagens do SQL Server
- No Open Source
- A verso gratuita limita o tamanho das bases em 11GB
17
DATABASE MANAGEMENT SYSTEMS
Por qu usaremos o MySQL?
PostgreSQL
- Considerado o SGBD Open Source mais avanado do mercado.
- Amplamente extensvel
- Pode ter performance pior que o MySQL em aplicaes que dependem
somente de operaes de leitura.
MySQL:
- Vantagem sobre o PostgreSQL em operaes de leitura. POPULAR
GRATUITO
- Maior comunidade de usurios
INTEGRVEL AO R
18
SQL
Structured Query Language
19
SQL
Structured Query Language
Linguagens no procedurais no requerem muitos
conhecimentos de programao.
Apenas a especificao de QUAIS estruturas sero acessadas
necessria. No preciso dizer COMO o acesso ser executado.
Diminui o nmero de linhas de cdigo em DUAS ordens de
grandeza!
No necessrio escrever loops ou condies (if, for, while)
20
SQL
Structured Query Language
Observaes:
21
COMANDOS SQL
Criao de uma base de dados
obrigatrio
user-defined
alternativas
opcional
22
COMANDOS SQL
Criao de tabelas
contm o identificador
nico (primary key) de 3 Vendas
cada linha (cada
departamento)
23
COMANDOS SQL
Criao de tabelas
Nm. Cadeia de Nm. Nm. Nm.
inteiro Caracteres inteiro real inteiro
TABELA EMPLOYEE
1 Joo 23 10000 1
2 Maria 24 7000 2
A coluna EMP_ID
contm o identificador 3 Jos 25 8000 3
24
COMANDOS SQL
Criao de tabelas
Chave estrangeira
(foreign key)
EMP_ID EMP_NAME EMP_AGE EMP_SALARY DEPT_ID
Chave primria
1 Joo 23 10000 1
(primary key)
25
COMANDOS SQL
Criao de tabelas
26
COMANDOS SQL
Criao de tabelas
27
COMANDOS SQL
Criao de tabelas
28
COMANDOS SQL
Criao de tabelas
29
COMANDOS SQL
Preenchimento de Tabelas
30
COMANDOS SQL
Preenchimento de Tabelas
31
COMANDOS SQL
Preenchimento de Tabelas
INSERT um comando lento. Ele averigua se todos os valores da
linha esto consistentes, isto , no violam nenhuma restrio de
integridade. Caso algum viole, nenhum valor inserido na linha.
Em seu wizard de importao, o Workbench executa um INSERT
por linha do arquivo de dados. um processo bastante demorado
e, caso o arquivo esteja corrompido em algum ponto, as linhas no
corrompidas sero importadas de qualquer forma, deixando a
tabela inconsistente.
Para poupar tempo e evitar importar dados de arquivos
corrompidos, usamos o comando LOAD DATA. Ele no utiliza
INSERT e no importa nenhuma linha caso o arquivo tenha
problemas.
32
COMANDOS SQL
Preenchimento de Tabelas
33
COMANDOS SQL
Preenchimento de Tabelas
34
COMANDOS SQL
Preenchimento de Tabelas
35
COMANDOS SQL
Preenchimento de Tabelas
36
COMANDOS SQL
Consulta aos dados
Para fazer buscas no banco, utilizamos o comando SELECT. Suas vrias
clusulas sero examinadas uma a uma.
37
COMANDOS SQL
Consulta aos dados
1 Joo 23 10000 1
1 Contabilidade
2 Maria 24 7000 2
2 Marketing
3 Jos 25 8000 3
3 Vendas
4 Ana 27 6000 1
5 Antnio 28 5000 2
38
COMANDOS SQL
Consulta aos dados
Antnio 28
39
COMANDOS SQL
Consulta aos dados
40
COMANDOS SQL
Consulta aos dados
41
COMANDOS SQL
Consulta aos dados
42
COMANDOS SQL
Consulta aos dados
FROM company.Employee e, company.Department d
WHERE e.DEPT_ID = d.DEPT_ID
4 Ana 27 6000 1
SELECT e.EMP_NAME, d.DEPT_NAME
5 Antnio 28 5000 2
43
COMANDOS SQL
Consulta aos dados
Ana Contabilidade
44
COMANDOS SQL
Consulta aos dados
45
COMANDOS SQL
Consulta aos dados
46
COMANDOS SQL
Consulta aos dados
GROUP BY d.DEPT_NAME ;
3 Jos 25 8000 Vendas
47
COMANDOS SQL
Consulta aos dados
EMP_NAME DEPT_NAME
Joo Contabilidade
Ana Contabilidade 2
Maria Marketing 2 SELECT d.DEPT_NAME,
count(e.EMP_NAME) as NUM_EMPLOYEE
Antnio Marketing 1
Jos Vendas
48
COMANDOS SQL
Consulta aos dados
Vendas 1
49
COMANDOS SQL
Consulta aos dados
50
COMANDOS SQL
Consulta aos dados
SELECT d.DEPT_NAME,
count(e.EMP_NAME) as NUM_EMPLOYEE,
avg(e.EMP_SALARY) as AVG_SALARY
FROM Employee e, Department d
WHERE e.DEPT_ID=d.DEPT_ID AND EMP_SALARY > 5000
GROUP BY d.DEPT_NAME;
51
COMANDOS SQL
Consulta aos dados
52
COMANDOS SQL
Consulta aos dados
Joo 10000
53
COMANDOS SQL
Consulta aos dados
Contabilidade 8000
SELECT d.DEPT_NAME, avg(e.EMP_SALARY) as AVG_SALARY
FROM company.Employee e, company.Department d
WHERE e.DEPT_ID = d.DEPT_ID
GROUP BY d.DEPT_NAME
ORDER BY AVG_SALARY ASC;
54
COMANDOS SQL
Modificao de Tabelas
ALTER TABLE tbl_name
ADD [COLUMN] (col_name column_definition,...)
[FIRST | AFTER col_name ]
| ADD [CONSTRAINT [symbol]] PRIMARY KEY (col_name,...)
| ADD [CONSTRAINT [symbol]] FOREIGN KEY (col_name,...)
[REFERENCES] reference_definition
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP FOREIGN KEY fk_symbol
55
COMANDOS SQL
Modificao de Tabelas
56
COMANDOS SQL
Modificao de Tabelas
UPDATE table_name
SET col_name1= expr [, col_name2 = expr2 ] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
57
COMANDOS SQL
Modificao de Tabelas
58
COMANDOS SQL
Remoo de Tabelas e Bases
59
INTEGRAO COM O R
60
INTEGRAO COM O R
4. Estabelecer a conexo com a base:
conn = dbConnect(MySQL(), db = "wdi", user = "wdiuser",
password = 'wdiuser', host = "Talitha-PC", port=3306)
61
REFERNCIAS
62
INSTRUES/FAQ
Lista 1
1. Onde esto os arquivos .csv que devem ser carregados para a base Titanic? No
Dropbox, em Big Data\Banco de Dados\Data Management\Titanic.
2. Onde estes arquivos devem ser colocados? Algumas verses do MySQL Workbench s
aceitam ler arquivos que estejam em C:\ProgramData\MySQL\MySQL Server 5.7\Uploads.
Ateno: A pasta ProgramData est escondida.
63
INSTRUES/FAQ
Lista 1
4. No consigo usar o comando LOAD DATA para carregar as tabelas. Todos os
arquivos esto corrompidos? No, nenhum est. Voc provavelmente est esquecendo de
inserir a palavra LOCAL no comando. Veja os exemplos do LOAD DATA nestes slides.
5. Meu cdigo executou perfeitamente mas h marcas vermelhas do lado das linhas.
Tem alguma coisa errada? No. Esse um bug conhecido da verso do MySQL Workbench
que est instalada nas mquinas do laboratrio.
64
INSTRUES/FAQ
Lista 2
1. Onde esto os arquivos .csv que devem ser carregados para a base wdi? No Dropbox,
em Big Data\Banco de Dados\Data Management\WDI. Os arquivos .csv que esto na
mquina da FGV esto corrompidos. No usem.
2. Onde estes arquivos devem ser colocados? Algumas verses do MySQL Workbench s
aceitam ler arquivos que estejam em C:\ProgramData\MySQL\MySQL Server 5.7\Uploads.
Ateno: A pasta ProgramData est escondida.
65
INSTRUES/FAQ
Lista 2
4. No consigo usar o comando LOAD DATA para carregar as tabelas. Todos os
arquivos esto corrompidos? No, nenhum est. Voc provavelmente est esquecendo de
inserir a palavra LOCAL no comando. Veja os exemplos do LOAD DATA nestes slides.
5. Carreguei a tabela Series, mas apareceram vrios warnings. Tem problema? No.
Esses warnings apenas indicam que o MySQL truncou espaos em branco. Por exemplo,
transformou a string "1.2 " em 1.2.
6. Meu cdigo executou perfeitamente mas h marcas vermelhas do lado das linhas.
Tem alguma coisa errada? No. Esse um bug conhecido da verso do MySQL Workbench
que est instalada nas mquinas do laboratrio.
7. O MySQL Workbench no permite que eu crie tabelas com colunas dos tipos
varchar(5000) ou tinyint. O que fazer? Troque varchar(5000) por text e tinyint por
integer.
66