0% acharam este documento útil (0 voto)
71 visualizações25 páginas

Manual Do MySQL - Versão 2.0

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
71 visualizações25 páginas

Manual Do MySQL - Versão 2.0

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 25

Download do MySQL Workbench

Acesse o site: www.mysql.com


Tela Inicial do Site do MySQL

No site inicial procurar a área de Developer (área de


desenvolvedores)
Na página de Developer Zone vá até o fim da página na seção de
Downloads, selecione o MySQL Workbench.

Download do Wamp
Acesse o site: www.wamp.com
Tela do site do WAMP

Será necessário baixar e instalar alguns arquivos antes de instalar o Wamp


Faça o download dos arquivos no seguinte link:
https://wampserver.aviatechno.net/files/vcpackages/
all_vc_redist_x86_x64.zip
Importante: Extrai os arquivos e execute todos eles, tanto os X86 com os
X64.
Depois de instalar tudo clique no ícone do Wamp para iniciar o
serviço. Para saber se os serviços foram iniciados basta olhar se o ícone do
Wamp na barra de atalhos do Windows ao lado da hora estará na cor Verde

Depois disso podemos abrir então o MySQL Workbench

Na tela do Workbench vamos dar um duplo clique no

Local intance MySQL80 para iniciar a criação do BD.

Antes de começarmos com a criação do banco devemos lembrar dos tipos


de dados aceitos no MySQL.
Tipos de Dados Primitivos mais usados no MySQL.

NUMÉRICOS
 INT: armazena números inteiros, como 1,2 ,3 etc.
 FLOAT: armazena números com casas decimais, como 1,23 ou 4.56.
 DOUBLE: armazena números com casas decimais como no FLOAT,
mas é indicado
quando precisamos de muitas casas decimais, ideal para valores que
exigem alta precisão, como cálculos científicos ou financeiros.
 DECIMAL: Similar ao FLOAT, mas com precisão fixa, útil para valores
monetários.
Ex.: DECIMAL (10, 2), onde 10 é o número total de dígitos e 2 é o
número de dígitos após o ponto decimal.

TEXTO
 CHAR: Armazena uma sequência fixa de caracteres. Por exemplo,
‘ABC’
 VARCHAR: Armazena uma sequência variável de caracteres. Por
exemplo, ‘Olá Mundo’
 TEXT: Usado para grandes quantidades de texto, como descrições
longas.

DATA e HORA

 DATE: Armazena datas no formato ‘AAAA-MM-DD’, como ‘2024-09-


19’.
 TIME: Armazena horários no formato ‘HH:MM:SS’, como
’14:30:00’.
 DATETIME: Combina data e hora, como ‘2024-09-19 14:30:00’.

BOOLEANO

 BOOLEAN: Armazena valores verdadeiro (TRUE) ou falso (FALSE).


Para criar um banco de dados usamos o comando:
CREATE DATABASE NOMEDOBANCO;
Nosso banco de dados agora está criado.
Para usar o banco retomamos ao famoso
USE NOMEDOBANCO;
Apenas para relembrar, para mostrar as tabelas do banco usamos o
famoso
SHOW TABLES;

CRIAÇÃO DE TABELAS
Para criar tabelas é necessário definir nome da tabela, atributos, domínios e
regras, chaves e informações adicionais.
Vamos fazer a criação da tabela VENDEDORES.
Par criar a tabela será necessário digitar o comando usando esse tipo de
estrutura:
Create table NOME(
atributo1 tipo nulo ou não, se é autoincremento ou primária,
atributo2 tipo nulo ou não,
atributo3 tipo outras características,
chave primária,
chave estrangeira
);
A imagem acima mostra a aplicação da estrutura básica de criação de
tabelas, no caso específico da tabela VENDEDORES.
Observe que na linha 1, criamos e demos nome à tabela, já na linha 2,
criamos o atributo idvendedores que é do tipo inteiro positivo (unsigned),
sendo obrigatório (NOT NULL), e finalmente, designamos ele como um
auto incremento (AUTO_INCREMENT), pois será definido como chave
primária na linha 7. Na linha 3, temos o atributo nome (texto) do tipo
VARCHAR(50), o que permite 50 caracteres, sendo obrigatório (NOT NULL).
A Linha 4 tem o atributo datacontratacao do tipo DATE não obrigatório. O
formato do atributo de tipo DATE é por padrão 'AAAA-MM-DD'. Ou seja:
ano-mês-dia. O Atributo salario, do tipo float tem valor DEFAULT = 1000,
isso significa, que se nenhum valor for passado, esse valor padrão
(Default, em inglês) será assumido no atributo. O atributo Comissão
também é float, mas não obrigatório. Finalmente definimos a chave
primária idvendedores.

Agora crie uma nova tabela e de o nome de Clientes, siga o mesmo


modelo da tabela VENDEDORES, com todos os atributos. O script de
criação desta tabela estará descrito na figura a seguir.

Como foi dito anteriormente, a ordem de criação das tabelas leva em


consideração, que tabelas com menos chaves estrangeiras devem ser
criadas primeiro. Por isso, criamos primeiramente, VENDEDORES e
CLIENTES, já que não possuíam chaves estrangeiras.

Agora vamos criar a tabela FATURAS.


A tabela FATURAS possui duas chaves estrangeiras idclientes e
idvendedores. Mesmo sendo chaves estrangeiras, precisam ser criadas
como atributos, antes de se fazer atribuição como chaves estrangeiras.
Vamos ao script, transcrito na figura a seguir:
O que temos nesta tabela: chave primária idfaturas, o atributo data do tipo
date. Nas linhas 4 e 5 criamos os atributos idclientes e idvendedores
idênticos ao que temos nas tabelas originais, excetuando-se o
auto_increment. Essas linhas só criam os atributos, mas eles ainda não são
chaves. A Linha 6 atribui idfaturas como chave primária desta tabela. As
chaves estrangeiras (FOREIGN KEY) são definidas nas linhas 7 e 8. A
notação básica é dizer o nome do atributo na tabela atual que será a chave
estrangeira.
No REFERENCES informar a tabela de origem e entre parênteses, o nome
do atributo na tabela de origem. Bons modelos geralmente, mantém os
noms das chaves estrangeiras idênticos aos da tabela de origem.
Finalmente, se dermos um SHOW TABLES, teremos as 3 tabelas criadas.
MODIFICAÇÃO DE ESTRUTURA DE TABELAS
Uma vez criadas nossas tabelas do modelo, agora materializadas no projeto
lógico, é possível que se busque possíveis ajustes ou alterações nas
mesmas.

A primeira delas é apagar a tabela. O comando é simples:


drop table nomedatabela;

Para evitar confusão com o comando delete, assume que DROP significa
apague a estrutura da tabela.

Caso a tabela tenha dados, e se queira limpar os dados usamos o


TRUNCATE:

Truncate table nomedatabela;

Finalmente, imaginemos que queremos alterar apenas parte da estrutura


de uma tabela. Essa alteração estrutural (ALTER) tem 4 possibilidades
básicas:

1) Adicionar atributo – ADD


2) Remover atributo – DROP
3) Modificar atributo – MODIFY
4) Mudar nome do atributo – CHANGE

Vamos tomar a tabela CLIENTES como exemplo. Observe que todos os


atributos estão como varchar. Vamos fazer alguns ajustes.

a) Ajuste 1: vamos adicionar o atributo telefone:

ALTER TABLE CLIENTES ADD TELEFONE Varchar(10);

Esse comando altera a estrutura da tabela cliente adicionando o atributo


TELEFONE que será do tipo varchar(10);

b) Ajuste 2: vamos remover o atributo CEP:

ALTER TABLE CLIENTES DROP CEP;


Esse comando altera a estrutura da tabela cliente removendo o atributo
CEP.

c) Ajuste 3: Vamos trocar o tipo do endereço pra TEXT

ALTER TABLE CLIENTES MODIFY ENDERECO TEXT;

O Modify basicamente altera o tipo de dados e domínio.

d) Ajuste 4: Vamos renomear o atributo cidade para município

ALTER TABLE CLIENTE CHANGE ENDERECO MUNICIPIO VARCHAR(100);

Aqui, além de modificar o nome do atributo ENDERECO para MUNICIPIO,


pudemos modificar o tipo para varchar(100). O CHANGE muda o nome e o
tipo do atributo.

Adicionalmente, gostaria de apresentar o tipo ENUM (Enumeração), que


serve para predefinir uma lista de valores, à escolha do usuário para um
atributo. Vamos ao exemplo seguir:

sexo ENUM(‘m’,’f’); -- atributo sexo só pode ter os valores ‘m’ ou ‘f’

É importante mencionar que podemos criar atributos no momento de


criação de tabela com o CREATE TABLE ou através do ALTER TABLE ADD

Então vamos agora adicionar um atributo sexo para clientes usando o


comando ENUM:

alter table clientes add sexo enum(‘m’,’f’);

Com a execução dos comandos acima, a tabela CLIENTES fica da seguinte


forma:

Use o comando describe clientes para ver com ficou a tabela.


Observe que as modificações nos atributos são bem diversas como na
figura acima. Vale destacar que se a tabela estiver preenchida com dados,
pode haver perda de dados, problemas de conversão de tipos e outros
erros. Portanto, é preciso cautela ao usar ALTER TABLE e suas variantes
com o banco de dados em produção.
Parte 1 - Exercícios de Fixação para o Banco Vendas
1. Liste as tabelas do banco VENDAS.
2. Descreva cada uma das tabelas
3. Adicione o atributo telefone para clientes
4. Modifique o atributo cep para varchar(10)
5. Adicione o atributo sexo para vendedores do tipo ENUM com os valores
‘F’ ou ‘M’
6. Adicione o atributo hora na tabela fatura. O formato de hora é ‘HH:mm’
7. Remova o atributo inserido na questão anterior
8. Adicione o atributo valor do tipo Double na tabela faturas
9. Renomeie o atributo nome (tabela vendedor) para “nomevendedor”
10. Modifique o endereço para varchar(200)
11. Adicione um atributo UF com dois caracteres na tabela clientes.
12. Adicione um atributo valor tipo Double na tabela faturas
13. Adicione o atributo CPF na tabela Faturas
14. Remova o atributo CPF da tabela Faturas
15.Altere a comissão na tabela VENDEDORES para Double
16. Modifique o atributo cep para varchar(10)
Como Modificar dados de um banco?

A pergunta que nos vem a seguir é como podemos adicionar, modificar ou


até excluir dados de uma tabela? Para dar continuidade a nosso processo
de aprendizagem, vamos conhecer 3 novos comandos: INSERT, DELETE,
UPDATE.

Antes de começarmos a inserir os dados vamos criar duas tabelas, uma


tabela chamada TIMES e outra tabela chamada Jogadores.
O comando INSERT (inserir em português) é o comando básico para
adicionar (ou cadastrar) um registro (conjunto de dados) numa tabela. Ele
tem duas sintaxes.

A sintaxe mais básica: Insert into TABELA (atributo1, atributo2,


atributoN) values (valor1,valor2,valor3);

No bom português o comando acima seria algo assim:


“insira na tabela cujo nome é TABELA nos atributos
(atributo1,atributo2, atributoN) os valores (valor1,valor2, valorN)”

Um detalhe não tratado antes, que é importante mencionar aqui é o


fato do atributo idtimes ser AUTO_INCREMENT. Essa informação é
relevante, em especial pelo fato deste atributo ser uma chave primária.
Logo a cada novo time inserido, incrementa-se em 1 o valor do atributo
idtimes (do último inserido).
Por que essa informação é importante? A resposta a essa questão é
que se o atributo for auto incremento não precisamos passar valor.
Exemplo de INSERT com auto_increment:

OPERAÇÃO 1 - insert into times (nome,valor,anodefundacao) values


(‘Santos’,4000000,1921);

Duas observações são importantes aqui:


a) primeiro se observa que o atributo-chave idtimes não passamos
nem o atributo nem o valor a ser preenchido. Isso aconteceu pela
característica de autoincremento do atributo.
b) A segunda informação é que todo atributo não numérico deve ser
preenchido com aspas simples, como é o caso do nome do time.
Na tabela jogador, por exemplo, a data (tipo DATE) é também preenchida
entre aspas simples.
Caso a chave não fosse auto_increment, seria obrigatório passar o
atributo e valor para idtimes.
A segunda notação para este comando permite a inserção de múltiplos
registros (linhas) num só comando:
OPERACÃO 2 - insert into times (nome,valor,anodefundacao)
values (‘Vasco’,5000000,1891),(‘Benfica’,400000,1910),
(‘Barcelona’, 100000,1899);

Por último vamos inserir um jogador na tabela jogadores:

insert into jogadores (nome,salario,datanascimento,idtimes)


values (‘Kaka,10000,’1999-01-10’,1);

O último parâmetro desse comando é IDTIMES e estou passando um


valor 1.

Exercício:
1. Insira um novo time com dados a sua escolha
2. Insira um novo jogador no Flamengo
3. Insira um novo jogador no Vasco
4. Atualize o valor do Vasco para 100000
5. Atualize o nome atual do Bahia para EC Bahia
6. Remova o time inserido na questão 1
7. Remova o jogador inserido na questão 3
8. Remova o jogador KAKA

Baseado no UML a seguir crie o banco de dados do Clube da Pizza e suas


tabelas com seus atributos.
Agora inclua dados no banco de dados do clube da pizza para podermos
efetuar consultas nesses dados.

O comando SELECT – Para selecionar dados

O primeiro comando a ser aprendido para selecionar dados é o SELECT.


Vamos aprender sua notação básica:

Select * from times; -- seleciona todos os atributos e dados da tabela


times
Na terminologia, usar o comando SELECT é chamado de “consultar” na
tabela.
O uso do * (asterisco) não é recomendado para grandes quantidades de
dados, por questões de performance, processamento e tráfego de rede.
Portanto deve ser evitado.

Sendo assim, podemos selecionar apenas alguns atributos a serem exibidos


como a seguir:

Observe que o atributo idtimes não é exibido nessa coleção, pois não o
colocamos na lista de atributos antes do FROM, conforme listagem da
figura acima.
Uma pergunta a seguir seria: "tem uma forma de filtrar os dados que quero
exibir?"
Por exemplo: Times que foram fundados depois de 1900. Nossa pergunta
poderia ser formulada assim: “Mostre todos os times onde ano de
fundação seja maior que 1900?”
Sendo assim precisamos aprender uma palavra nova: WHERE (no bom
português, significa “onde”). Alguns estudantes novatos gostam de associar
tal comando a um IF (SE) das tradicionais linguagens de programação.
Traduzindo para nosso SQL teríamos:
Observe que o time Flamengo saiu da lista exibida, uma vez que, sua
fundação é anterior a 1900, conforme resultados exibidos.

Se minha questão fosse: “Mostre os times cuja fundação é entre 1900


e 1920”.
Agora temos um intervalo fechado para situações assim podemos usar
BETWEEN para intervalos.
Uma tradução apropriada para BETWEEN seria DENTRE.
where anodefundacao between 1900 and 1920;

O comando acima numa tradução literal, significaria “onde ano de fundação


está entre 1900 e (AND) 1920.
O comando BETWEEN é ótimo para intervalos fechados.
A cláusula WHERE permite operadores lógicos diversos (= , != , <>, >, <,
AND, OR dentre outros).
Vamos agora selecionar alguns dados de jogadores. O resultado dessa
consulta pode ser visto, a seguir,
Agora que vimos dados dos jogadores, vamos fazer algumas perguntas:

1. Mostre jogadores que ganham mais de 3000 ou menos de 2000.

Observe que na figura acima precisamos usar um conector “ou” (operador


lógico OR) para responder a essa questão. A Cláusula WHERE suporta
várias combinações de conectores, operadores e filtros.

2. Mostre os dados do jogador cujo nome seja “jorge”

A consulta realizada na figura acima foi uma busca exata pelo nome, por
isso usamos a igualdade. Lembrando do uso de aspas simples para tipos
não numéricos.

Agora, vamos prosseguir aprendendo uma coisa nova: Ordenação.


Vamos usar o comando ORDER BY para fazer isto. Imagine que quero a
lista de jogadores ordenada por nome s em ordem alfabética. Veremos o
resultado na figura abaixo:

O comando ORDER BY, ou “ordernar por”, usado para ordenações


diversas. Caso queiramos a lista na ordem decrescente (descendente) é só
adicionar o sufixo DESC.

Também é possível fazer uma série de ordenações combinadas.


Agora podemos responder algumas perguntas básicas usando o que
chamamos de funções de agregação:

a) Contagem de jogadores (total de jogadores)


Para contar os jogadores usamos a função COUNT(ATRIBUTO). Essa
função requer um atributo como parâmetro, podendo ser qualquer um da
tabela. Para melhorar a exibição de dados usamos um rótulo ou apelido
(alias) quando usamos o comando “as total”. Em outras palavras
dissemos “pegue esse resultado e dê um nome de total”.
b) Maior salário de jogadores
E necessário especificar exatamente o atributo que queria o maior valor ao
usar MAX(salario). Para o menor valor, usamos a função MIN(salario).
Lembrando que podemos dar qualquer rótulo ou apelido para esse
resultado.

c) Salário médio dos jogadores


Para calcular a média de valores numéricos usamos a função
AVG(Atributo), conforme listado na figura abaixo.

A tabela abaixo resume mais funções de agregação.

Vamos agora, somar os salários dos jogadores, usando a função


SUM(salario). O resultado disto pode ser visto na figura abaixo:
A função DISTINCT serve para descartar valores repetidos. Vamos ver um
exemplo simples:

Esse exemplo mostrado acima, pode parecer controverso, mas se


observarmos, temos 12 jogadores cadastrados com diferentes salários.
Como eu pedi para exibir diferentes salários DISTINCT SALARIO, o número
de resultados caiu, pois foram retirados os registros de dados com
repetições. Sendo assim, apresentamos as principais funções de
agregações.

Com tais funções combinadas com as cláusulas WHERE, ORDER BY e


outros comandos apresentados podem trazer soluções a vários problemas e
questões.

Questões Práticas
Parte 1 - Usando o modelo e banco de dados BANCOTIMES responda a essas
questões:

1. Mostre nome e ano de fundação dos times, ordenados pelo nome


2. Mostre o valor médio dos times
3. Mostre o nome, salário e data de nascimento de jogadores do mais velho
para o mais novo
4. Mostre o nome e salário de jogadores que ganham mais de 2000.
5. Mostre o valor total dos times
6. Mostre o nome dos jogadores ordenados por nome decrescente
7. Mostre o valor mais baixo de um time
8. Mostre nome e data de nascimento para jogadores nascidos a partir do
ano 2000
9. Mostre o total de jogadores que ganham menos de 3000
10. Mostre o maior valor de times

Crie um novo BD chamado CLINICA com as seguintes tabelas e atributos:

Agora alimente o BD CLINICA com dados e depois faça os exercícios abaixo:

1. Mostre nome e sexo dos pacientes, ordenados pelo nome


2. Mostre o valor médio das idades dos pacientes
3. Mostre dia e hora das consultas, ordenadas por dia
4. Mostre o nome e salário de médicos que ganham mais de 2000.
5. Mostre o valor total dos salários de médicos
6. Mostre o nome dos pacientes ordenados por nome decrescente
7. Mostre o valor mais baixo de um salário de médico
8. Mostre nome e idade e sexo de pacientes, que tem mais de 30 anos
9. Mostre o total de médicos que ganham menos de 3000
10. Mostre a maior idade de pacientes

Agora já sabemos como ver estrutura e dados de uma tabela, podemos


continuar nossa análise do banco CLINICA e aprender e ampliar nossos
conhecimentos através de exercícios e cenários novos, associando os
conceitos aprendidos anteriormente.
Para isto, vamos fazer questionamentos ao banco e apresentar soluções:
PROBLEMA 1: Mostrar o nome, sexo e idade dos pacientes com idade
maior que 18 anos.
Para essa ação podemos aplicar o filtro WHERE IDADE > 18. Mas se
quisermos apenas pacientes do sexo feminino? Basta adicionar o operador
lógico AND e uma nova condição sexo =’f’.
PROBLEMA 2: Mostrar o total de pessoas por sexo. Para resolver essa
questão precisamos entender que poderíamos fazer duas contagens
(usando Count). Seria um para cada sexo:
select count(nome) from pacientes where sexo= ‘f’;
select count(nome) from pacientes where sexo= ‘m’;

O problema desta solução é que seriam consultas distintas com resultados


distintos. Mas imagine que fossem 3000 sexos diferentes possíveis, você
teria que fazer 3000 consultas para atingir esse resultado.
Sendo assim, deveria existir algum comando capaz de realizar
agrupamentos. Esse comando é o famoso GROUP BY.
PROBLEMA 3: Mostrar a média salarial por sexo para os funcionários que
ganham acima de RS 1000.
Para resolver esse problema, vamos trabalhar, por similaridade, com a
forma de resolução anterior. A função AVG(atributo) nos fornece a média
de um conjunto de valores pra aquele atributo. Mas além disso, queremos
mostrar o sexo do funcionário (agrupamento), desde que seu salário seja
superior à R$ 1000,00 (filtro).
Sendo assim, nossa resposta exige um SELECT contendo função de
agregação (AVG), filtro (WHERE) e agrupamento (GROUP BY).

PROBLEMA 4: Mostrar o total de consultas de um paciente Para resolver


esse problema precisamos entender primeiro, que por uma questão de
modelagem, se prefere guardar o idpacientes na tabela CONSULTAS.
O motivo para isso é para que se evite o problema de inconsistência nos
dados, além de minimizar o uso recorrente do atributo nome na tabela
CONSULTAS, evitando que o usuário em processos de digitação para um
mesmo nome, digite (de maneira errada ou despropositais) nome errado
para um paciente já cadastrado.
Idpacientes é uma chave, neste caso estrangeira, por ter origem na tabela
PACIENTES.
Com o conhecimento anterior adquirido poderíamos pensar então que a
resposta seria algo do tipo:
select idpacientes, count(dia) as total from consultas group by
idpacientes;

Você também pode gostar