MySQL - Completo
MySQL - Completo
Anderson Schloegel
2
[email protected]
Introdução ao MySQL
Anderson Schloegel
3
[email protected]
Introdução ao MySQL
MySQL é conhecido por ser de fácil utilização, e usado por empresas que
trabalham com grandes volumes de dados, tais como, Google, NASA, Bradesco,
HP, Sony entre outras grandes empresas de renome.
Possui uma interface extremamente simples e é compatível com grande parte dos
sistemas operacionais.
Podemos dizer que essas são duas das grandes características que fazem o
MySQL ser tão utilizado atualmente e estar em constante crescimento.
Anderson Schloegel
4
[email protected]
Compatibilidade
Pelo fato de ser desenvolvido em C e C++, isso faz com que seja extremamente
fácil sua acessibilidade entre os diversos sistemas operacionais. Vejamos alguns
desses sistemas.
Anderson Schloegel
5
[email protected]
Licença
• Utilização: Permite que o usuário faça uso do software para qualquer finalidade.
• Distribuição: Livre distribuição do software entre quaisquer pessoas.
• Didática: Permite que seu funcionamento seja estudado através de seu código-fonte
• Colaboração: Possibilita que seu código-fonte seja modificado para evoluir a
ferramenta. Como regra seu novo código-fonte tem que permanecer sendo livre segundo
essa licença.
Anderson Schloegel
6
[email protected]
Características
Portabilidade
Formas de Armazenamento
Anderson Schloegel
7
[email protected]
Características
Velocidade
Capacidade
Anderson Schloegel
8
[email protected]
Características
Capacidade (continuação)
SQL
Anderson Schloegel
9
[email protected]
Conceito de Banco de Dados
Uma base de dados, nada mais é do que estruturas complexas de dados. Estes
dados são gravados em forma de registros em tabelas.
Imagine um arquivo de fichas, numa empresa onde há várias caixas, cada uma
contendo os dados dos funcionários de um certo setor.
Cada caixa possui várias fichas, que são os cadastros dos funcionários − cada
ficha contém os dados de apenas um funcionário.
Indo mais longe, podemos concluir que cada ficha contém diversas informação
sobre o funcionário em questão.
Portanto, cada caixa é uma tabela, contendo diversas fichas, que são os registros,
e cada ficha possui várias informações sobre o funcionário, que são os campos.
Como foi dito, há várias caixas, uma para cada departamento, a soma de todas as
caixas forma a base de dados.
Anderson Schloegel
10
[email protected]
Conceito de Banco de Dados
Observando tudo isto de fora, podemos formar o seguinte esquema:
Anderson Schloegel
11
[email protected]
Conceito de Banco de Dados
Banco de dados < Tabela < Linha < Campo
A decisão de quais campos usar e quais não usar é muito importante, pois influi
drasticamente na performance da base de dados que estamos desenvolvendo,
portanto, é de bom grado um conhecimento sólido destes conceitos.
A etapa de montagem das tabelas, é senão a mais importante, uma das mais
importantes etapas da montagem de uma base de dados, pois um bom projeto
pode facilitar muito o trabalho de programação.
Anderson Schloegel
12
[email protected]
Campos de Banco de Dados
Campos
Anderson Schloegel
13
[email protected]
Campos de Banco de Dados
Tipos de campos no MySQL
O MySQL oferece campos bem comuns, que até mesmo um programador novato
já deve ter visto.
• CHAR
• VARCHAR
• INT
• FLOAT
• DATE
• TEXT/BLOB
Anderson Schloegel
14
[email protected]
Banco de Dados
Atividade 1
O que é MySQL?
Quais as vantagens de usar MySQL?
O que é Banco de Dados?
Qual o conceito de banco de dados?
O que é uma tabela em banco de dados?
O que é um registro em banco de dados?
O que é um campo em banco de dados?
O que são 'tipos de dados' em banco de dados?
Anderson Schloegel
15
[email protected]
Campos de Banco de Dados
CHAR (M)
Exemplo:
bairro CHAR(30);
Define um campo chamado ’bairro', que pode conter até trinta letras.
Observe que não há acentos no nome do campo, pois muitos servidores não
acentuam, e sua tabela teria difícil acesso.
Anderson Schloegel
16
[email protected]
Campos de Banco de Dados
VARCHAR(M)
Exemplo:
bairro VARCHAR(30);
Define um campo chamado bairro que pode conter até trinta letras. Se você
preencher apenas duas, o campo não ocupara todos os trinta bytes, mas apenas
dois.
Anderson Schloegel
17
[email protected]
Campos de Banco de Dados
CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
Anderson Schloegel
18
[email protected]
Campos de Banco de Dados
INT(M) [Unsigned]
O campo INT, que como o próprio número diz, suporta o conjunto dos números
inteiros, originalmente numa variação de −2147483648 a 2147483647.
Exemplo 01:
temperatura INT;
Campo com nome temperatura que pode ter valores positivos e negativos.
Exemplo 02:
temperatura INT unsigned;
Campo com nome temperatura que pode ter apenas valores positivos.
Anderson Schloegel
19
[email protected]
Campos de Banco de Dados
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
Anderson Schloegel
20
[email protected]
Campos de Banco de Dados
FLOAT[(M,D)]
Exemplo:
voltagem_cadeira_eletrica FLOAT(4,2);
Anderson Schloegel
21
[email protected]
Campos de Banco de Dados
DATE
Exemplo:
data_de_nascimento DATE;
Anderson Schloegel
22
[email protected]
Campos de Banco de Dados
TIME
inicio_aula TIME;
Anderson Schloegel
23
[email protected]
Campos de Banco de Dados
DATETIME
Exemplo:
ocorrencia DATETIME;
Anderson Schloegel
24
[email protected]
Campos de Banco de Dados
TEXT/BLOB
A única diferença entre os campos BLOB e TEXT está no fato de um campo TEXT
não ser sensível a letras maiúsculas e minúscula quando uma comparação é
realizada, e os BLOBs sim.
Exemplo:
relatorio BLOB;
BLOB válido: 'Minha terra tem palmeiras onde canta o...'
relatorio TEXT;
TEXT válido: 'A que saudades que eu sinto...'
Anderson Schloegel
25
[email protected]
Campos de Banco de Dados
BIT OU BOOLEAN
Exemplo:
ativo bool;
Anderson Schloegel
26
[email protected]
Tabelas de Banco de Dados
Um conjunto de registros, forma uma tabela. As tabelas portanto, armazenam
grande quantidade de dados.
Anderson Schloegel
27
[email protected]
Banco de Dados
Atividade 2
Imagine uma ficha de cadastro de uma pessoa. Para cada dado abaixo dê um
nome para o campo, inserindo o tamanho do mesmo quando necessário.
Exemplo:
Nome completo - nome_completo VARCHAR(100)
Continua...
Anderson Schloegel
28
[email protected]
Banco de Dados
- Rua
- Número
- Complemento
- CEP
- Cidade
- Estado
- Código de cadastro
- Data de cadastro
- Última atualização do cadastro
- Sexo
- Religião
- Cor
- QI
- Tipo sanguíneo
- Se é doador de órgãos
- Se tem passagem pela polícia
- Qual seu grau de ensino
- Se o usuário esta ou não ativo
Anderson Schloegel
29
[email protected]
Chave primária
PRIMARY KEY
Usado para que não seja permitido o cadastro de dois registros com chaves
primárias iguais.
Isto é claramente útil, quando não é desejado que seja digitado um segundo
registro igual ao primeiro por engano.
Para se definir uma chave primária, basta adicionar 'PRIMARY KEY' a definição do
campo que se deseja a não duplicidade.
Anderson Schloegel
30
[email protected]
Auto incremento
AUTO INCREMENT
Este recurso, faz com que conforme novos registros são criados,
automaticamente estes obtém valores que correspondem ao valor deste mesmo
campo no registro anterior, somado a 1.
Exemplo:
codigo INT AUTO_INCREMENT;
Anderson Schloegel
31
[email protected]
Sem sinal
UNSIGNED
Exemplo:
idade TINYINT
Faz a faixa de números ir de -128 até 127
Anderson Schloegel
32
[email protected]
Sem sinal
UNIQUE
Parâmetro Unique pode ser passado para que um campo seja único dentro de
uma tabela.
Exemplo:
idade CPF
Permite o cadastro de dois ou mais CPFs iguais
idade CPF
Não permite o cadastro duplicado.
Anderson Schloegel
33
[email protected]
Banco de dados
Atividade 3
Verifique quais campos criados necessitam ser do tipo chave primária. Ou seja,
quais campos não podem repetir registro dentro do banco de dados. Nestes
campos, adicione o PRIMARY KEY (PK)
Verifique também quais campos criados necessitam ser do tipo auto incremento.
Ou seja, quais campos precisam ter o valor automaticamente inserido e
incrementado. Nestes campos, adicione o AUTO INCREMENT (AI)
E também, veja quais devem ser Unsigned. Ou seja, campos que não precisam
ter números negativos. Nestes campos, adicione o UNSIGNED (U)
Anderson Schloegel
34
[email protected]
Campo nulo (vazio)
NULL e NOT NULL
Exemplo:
Anderson Schloegel
35
[email protected]
Banco de dados
Atividade 4
Anderson Schloegel
36
[email protected]
Banco de dados | SQL
Para todas as operações que precisarmos fazer nós vamos executar um comando
SQL.
Existem comandos dos mais variados tipos: Para criar bancos, tabelas, campos,
exibir informações, retornar consulta, atualizar, excluir, etc.
Temos que ter em mente que vamos utilizar um gerenciador de banco de dados
chamado phpMyAdmin, que vai agilizar alguns destes comandos para nós.
phpMyAdmin: http://localhost:8080/phpmyadmin
Usuário: root
Senha: usbw
Anderson Schloegel
37
[email protected]
COMANDOS BÁSICOS
CREATE DATABASE
Exemplo
Anderson Schloegel
38
[email protected]
COMANDOS BÁSICOS
USE
- O comando USE seleciona o banco de dados que vamos usar. Depois de criar um
banco de dados novo é preciso selecionar o banco para podermos criar as tabelas e
fazer uso do mesmo.
USE nome_do_banco_de_dados
Exemplo
USE revenda
Anderson Schloegel
39
[email protected]
COMANDOS BÁSICOS
CREATE TABLE
Exemplo
Anderson Schloegel
40
[email protected]
COMANDOS BÁSICOS
CREATE TABLE (continuação)
Anderson Schloegel
41
[email protected]
COMANDOS BÁSICOS
CREATE TABLE (continuação)
CREATE TABLE `testes` (
`campo1` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`campo2` smallint(5) unsigned DEFAULT NULL,
`campo3` mediumint(9) unsigned DEFAULT NULL,
`campo4` int(15) unsigned DEFAULT NULL,
`campo5` bigint(25) unsigned DEFAULT NULL,
`campo6` varchar(255) DEFAULT NULL,
`campo7` char(10) DEFAULT NULL,
`campo8` text,
`campo9` bit(1) NOT NULL DEFAULT b'1', -- o campo9 será NOT NULL e terá o valor 1 como padrão
`campo10` float(4,2) NOT NULL,
PRIMARY KEY (`campo1`), -- nesta linha estou dizendo para que o campo1 seja do tipo PRIMARY KEY
UNIQUE KEY `campo7` (`campo7`) -- nesta linha estou dizendo para que o campo7 seja do tipo UNIQUE
)
Anderson Schloegel
42
[email protected]
COMANDOS BÁSICOS
ALTER
- O comando ALTER nos permite editar um banco de dados ou tabela existente. Ex:
Renomear tabela
ALTER TABLE endereco RENAME localizacao;
Anderson Schloegel
43
[email protected]
COMANDOS BÁSICOS
SHOW
SHOW TABLES
Anderson Schloegel
44
[email protected]
COMANDOS BÁSICOS
DESC
DESC nome_da_tabela
Exemplo
DESC fornecedor
Anderson Schloegel
45
[email protected]
COMANDOS BÁSICOS
DROP DATABASE
Exemplo
Anderson Schloegel
46
[email protected]
COMANDOS BÁSICOS
DROP TABLE
Exemplo
Anderson Schloegel
47
[email protected]
COMANDOS BÁSICOS
TRUNCATE
- O comando TRUNCATE limpa uma tabela. Ou seja, exclui todos os dados dela.
Exemplo
Anderson Schloegel
48
[email protected]
SQL – Comando SELECT
O comando SELECT serve pra exibir dados de uma tabela.
Anderson Schloegel
49
[email protected]
SQL – Comando SELECT
Eu poderia também retornar apenas alguns campos, ao invés de selecionar todos.
Ficaria:
Anderson Schloegel
50
[email protected]
SQL – Operadores, parte 1
CONDICIONAIS
= IGUAL
> MAIOR QUE
< MENOR QUE
<= MENOR IGUAL A
>= MAIOR IGUAL A
!= ou< > DIFERENTE
AND operador E
OR operador OU
Exemplo
SELECT nome, marca, veiculo FROM cliente WHERE idade >= 18;
Anderson Schloegel
51
[email protected]
SQL – Atividade 05
- Abra seu usbwebserver. Abra o phpMyAdmin. Crie um banco chamado lavacao
- Importe o arquivo de banco de dados enviado por e-mail no seu phpMyAdmin
- Crie um arquivo .txt (no bloco de notas) e coloque a consulta SQL e o resultado
da consulta para cada item abaixo.
Anderson Schloegel
52
[email protected]
SQL – Comando UPDATE
UPDATE é útil quando você quer alterar registros de uma tabela. Você pode
alterar um ou mais campos ao mesmo tempo.
Exemplo:
Estou pedindo para que todos os registros da tabela cliente que possuam o campo
id preenchido com 1 tenham o campo nome atualizado para ‘Anderson Novo’.
Anderson Schloegel
53
[email protected]
SQL – Comando UPDATE
Sintaxe:
UPDATE tabela
SET campo1 = valornovo, ...
WHERE critério;
Onde:
Tabela - O nome da tabela cujos os dados você quer modificar.
Valornovo - Uma expressão que determina o valor a ser inserido em um campo específico
nos registros atualizados.
critério - Uma expressão que determina quais registros devem ser atualizados. Só os
registros que satisfazem a expressão são atualizados.
Anderson Schloegel
54
[email protected]
SQL – Atividade 06
Execute comandos de atualização, colocando o SQL e o resultado conforme cada
item abaixo.
1 – Parece que Mario Armario ganhou na mega sena. Atualize a marca do carro
dela para Ferrari e o veiculo para F50.
3 – A Micalateia Santa perdeu uma causa na justiça e não conseguiu pagar seu
licenciamento. Ela trocou seu carro por um Chevrolet Chevette. Atualize no banco
de dados.
5 – Quem diria que Molusco Um trocaria sua terrinha por Laguna, SC. Atualize sua
cidade e estado.
Anderson Schloegel
55
[email protected]
SQL – Pesquisando com LIKE – parte 1
A função LIKE, do MySQL, faz uma busca sofisticada por uma substring dentro de uma string
informada. Traduzindo, ele faz uma pesquisa.
Anderson Schloegel
56
[email protected]
SQL – Pesquisando com LIKE – parte 1
Exemplo 01: Quero pesquisar os nomes que começam com A
Comando SQL
SELECT * FROM cliente WHERE nome LIKE 'A%';
Comando SQL
SELECT * FROM cliente WHERE modelo LIKE '%i';
Exemplo 03: Quero pesquisar todos os telefones que tenham 30 em algum lugar
do número
Comando SQL
SELECT * FROM cliente WHERE telefone LIKE '%30%';
Anderson Schloegel
57
[email protected]
SQL – Atividade 07
Execute comandos de consulta usando o LIKE.
Coloque o comando SQL e o resultado da consulta
Anderson Schloegel
58
[email protected]
SQL – Pesquisando com LIKE – parte 2
A função LIKE, do MySQL, faz uma busca sofisticada por uma substring dentro de uma string informada
na posição informada. Traduzindo, ele faz uma pesquisa na posição da string que queremos.
Anderson Schloegel
59
[email protected]
SQL – Pesquisando com LIKE – parte 2
Exemplo 01: Quero pesquisar as marcas de carro onde a segunda letra é O
Comando SQL
SELECT * FROM cliente WHERE marca LIKE '_o%';
Comando SQL
SELECT * FROM cliente WHERE modelo LIKE '__0%';
Anderson Schloegel
60
[email protected]
SQL – Atividade 08 – parte 1
Execute comandos de consulta usando o LIKE
1 – Nomes e telefones dos registros onde o telefone tem os quatro primeiros dígitos (tirando o DDD)
iniciando com 8884.
2 – Nome, modelo e marca de todos os registros onde a cidade tem a segunda letra com A.
4 – Todos os nomes e celulares de registros onde o celular tem o numero 8 na segunda e na penúltima
posição (desconsiderando o DDD)
5 - Selecionar todos os nomes dos registros que tenham marca igual a honda ou volkswagen, e que o celular
inicie em 90 (tirando o DDD).
6 - Selecionar todos os nomes dos registros que tenham a cadastro inativo, que o modelo do carro comece
com ‘c’ e que o penúltimo caractere do nome do cliente seja ‘d’.
7 - Selecionar todos os celulares de registros que o primeiro caractere for 4 e o terceiro for 8, e ainda que
estejam com o cadastro ativo.
Anderson Schloegel
61
[email protected]
SQL – Função DISTINCT
A função DISTINCT é utilizada para não mostrar valores repetidos.
Porém, eu não quero que apareça a Volkswagen três vezes. Quero apenas saber
quais marcas estão na tabela. Podemos resolver isto com a função DISTINCT
Percebam que neste exemplo eu não estou usando qualquer critério na cláusula
WHERE, porém eu poderia usar em qualquer momento. Exemplo:
Anderson Schloegel
62
[email protected]
SQL – Função Count()
A função COUNT() é utilizada para saber quantos registros existem na consulta.
Notem que neste exemplo eu também não estou usando qualquer critério na
cláusula WHERE, porém eu poderia usar em qualquer momento. Exemplo:
Comando SQL > SELECT count(*) FROM cliente WHERE celular LIKE '47%';
O resultado será: 10
Anderson Schloegel
63
[email protected]
SQL – Atividade 9
Anderson Schloegel
64
[email protected]
SQL – Função BETWEEN
A função BETWEEN é utilizada para consultar valores entre um intervalo de dados
previamente definido. Sempre será pedido entre um valor inicial e um valor final.
Anderson Schloegel
65
[email protected]
SQL – Operador ORDER BY
O operador lógico ORDER BY, ou ORDENAR POR, simplesmente lista os registros,
colocando-os em ordem de acordo com o campo solicitado.
Exemplo:
SELECT * FROM cliente WHERE estado = “sc” ORDER BY nome DESC;
Este select retornará todos os dados da tabela cliente ordenando os resultados pelo nome em
ordem descendente.
Anderson Schloegel
66
[email protected]
SQL – Operador LIMIT
O LIMIT fará o papel de exibir uma parte dos resultados.
Ele indica qual trecho da consulta será retornado.
Suponha que você quer retornar os 10 primeiros resultados de uma consulta.
Você colocará LIMIT 0,10. Ou seja, exibir a partir do registro zero, e exibir 10
resultados.
SELECT * FROM cliente WHERE marca = 'ford' ORDER BY ano ASC LIMIT
0,5;
Anderson Schloegel
67
[email protected]
SQL – MAX, MIN, AVG
Anderson Schloegel
68
[email protected]
SQL – Atividade 10
Anderson Schloegel
69
[email protected]
COMANDOS BÁSICOS
DELETE
- O comando DELETE nos permite excluir um ou mais registros de uma tabela. A
exclusão se aplica a todos os registros onde a nossa cláusula WHERE for verdade.
Exemplo
Obs: Estou pedindo para que a consulta exclua todos os cadastros de clientes onde o
estado dele é inativo.
Anderson Schloegel
70
[email protected]
COMANDOS BÁSICOS
INSERT
- O comando INSERT nos permite cadastrar dados em uma tabela existente.
INSERT INTO nome_da_tabela (coluna1, coluna2, ...) VALUES (valor1, valor2, ...)
Exemplo
Anderson Schloegel
71
[email protected]
COMANDOS BÁSICOS
Atividade
1 - O dono da nossa lavação andou fazendo trabalho mal feito e perdeu todos os
clientes de São Paulo e Rio de Janeiro.
- Terezinha Ranzinha, Belo Horizonte, MG, Ford KA ano 2010, sem e-mail, sem
celular, sexo Feminino, 89 anos.
- Astrogildo Estelar Souza, Salvador, BA, Hyundai Veloster ano 2015,
[email protected], sem celular, sexo Masculino, 22 anos.
Anderson Schloegel
72
[email protected]