Anda di halaman 1dari 80

MARCOS DE MELO

Banco de dados MySQL


1 Edio

Marcas Registradas: Vrias marcas registradas aparecem ao longo deste livro. Mais do que
simplesmente list-las e informar quem possui seus direitos de explorao ou ento utilizar os
smbolos "TM" ou "" aps seus nomes, o autor e a MCTech declaram estar utilizando tais nomes
apenas para fins editoriais, em benefcio exclusivo do dono da marca registrada, sem inteno de
infringir as regras e leis de sua utilizao.

Banco de dados MySQL

Banco de dados MySQL

Pgina: 1

Banco de dados MySQL


Sumrio
Aula 1 Introduo ........................................................................................... 6
Surgimento do MySQL ........................................................................................................6
Licena de uso ....................................................................................................................6
Para que usar um banco de dados? ....................................................................................6
SGDB...................................................................................................................................7
Conceito de banco de dados relacional ..............................................................................7
Campos .......................................................................................................................... 7
Registros......................................................................................................................... 7
Tabelas ........................................................................................................................... 8
Definio de nomes de Banco de dados, Tabelas, ndice, Coluna e Alias ......................... 8
Tipos de dados....................................................................................................................8
Tipos de dados Numricos .............................................................................................. 9
Tipos de dados Data/Hora ............................................................................................ 10
Tipos de dados String.................................................................................................... 10
Conceitos bsicos sobre banco de dados relacional .........................................................11
Tabelas relacional ......................................................................................................... 11

Aula 2 - Instalao do MySQL no Mac ....................Erro! Indicador no definido.


O que o XAMPP? ........................................................................................................ 13
Instalando o pacote de programas XAMPP ......................... Erro! Indicador no definido.
Acessando o banco de dados MySQL pela primeira vez ................................................ 13
Criando seu primeiro banco de dados ..............................................................................17
Criando a primeira tabela ............................................................................................. 18
Inserindo dados na tabela............................................................................................. 20
Visualizando os registros cadastros nas tabelas ............................................................ 22
Atividades............................................................................... Erro! Indicador no definido.

Pagina: 2

Banco de dados MySQL


Aula 3 Criao de Bancos e Tabelas .............................................................. 24
O Workbench (GUI tool) ...................................................................................................24
Instalando e usando o Workbench (GUI tool) ..................................................................24
Executando o Programa Workbench ...................................... Erro! Indicador no definido.
Interface do programa .................................................................................................. 24
Criando uma nova instncia de conexo ....................................................................... 25
Criando banco de dados e suas tabelas ............................................................................28
Criando um novo banco de dados ................................................................................. 28
Visualizando bancos de dados ...................................................................................... 28
Ativando um banco de dados ....................................................................................... 29
Deletando um banco de dados ..................................................................................... 29
Criando tabelas............................................................................................................. 29
Exibindo as tabelas existentes no banco de dados ........................................................ 31
Exibir descries de uma tabela .................................................................................... 31
Adicionando um campo em uma tabela existente ........................................................ 32
Alterando um campo em uma tabela existente ............................................................ 32
Deletando uma coluna em uma tabela existente .......................................................... 33
Deletando uma tabela existente ................................................................................... 33
Atividades............................................................................... Erro! Indicador no definido.

Aula 4 Instruo Select ................................................................................. 37


Tabelas de exemplos para consultas ............................................................................. 37
Comando bsico do select ............................................................................................ 39
Atividades............................................................................... Erro! Indicador no definido.

Aula 5 - Clusula Where / Operadores de Comparao .................................. 42


Operadores de comparao .............................................................................................42
Igual a = ................................................................................................................... 42
Diferente != ou <> ou ^= ................................................................................... 43
Maior que > ............................................................................................................. 43

Pgina: 3

Banco de dados MySQL


Maior ou igual a >= .................................................................................................. 44
Menor que < ............................................................................................................ 44
Menor ou igual a <= .................................................................................................. 45
Atividades............................................................................... Erro! Indicador no definido.

Aula 6 Clusula Where / Comandos Especiais SQL ....................................... 47


Operadores SQL especiais ................................................................................................47
BETWEEN ..................................................................................................................... 47
IN (val1, val2, val3, val4) ............................................................................................... 48
LIKE .............................................................................................................................. 48
IS NULL ......................................................................................................................... 49
Atividades............................................................................... Erro! Indicador no definido.

Aula 7 Parmetros da instruo Select / Parte 1 .......................................... 51


Parmetro JOIN ................................................................................................................51
Parmetro ORDER BY .......................................................................................................52
Parmetro DISTINCT(Omite registros duplicados) ............................................................52
Parmetro LIMIT (limitador de registros selecionados)....................................................53
Parmetro COUNT (Contagem de registros) .....................................................................55

Aula 8 Parmetros da instruo Select / Parte 2 .......................................... 56


Parmetro SUM (Soma de valores) ..................................................................................56
Parmetro AVG (Mdia de valores) ..................................................................................56
Parmetro MAX/MIN .......................................................................................................57
Parmetro GROUP BY .......................................................................................................58
Parmetro HAVING...........................................................................................................59

Aula 9 Instrues de Inseres, atualizaes e excluses ............................ 60


Insert ................................................................................................................................60
Update..............................................................................................................................60
Delete ...............................................................................................................................62
Pagina: 4

Banco de dados MySQL


Atividades............................................................................... Erro! Indicador no definido.

Aula 10 Controle de Usurios / Backups e Recovers .................................... 64


Controle de Usurios ........................................................................................................64
Criando um usurio ...................................................................................................... 64
Exibindo usurios cadastrados ...................................................................................... 65
Excluindo um usurio ................................................................................................... 65
Liberando Privilgios..................................................................................................... 66
Backups e Recovers ..........................................................................................................68
Backup pelo phpMyAdmin ...............................................................................................68
Criando um backup ....................................................................................................... 70
Restaurando um Backup ............................................................................................... 72

Aula 11 Reviso ............................................................................................. 75


Exerccio 1 Criando um banco de dados e suas tabelas .................................................75
Exerccio 2 - Questionrio .................................................................................................76

Aula 12 Avaliao.................................................Erro! Indicador no definido.

Pgina: 5

Banco de dados MySQL


Introduo
Seja bem-vindo ao curso de desenvolvimento de banco de dados em MySQL, caro aluno e
amigo. Este livro tem como fundamento abordar a instalao, entendimento e utilizao do banco
de dados open source mais utilizado no mundo, o MySQL.
A compreenso do conceito de banco de dados e das tecnologias relacionadas com a sua
utilizao, so fundamentais para os profissionais de desenvolvimento de sistemas Web,
principalmente porque o banco de dados a base de um sistema Web.

Surgimento do MySQL
Foi desenvolvido no ano de 1980 na Sucia por dois suecos e um finlands; David Axmark, Allan
Larsson e Michael "Monty" Wideniuse. Com o sucesso do MySQL, criaram a empresa MySQLAB que
difundiu ento o uso do MySQL pelo mundo a fora.
No dia 16 de Janeiro de 2008, a MySQL AB, foi comprada pela Sun Microsystems, por US$ 1
bilho de dlares. No dia 20 de Abril de 2009, foi anunciado que a Oracle compraria a Sun
Microsystems e todos os seus produtos, incluindo o MySQL.

Licena de uso
Atualmente a Oracle, atual proprietria do MySQL continua disponibilizando o MySQL
gratuitamente, sendo um Software Livre com base na GPL (Licena Pblica Geral) mas, se o programa
que acessar o Mysql no for GPL, uma licena comercial dever ser adquirida.

Para que usar um banco de dados?


muito fcil dar exemplos da usabilidade de sistemas de banco de dados nas aplicaes web.
Como exemplo podemos citar, instituies financeiras (bancos), lojas online, sistemas web em geral,
so exemplos claros desta necessidade. Imagine a seguinte situao: Um usurio acessa um site
comercial de venda online de eletrnicos, com uma variedade imensa de produtos disponveis para
compra. As informaes sobre cada produto, como, cdigo do produto, descrio, valor, entre
outros, so considerados campos de um registro, que so dados armazenados em um sistema
gerenciador de banco de dados ou simplesmente SGDB. Para realizar a compra do produto,
Pagina: 6

Banco de dados MySQL


geralmente o sistema solicitara dados do cliente, como, nome, cpf, endereo, e-mail e muito mais.
Estes dados sero salvos no banco de dados da loja virtual, para que o cliente no precise em uma
nova compra, seus dados novamente.

SGDB
Sistemas de Gerenciamento de Banco de dados so a maneira mais eficaz de armazenar e
pesquisar dados relacionais, possibilitando aos usurios utilizarem uma grande variedade de
abordagens no tratamento das informaes. Todos os bancos de dados relacionais atualmente em
uso no mundo, so manipulados pela linguagem SQL (Structured Query Language), ou Linguagem
de Consulta Estruturada em portugus.
A linguagem SQL foi criada originalmente pela IBM no incio dos anos 70 e hoje um padro
para todos os bancos de dados relacionais. Esse padro da linguagem foi determinado
pela American National Standards Institute (ANSI) em 1986 e ISO em 1987.

Conceito de banco de dados relacional


Um Banco de Dados Relacional um conceito abstrato que define maneiras de armazenar,
manipular e recuperar dados estruturados, modelados unicamente como dados em tabelas,
originando um banco de dados. Explicando de maneira resumida, podemos dizer que, um banco de
dados um local onde armazenamos informaes para posteriormente realizarmos consultas a
estas informaes distintas, agrupadas em forma de registros no formato de tabelas.
O banco de dados constitudo por trs elementos principais: campos, registros e tabelas.

Campos
exatamente o local onde colocamos determinada informao. Este local normalmente
nomeado com palavras que caracteriza a informao armazenada dentro dele, por exemplo, um
campo nomeado como Endereo guardaria obviamente, informaes relacionadas a esta palavra.

Registros
Registros um conjunto de campos com informaes normalmente relacionadas a um
determinado assunto. Por exemplo, vamos supor que o assunto em questo seja dados pessoais,
o conjunto de campos relacionadas poderia ser ento nome, endereo, fone. Cada conjunto de
informaes alimentado por informaes, constitui um novo registro de dados cadastrado.
Pgina: 7

Banco de dados MySQL


Tabelas
Tabela de banco de dados armazenam um determinada grupo de registros por categoria, ou
seja, uma tabela uma categoria que armazena um conjunto de registros de um determinado
assunto.
Abaixo podemos entender a estrutura de uma tabela de dados;

Estrutura de uma tabela, seus registros e campos

Definio de nomes de Banco de dados, Tabelas, ndice, Coluna e Alias


Identificador

Tamanho mximo

Caracteres permitidos

Banco de dados

64

Qualquer caractere que permitido em um nome de


diretrio exceto / ou ..

Tabela

64

Qualquer caractere permitido em um nome de arquivo,


exceto

Coluna

64

Todos os caracteres

Alias

255

Todos os caracteres

Tipos de dados
Ao criar uma tabela voc dever especificar o tipo de dados a ser armazenado em cada campo,
nela especificado. Para cada campo de cada uma da tabelas, necessrio determinar o tipo de
Pagina: 8

Banco de dados MySQL


dados que ele poder armazenar, e conseguir um armazenamento com a menor utilizao de
espao possvel.
O MySQL possui trs tipos de dados bsicos de tipos de dados: Numricos, Data/Hora e String.

Tipos de dados Numricos


TIPO

INTERVALO

BYTES

DESCRIO

TINYINT[(M)]

-127 a 128; ou
0 a 255

Inteiros muitos pequenos

-32768 a 32767
-8388608 a 8388607; ou
0 a 16777215
-213 a 231-1; ou
0 a 232-1

2
3

O mesmo que TINYINT


O mesmo que TINYINT
Inteiros pequenos
Inteiros de tamanho mdio

Inteiros regulares

-263 a 263-1; ou
0 a 264-1
Depende da preciso

O mesmo que INT


Inteiros grandes

1.175494351E-38 a
3.402823466E+38
1.7976931348623157E+308 a
2.2250738585072014E-308

Varivel

M+2

BIT
BOOL
SMALLINT[(M)]
MEDIUMINT[(M)]
INT[(M)]
INTEGER[(M)]
BIGINT[(M)]
FLOAT(preciso)
FLOAT[(M,D)]
DOUBLE[(M,D)]
DOUBLE
PRECISION[(M,D)]
REAL[(M,D)]
DECIMAL[(M,D)]
NUMERIC[(M,D)]
DEC[(M,D)]

Varivel

Nmeros de ponto flutuante de preciso


simples ou dupla
Nmeros de ponto flutuante de preciso
simples. O mesmo que FLOAT(4)
Nmeros de ponto flutuante de preciso
dupla. O mesmo que FLOAT(8)
O mesmo que DOUBLE[(M,D)]
O mesmo que DOUBLE[(M,D)]
O mesmo que DOUBLE[(M,D)]
Nmero de ponto flutuante armazenado
comochar
O mesmo que DECIMAL
O mesmo que DECIMAL

OBSERVAES:

As opes entre colchetes ( [ e ]) so opcionais;

Dentre os tipos que se ajustam aos dados a serem inseridos, escolha sempre o de menor tamanho;

Para dados do tipo inteiro voc pode usar a opo UNSIGNED para especificar inteiros positivos ou zero;

M especifica o tamanho mximo de exibio;

D especifica o nmero de casas decimais. O valor mximo de D 30 ou M-2;

Tanto para nmeros inteiros como para nmeros de ponto flutuante voc pode especificar a
opo ZEROFILL que preenche os nmeros com zeros iniciais. Colunas especificadas com ZEROFILL so
automaticamente configuradas como UNSIGNED;

Pgina: 9

Banco de dados MySQL


Tipos de dados Data/Hora
TIPO

INTERVALO

DESCRIO

DATE
TIME
DATETIME

1000-01-01 a 9999-12-31
-838:59:59 a 838:59:59
1000-01-01 00:00:00 a 9999-1231 23:59:59
1970-01-01 00:00:00 a algum
momento em 2037. Depende do
limite do sistema operacional

Data. Exibido como YYYY-MM-DD


Hora. Exibido como HH:MM:SS
Data e hora. Exibido como YYYY-MM-DD HH:MM:SS

70 a 69 (1970 a 2069)
1901 a 2155

Ano
Ano

TIMESTAMP[(M)]

YEAR[(2)]
YEAR[(4)]

Registro de data e hora til para transaes. Os


formatos de exibio podem ser:

TIMESTAMP
TIMESTAMP(14)
TIMESTAMP(12)
TIMESTAMP(10)
TIMESTAMP(8)
TIMESTAMP(6)
TIMESTAMP(4)
TIMESTAMP(2)

YYYYMMDDHHMMSS
YYYYMMDDHHMMSS
YYMMDDHHMMSS
YYMMDDHHMM
YYYYMMDD
YYMMDD
YYMM
YY

Tipos de dados String


TIPO

INTERVALO

DESCRIO

[NATIONAL] CHAR(M)
[BINARY]

0 a 255 caracteres

CHAR
[NATIONAL]
VARCHAR(M) [BINARY]
TINYBLOB
TINYTEXT
BLOB
TEXT
MEDIUMBLOB

1
1 a 255
Varivel
0 a 28 - 1 (255)
0 a 28 - 1 (255)
0 a 216 - 1 (65535)
0 a 216 - 1 (65535)
0 a 224 - 1
(16777215)
0 a 224 - 1
(16777215)
0 a 232 - 1
(4294967295)
0 a 232 - 1
(4294967295)
0 a 65535
0 a 64

String de comprimento fixo M. NATIONAL especifica


que o conjunto de caracteres padro (ANSI SQL) ser
utilizado. BINARY especifica que os dados devem ser
tratados de modo a no haver distino entre
maisculas e minsculas (o padro distinguir).
O mesmo que CHAR(1)
String de comprimento varivel
String de tamanho varivel. O mesmo que [BINARY].
BLOB pequeno
TEXT pequeno
BLOB normal
TEXT normal
BLOB mdio

MEDIUMTEXT
LONGBLOB
LONGTEXT
ENUM('valor1','valor2',...)
SET('valor1','valor2',...)

Pagina: 10

TEXT mdio
BLOB longo
TEXT longo
Armazenam um dos valores listados ou NULL
Armazenam um ou mais dos valores listados ou NULL

Banco de dados MySQL


OBSERVAES:

CHAR e VARCHAR armazenam Strings de comprimento fixo e varivel respectivamente. VARCHAR


trabalha mais lento.

TEXT e BLOB armazenam textos grandes ou objetos binrios (figuras, som, etc.). TEXT diferencia
maisculas de minsculas.

Conceitos bsicos sobre banco de dados relacional


Tabelas relacional
Um banco de dados relacional formado por tabelas.
numeroDoCliente

Nome

Endereo

CEP

1
2
3
4

Jos Pedro
Cristina da Silva
Fabio Jlio Ap.
Dennis Oliveira

Rua 9, Nr 125, Centro


Rua Dr. Almeida, Nr 457, Campinas
Rua Arlindo Costa, Nr 15, Nova Veneza
Rua Violeta, 156, Cidade Velha

13153-689
13384-536
87032-000
15687-320

Cada coluna da tabela armazena um tipo de dado e representa um campo do banco de dados.
Cada linha armazena os dados de um cliente e representa um registro.
Chave primria
Cada tabela deve ter um campo que identifica o registro. Os valor depositado neste campo
para cada registro deve ser nico, ou seja, no devem haver dois ou mais registros que tenham os
mesmos dados armazenados. Este campo chamado de chave primria. Na tabela de exemplo
mostrada acima, a chave primria o campo numeroDoCliente. Uma chave pode ser composta de
mais de um campo na tabela.
Chave estrangeira
Uma tabela tambm pode fazer relacionamento com a chave de outra tabela, quando isto
acontece a chave da outra tabela chamada chave estrangeira.
Exemplo:
Tabela de Pedidos:
NumeroDoPedido

NumeroDoCliente

Valor

Data

Pgina: 11

Banco de dados MySQL


1
2
3
4

5
3
1
2

200,00
50,00
175,00
300,00

050603
050603
060603
060603

Esta tabela faz relacionamento com a tabela de clientes pelo campo NumeroDoCliente. A
chave primaria desta tabela o campo NumeroDoPedido e a chave estrangeira o campo
NumeroDoCliente. A funo da Chave estrangeira nesta tabela, informar quantos clientes
compraram produtos na tabela de pedidos.
Relacionamentos
As chaves estrangeiras representam um relacionamento entre as tabelas. Existem trs tipos
de relacionamentos:

de um para um;
de um para muitos; e
de muitos para muitos

Um para Um: significa que um registro em uma tabela s se relaciona com um registro na
outra tabela.
Um para Muitos: significa que um registro em uma tabela relaciona-se a muitos registros na
outra tabela.
Muitos para Muitos: significa que muitos registros de uma tabela relacionam-se a muitos
pedidos da outra tabela.

Pagina: 12

Banco de dados MySQL


O que o XAMPP?
O XAMPP um pacote de distribuio de programas de desenvolvimento Web. Ao baixar e
instalar o XAMPP, o mesmo instala e configura automaticamente o apache, servidor de pginas web
dinmicas como, o PHP e o mais importante para ns, o servidor de banco de dados MySQL
atualmente na verso 5.1 no XAMPP.

Acessando o banco de dados MySQL pela primeira vez


O sistema de banco de dados MySQL, no possui um ambiente visual grfico nativo para
acess-lo e para a manipulao de seus dados. Basicamente podemos acess-lo em modo texto via
terminal de comando caso no tenhamos nenhum programa cliente de acesso a ele. No h nenhum
problema em acessar o banco de dados via terminal de comando, porm, por uma gesto de
flexibilidade e agilidade, essencial o uso de programas clientes de conexo ao servidor de banco
de dados MySQL, que sejam de ambiente grfico.
Ao instalar o XAMPP um desses programas clientes de acesso ao banco de dados MySQL
instalado automaticamente e um dos mais usados pelos servidores de hospedagem de sites por
ser em formato Web, ou seja, funciona direto no servidor Web e pode ser acessado em qualquer
lugar do mundo pela internet em um browser. Este programa o phpMyAdmin e vamos abordar
sua utilizao previa em seguida.
Acessando o phpMyAdmin
Para acessar o phpMyAdmin, lembre-se que, alm do servidor MySQL o servidor Apache tem
que estar ativo tambm no painel XAMPP Control. O phpMyAdmin foi desenvolvido em linguagem
php, por isso da necessidade de ter o apache ativado.
Basicamente, para acessar o phpMyAdmin, basta digitar na barra de endereos do navegador
(Browser) o link local http://localhost/xampp/ e em seguida clicar no link do painel de opes do
XAMPP
em
phpMyAdmin ou
possvel acessa-lo diretamente
pelo
link
http://localhost/phpMyAdmin/

Pgina: 13

Banco de dados MySQL

Menu de controle do XAMPP para acessar suas opes

Pagina: 14

Banco de dados MySQL

Clique no link phpMyAdmin para acessa-lo

Observe a janela do link do ambiente grfico do phpMyAdmin pelo seu Browser.

Pgina: 15

Banco de dados MySQL

Janela do ambiente grfico do phpMyAdmin

Podemos observar que, o ambiente grfico encontra-se no idioma ingls, o que no


problema nenhum pra quem quer se aventurar no mundo de programao, j que tudo est
relacionado a este idioma. Mas, para comear a usar pela primeira vez e no ter muita dificuldade
com entendimento no idioma ingls, vamos mudar a linguagem do programa para portugus.
Nas opes de interface, no item Language, selecione a opo Portugus Brazilian
Portuguese.

Mudando o idioma de ingls para a linguagem Portugus.

Pagina: 16

Banco de dados MySQL

Interface do programa com o idioma em ingls.

Criando seu primeiro banco de dados


Vamos criar um banco de dados pelo mtodo grfico do phpMyAdmin, ou seja, no
digitaremos uma s linha de cdigo da linguagem SQL. Este s o primeiro de vrios bancos de
dados que voc criara. A maioria dos prximos bancos de dados sero criados em linguagem de
programao SQL. Bom, vamos l;
1. Com o phpMyAdmin aberto, clique o cone
, para garantir que esteja na tela principal onde
criamos novos bancos de dados.
2. Vamos criar um banco de dados novo com o nome dbCadastro digitando na rea Criar base de
dados, como informado abaixo. Em seguida clique no boto Criar.

Pgina: 17

Banco de dados MySQL

Criando um banco de dados.

Notificao da criao do banco de dados criado com sucesso.

Criando a primeira tabela


Aps ter criado o banco de dados, o mesmo se encontra selecionado e em uso, para que
possamos criar tabelas de dados para ele. Vamos criar uma tabela genrica de contatos somente
como exemplo. Veja a seguir os passos para criar esta tabela;

Pagina: 18

Banco de dados MySQL


1. Como ainda no h nenhuma tabela criada, o phpMyAdmin j mostra a tela de criao de nova
tabela. Para criar uma nova tabela no phpMyAdmin pelo ambiente grfico, informe o nome
tbContatos para a tabela e informe o nmero de campos 6 e em seguida clique em Executar.

2. Agora vamos criar os campos da tabela. So 6 linhas com propriedades para cada campo. No
primeiro campo definimos a chave primaria. Digite conforme a imagem abaixo;

3. Crie os prximos campos conforme imagem abaixo;

4. Aps digitar todos os campos, clique em Salvar para criar a tabela de Alunos.

Pgina: 19

Banco de dados MySQL

Notificao da tabela tbContatos criado com sucesso.

Inserindo dados na tabela


Agora que criamos a tabela tbContatos, vamos cadastrar alguns contatos pessoais nela.
1. Clique na guia Inserir e comece a digitar os dados de novos Contatos, conforme exemplo mostrado
abaixo.
Obs: Repare que, o campo idContato no deve ser preenchido, o mesmo ser preenchido automaticamente pelo
sistema, pois auto incrementado.

2. possvel digitar as informaes de 2 registros por vez. Clique em Executar para inserir os
registros.

Pagina: 20

Banco de dados MySQL

Cadastrando informaes de registros.

Pgina: 21

Banco de dados MySQL

Notificaes de registros cadastrados com sucesso.

Visualizando os registros cadastros nas tabelas


Para visualizar os dados aps o cadastro, clique na guia Visualiza. preciso estar com a
tabela desejada selecionada.

Pagina: 22

Banco de dados MySQL


Exerccio 1
1 Crie mais uma tabela no banco dbCadastro chamada tbFuncionarios. Siga os mesmos
procedimentos executados acima para cria-la.
Campos para a tabela;
idFuncionario, nomeFuncionario, cpfFuncionario, emailFuncionario, telefoneFuncionario.

Pgina: 23

Banco de dados MySQL


Criao de Bancos e Tabelas
Nesta aula vamos comear a manipular um banco de dados efetivamente, em linha de
comando, por tanto, os bancos de dados, tabelas e campos, que voc criou no modo grfico no
programa phpMyAdmin, foi a ltima vez. Usaremos cdigos e mais cdigos SQL para cria-los daqui
para frente. S utilizaremos programas grficos para facilitar a criao de mltiplos comandos.

O Workbench (GUI tool)


J falamos um pouco sobre o phpMyAdmin, programa via Web, desenvolvido em linguagem
PHP para acesso e manipulao de dados MySQL.
Mas nesta aula faremos uma abordagem ao programa WorkBench (GUI Tool). Criado pelos
prprios desenvolvedores do MySQL.
O Workbench um software de uso gratuito para conectar local ou remotamente, um servidor
de bancos de dados MySQL, com recursos bastante eficientes de gerenciamento e manipulao de
dados.

Instalando e usando o Workbench (GUI tool)


O programa WorkBench pode ser baixado pelo link;
http://dev.mysql.com/downloads/tools/workbench/

Interface do programa
O Workbench rene vrias funes de gerenciamento e manipulao de banco de dados no
MySQL. Estas funcionalidades so divididas em trs partes; SQL Development, Data Modeling e
Server Administration.

Pagina: 24

Banco de dados MySQL

SQL Development
Nesta sesso podemos criar conexes a vrios servidores MySQL, local ou remotos e a partir
desta conexo, manipular os bancos de dados, como, criar e excluir bancos de dados, criar, editar e
excluir tabelas, assim como manipulao dos dados ex: Seleo, Excluso, atualizao e insero.
Data Modeling
Cria modelos de bancos de dados que explique as caractersticas de funcionamento e
comportamento de um software a partir do qual ele ser criado.
Server Administration
Conecta a um servidor MySQL especificado local ou remoto e aplicar ao mesmo, funes de
administrao e gerenciamento do servidor como, contas de usurios, importao e exportao de
dados.

Criando uma nova instncia de conexo


Vamos criar uma nova conexo ao nosso servidor local de banco de dados MySQL e a partir
desta conexo manipular todos os bancos de dados que vamos criar daqui pra frente.

Pgina: 25

Banco de dados MySQL


1. No lado esquerdo na sesso SQL Development, clique no link New Connection para adicionar uma
nova conexo.

2. Na janela Setup New Connection, no campo Connection Name especificamos o nome para a
conexo. Digite Servidor Local.
3. Hostname o endereo IP ou DNS do servidor. Digite localhost.
4. Username usaremos o root usurio padro com todos os privilgios do mysql. A senha (Password)
do root est em branco.
5. Clique em Test Connection para testar se a conexo est funcionando. Em seguida clique OK
para criar a conexo.

Pagina: 26

Banco de dados MySQL

6. Aps criar a conexo, a mesma encontra-se na lista de conexes. Clique duplamente nesta conexo
que acabou de criar para acessar este servidor.

Pgina: 27

Banco de dados MySQL


Criando banco de dados e suas tabelas
Agora vamos comear a criar, editar e manipular nossos bancos de dados efetivamente.
Apesar de o Workbech tambm possuir um ambiente grfico facilitado para a criao de banco de
dados, no vamos criar nem editar nossos bancos de dados por este mtodo, pois precisamos
praticar como criar e manipular o banco de dados utilizando a linguagem SQL constantemente.

Observaes
As informaes especificadas entre < ... > informados nas sintaxes dos comandos, indicam os nomes dos objetos
a serem criados como, bancos de dados e tabelas e so de preenchimento obrigatrio.
Informaes entre [ .. ] so opcionais.

Criando um novo banco de dados


Para criar uma nova base de dados ou uma nova tabela de uma base de dados, usamos o
comando sql CREATE. Veja a sintaxe para criar uma nova base de dados;
CREATE DATABASE <nome_do_banco>.

Vamos criar um banco de dados para um sistema escolar como exemplo e em seguida
criaremos as tabelas dele.
Digite o comando abaixo na rea de comando SQL para criar o banco chamado bancoEscola.
CREATE DATABASE bancoEscola

Visualizando bancos de dados


Para visualizar os bancos de dados existentes e verificar se o banco de dados bancoEscola
foi realmente criado. Digite o comando abaixo.
SHOW DATABASES

Pagina: 28

Banco de dados MySQL

Ativando um banco de dados


Para criar novas tabelas para o banco de dados bancoEscola sem precisar fazer referncia a
ele, devemos ativ-lo para uso. Use o comando abaixo para ativ-lo.
USE bancoEscola

Deletando um banco de dados


Para deletar um banco de dados, usamos o comando DROP no banco que se deseja excluir. Veja
a sintaxe para excluir um banco de dados;
DROP DATABASE <nome_do_banco>

Crie um banco de dados exemplo com o nome bancoTeste e delete-o em seguida usando o
comando abaixo;
DROP DATABASE bancoTeste

Criando tabelas
Vamos agora criar as tabelas para o banco de dados bancoEscola. A sintaxe para a criao
de uma tabele ;
CREATE TABLE <nome_da_tabela> (<Campo1> <tipo_de_dado>,<campo2> <tipo_de_dado>,...)

Vamos criar uma tabela de cadastro de alunos chamada tbAlunos. Digite o cdigo abaixo para
cria-la. No se preocupe se no estiver entendendo nada do cdigo abaixo, pois ele ser explicado
em detalhes em seguida.

Pgina: 29

Banco de dados MySQL


CREATE TABLE tbAlunos(
idAluno INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nomeAluno VARCHAR(64) NOT NULL,
enderecoAluno VARCHAR(30) NOT NULL,
bairroAluno VARCHAR(20) NOT NULL,
foneAluno VARCHAR(15) NOT NULL,
emailAluno VARCHAR(20) NOT NULL,
idadeAluno INT(3) NOT NULL
)

Aps ter digitado corretamente o cdigo acima e executado o comando, a tabela deve ter sido
criada normalmente. Mas vamos entender este cdigo.
Primeiramente aps a palavra reservada CREATE define-se o nome da tabela. O nome da
tabela no deve conter espaos em branco e o limite de caracteres permitidos para o nome 64.
Aps o nome da tabela definimos as colunas de campos nos parmetros da tabela entre
parnteses ( ). Os campos (colunas) so separados por vrgula , . Veja a sintaxe da criao de
uma coluna;
<nome_campo_coluna> <tipo_de_dado> [NULL | NOT NULL]
[AUTO_INCREMENT] [PRIMARY KEY | INDEX]

[DEFAULT <valor>]

O nome da coluna segue a mesma regra do nome da tabela sem espaos em nomes compostos
e no limite de at 64 caracteres e depois define-se o tipo de dados que poder ser aceito nesta
coluna e os modificadores da coluna.
Mais informaes sobre tipos de dados consulte a primeira aula no tpico Tipos de dados.
Modificadores para as colunas
As colunas podem receber os seguintes modificadores:

Pagina: 30

Not Null (NN);


Default - valor por omisso - valor que a coluna recebe quando se insere null;
Zerofill - usado nos valores numricos - preencher com zeros esquerda;
Unsigned - usado nos valores numricos - assume apenas valores positivos, o que duplica o
maior valor possvel;
Auto_increment - usado para valores numricos;

Banco de dados MySQL


e NOT NUL so valores opcionais, o padro NULL. Se mudar para NOT
que ter preenchimento obrigatrio.
NULL

NULL

o campo ter

A opo AUTO_INCREMENT aplicada no campo indicado, incrementa a entrada de dados


automaticamente iniciando em 1. Somente um campo da tabela pode ter esta opo ativada,
geralmente esta opo aplicada ao campo chave primaria, ou seja, que possui a propriedade
PRIMARY KEY ativada tambm onde o prprio sistema alimenta este campo, incrementando de um
em um.
A propriedade PRIMARY KEY (chave primaria) aplicada somente em um nico campo na
tabela. Tem como funo, tornar o valor do campo, um identificador nico de cada registro.

Exibindo as tabelas existentes no banco de dados


Para visualizar as tabelas existentes de uma banco de dados em uso, usamos o comando SHOW
TABLES.
Digite o comando abaixo para visualizar a tabela
dados bancoEscola.

tbAlunos

criada recentemente no banco de

SHOW TABLES;

Exibir descries de uma tabela


Para visualizar em linha de comando os campos e suas descries dentro de uma tabela
podemos usar o comando DESCRIBE. Veja a sintaxe do comando;
DESCRIBE <nome_da_tabela>

Digite o comando abaixo para mostrar as informaes de cada campo da tabela tbAlunos.

Pgina: 31

Banco de dados MySQL


DESCRIBE tbAlunos;

Adicionando um campo em uma tabela existente


Para acrescentar um novo campo de dados a uma tabela j criada, usamos o comando sql
abaixo. Vamos acrescentar na tabela tbAlunos o campo dataNiver ( Data de aniversrio) aps o
campo idadeAluno. Veja a sintaxe;
ALTER TABLE <nome_da_tabela> ADD <nome_do_campo_novo> [tipo] AFTER
<nome_do_campo_existente>;

ALTER TABLE tbAlunos ADD dataNiver date NOT NULL AFTER idadeAluno;

Alterando um campo em uma tabela existente


Aps ter criado uma tabela com todos os seus campos j definidos, pode surgir a necessidade
de renomear um dos campos. Veja a sintaxe;
ALTER TABLE <nome_da_tabela> CHANGE <nome_antigo> <nome_novo> [tipo];

Vamos alterar o campo telefoneAluno da tabela tbAlunos para telAlunos.


ALTER TABLE tbAlunos CHANGE telefoneAluno telAluno VARCHAR(18) NOT NULL;

Pagina: 32

Banco de dados MySQL


Deletando uma coluna em uma tabela existente
Para deletar um dos campos de uma tabela, um dos comandos de alterao de tabela o DROP
que exclui o campo especificado. Veja a sintaxe;
ALTER TABLE <nome_da_tabela> DROP <nome_do_campo_a_ser_excluido>
ALTER TABLE tbAlunos DROP bairroAluno;

Deletando uma tabela existente


Sintaxe;
DROP TABLE <nome_da_tabela_a_ser_excluida>;

Crie uma tabela nova com o nome tabalaTeste somente para poder em seguida aplicar o
comando DROP TABLE.
DROP TABLE tabelaTeste;

Pgina: 33

Banco de dados MySQL

Pagina: 34

Banco de dados MySQL


Exerccio 2
1 - No banco de dados chamado bancoEscola, crie a tabela mostrada abaixo usando a
linguagem SQL.
Nome da tabela: tbProfessores.
Nome do Campo

Tipo de dados

Not Null

idProfessor

INT(10)

nomeProfessor

VARCHAR(45)

enderecoProfessor

VARCHAR(45)

telefoneProfessor

VARCHAR(15)

emailProfessor

VARCHAR(45)

idadeProfessor

INT(2)

cpfProfessor

VARCHAR(11)

DataNiverProfessor

Date

Chave Primaria
X

Auto incrementado
X

Descreve o comando SQL utilizada para criar a tabela acima;

Pgina: 35

Banco de dados MySQL


2- Insira novos registros de professores na tabela tbProfessores usando a linguagem SQL,
descrevendo o comando SQL utilizada para inserir um registro novo abaixo;

Pagina: 36

Banco de dados MySQL


Instruo Select
A instruo select a mais importante do SQL, porque a partir dela possvel entender certas
outros instrues semelhantes da linguagem SQL.
O comando select realiza vrios tipos de consultas ao banco de dados retornando resultados
gerais ou especficos em forma de tabelas.

Tabelas de exemplos para consultas


A partir desta aula e nas demais seguintes, vamos fazer vrias consultas a um banco de dados
de exemplos. Para poder realizar os vrios comandos pretendidos para exemplificar o uso do
comando select e suas variaes, precisamos de algumas tabelas criadas e j preenchidas com uma
determinada quantidade de registros. Portanto, vamos ter que criar as tabelas exibidas abaixo e
inserir os dados listados em seguida.
Nome do banco: dbEscola
CREATE DATABASE dbEscola

Nome da Tabela: tbAlunos


CREATE TABLE tbAlunos(
idAluno INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nomeAluno VARCHAR(45) NOT NULL,
enderecoAluno VARCHAR(45) NOT NULL,
idadeAluno INT(2) NOT NULL,
cidadeAluno VARCHAR(45) NOT NULL,
telefoneAluno VARCHAR(15) NOT NULL,
idCurso INT(10) NOT NULL
)

Registros para popular a tabela:


idAluno

nomeAluno

enderecoAluno

cidadeAluno

idadeAluno

telefoneAluno

idCurso

1
2
3
4

Joo Alencar
Manuel Brito
Feliciano Souza
Luiza Aparecida

Rua: Carmen Sandiego, 555


Av. Amoreiras, 9063
Rua: Andrade Neves, 569
Rua: Mangones Silva, 458

Campinas
Sumar
Hortolndia
Campinas

17
20
21
18

(19) 5555-8888
(19) 3333-4545
(19) 7878-3434
(21) 2325-5656

1
1
2
1

5
6

Jlio Verissimo
Nicoly Melo

Av. Dr. Campos Salles, 405


Rua: Bruno Vespertino, 684

Sumar
Campinas

19
15

(11) 9898-4848
(11) 5654-7896

3
1

Pgina: 37

Banco de dados MySQL


Nome da Tabela: tbFuncionarios
CREATE TABLE tbFuncionarios(
idFuncionario INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nomeFuncionario VARCHAR(45) NOT NULL,
enderecoFuncionario VARCHAR(45) NOT NULL,
telefoneFuncionario VARCHAR(15),
areaFuncionario VARCHAR(30),
idCargo INT(10) NOT NULL,
salarioFuncionario DECIMAL(10,2) NOT NULL
)

Registros para popular a tabela:


idAluno

nomeFuncionario

enderecoFuncionario

telefoneFuncionario

areaFuncionario

Bernardo Castro

Rua: Gusman Souza, 16

(21) 2325-5656

Administrao

4500,00

Francisco Chaves

Av. Amorim Filho, 8863

(19) 3333-5757

Tcnico

2500,00

Zangiev Victor

Rua: Glicrio, 333

(11) 1549-1536

Coordenao

950,00

Deric Michael

Rua: Mangones Silva, 458

(19) 3854-3956

Tcnico

1900,00

Alnir klein

Av. Dr. Campos Salles, 6945

(11) 9898-8484

Tcnico

1500,00

6
7

Franck Miller
Marcos de Melo

Rua: Dr. Durval Miranda, 99


Rua: Violeta, 301

(19) 8184-5263
(19) 8185-3695

Coordenao
Coordenao

2
2

899,00
3500,00

Nome da Tabela: tbCursos


CREATE TABLE tbCursos(
idCurso INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nomeCurso VARCHAR(45) NOT NULL,
valorCurso DECIMAL(10,2) NOT NULL
)

Registros para popular a tabela:


idCurso

nomeCurso

1
2
3

Matemtica
Web Designer
Hardware

Ingls

valorCurso
150.00
250.00
300.00
90.00

Nome da Tabela: tbCargo


CREATE TABLE tbCargo(
idCargo INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,

Pagina: 38

idCargo

salarioFuncionario

Banco de dados MySQL


descricaoCargo VARCHAR(45) NOT NULL
)

Registros para popular a tabela:


idCargo

descricaoCargo

1
2
3

Diretor
Coordenador
Professor

Comando bsico do select


A sintaxe da instruo select mostrada abaixo exibo um ou mais campos especificados de um
registro e como resultado, mostrado a quantidade total de registros contidos no banco. Isso
porque, no foi especificado nenhuma condio para a consulta.
Sintaxe;
SELECT <campos,..> from <nome_da_tabela>

Vamos aplicar uma consulta sql para mostrar o campo nomeAluno de todos os registros
contidos na tabela tbAlunos do banco dbEscola criado para ser usado como exemplo para esta aula.
Com o banco de dados dbEscola em uso, digite o comando SQL abaixo no programa Workbench
para realizar esta consulta;
SELECT nomeAluno FROM tbAlunos

Resultado:

Repare que, como resultado, somente a coluna do campo nomeAluno foi visualizada. Isto
porque, pedimos para mostrar somente este campo. possvel mostrar mais campos separados por
vrgula ( , ).

Pgina: 39

Banco de dados MySQL


Digite o cdigo abaixo para mostrar todos os registros, retornando os campos idAluno,
nomeAluno e telefoneAluno;
SELECT idAluno,nomeAluno,telefoneAluno FROM tbAlunos

Resultado:

Caso a necessidade seja, mostrar todos os campos de cada registro retornado, no precisamos
indicar todos os campos, alis, no precisamos indicar nenhum, basta usar o caractere coringa
asterisco * , para representar todos os campos na consulta.
SELECT * FROM tbAlunos

Pagina: 40

Banco de dados MySQL


Exerccio 3
1 Descreva abaixo o comando para consultar e visualizar os campos idFuncionario,
nomeFuncionario de cada registro na tabela tbFuncionarios.
R:
2 Descreva abaixo o comando para consultar e visualizar todos os campos de cada registro
na tabela tbCursos.
R:

Pgina: 41

Banco de dados MySQL


Clusula Where / Operadores de Comparao
A Clusula Where um parmetro opcional das instrues select, update, delete. usada
quando, queremos filtrar registros especficos de um todo, definindo condies para este filtro,
onde valores de determinados campos, so comparados com outros e caso a condio seja
verdadeira, o registro avaliado ser selecionado.
Sintaxe;
SELECT * FROM <nome_da_tabela> WHERE <condio>

A clusula WHERE usa como parmetro de comparao, os operadores de comparao e os


operadores SQL especiais, que vamos compreender mais adiante;

Operadores de comparao
Abaixo podemos ver a lista de operadores de comparao compreendidos pelo MySQL. Vamos
ver cada um dos operadores explicados separadamente.
OPERADOR
=
!=
^=
<>
>
>=
<
<=

SIGNIFICADO
Igual a
Diferente

Maior que
Maior ou igual a
Menor que
Menor ou igual a

Igual a =
Este operador compara a igualdade de valores de um determinado campo com uma
informao descrita.
Digite o cdigo abaixo para que possamos selecionar somente o registro cujo
seja igual a o nmero 4 na tabela tbFuncionarios.
Exemplo;
SELECT * FROM tbFuncionarios WHERE idFuncionario = 4

Pagina: 42

idFuncionario

Banco de dados MySQL


Resultado:

Diferente != ou <> ou ^=
O operador Diferente proporciona realizar a ao contraria ao Igual a. Ou seja, a consulta
retornara todos os registros que no tiverem no campo especificado, o valor indicado no parmetro.
No exemplo abaixo todos os registros de cursos cujo o campo idCurso seja diferente de 3 sero
retornados na consulta.
Exemplo;
SELECT * FROM tbCursos WHERE idCurso !=3

Resultado:

Maior que >


Selecione os registros maiores que o valor especificado na condio.
Exemplo:

Pgina: 43

Banco de dados MySQL


SELECT * FROM tbAlunos WHERE idAluno >3

Resultado:

Maior ou igual a >=


Seleciona os registros maiores ou iguais ao valor especificado na condio.
Exemplo:
SELECT * FROM tbFuncionarios WHERE salarioFuncionarios >=2500

Resultado:

Menor que <


Seleciona os registros menores que o valor especificado na condio.
Exemplo:
SELECT * FROM tbFuncionarios WHERE salarioFuncionario < 2500

Resultado:

Pagina: 44

Banco de dados MySQL

Menor ou igual a <=


Seleciona os registros menores ou iguais ao valor especificado na condio.
Exemplo:
SELECT * FROM tbAlunos WHERE idAluno <= 2

Resultado:

Pgina: 45

Banco de dados MySQL


Exerccio 4
1 Descreva abaixo o comando para consultar e visualizar os campos idFuncionario,
nomeFuncionario de cada registro na tabela tbFuncionarios cujo o campo salarioFuncionario seja
maior ou igual a 1500.
R:
2 Descreva abaixo o comando para consultar e visualizar os campos idAluno,
nomeFuncionario e idadeAluno de cada registro na tabela tbAluno cujo o campo idadeAluno seja
menor ou igual a 18.
R:

Pagina: 46

Banco de dados MySQL


Clusula Where / Comandos Especiais SQL
Vamos abordar nesta aula os comandos especiais SQL referentes a clusula Where.

Operadores SQL especiais


O SQL possui quatro operadores especiais:
OPERADOR
BETWEEN
NOT BETWEEN
IN (val1,val2,val3,val4)
NOT IN (val1,val2,val3,val4)
LIKE
NOT LIKE
IS NULL
IS NOT NULL

SIGNIFICADO
Intervalo fechado compreendido entre os dois valores
val1 e val2
Pertence lista de valores val1, val2, val3, val4
Cadeia de caracteres que satisfaz a condio. Utilizar %
e_
um valor NULL

BETWEEN
Retorna valores consultados compreendidos entre um valor mnimo e mximo.
Utilizado na construo de condies, por exemplo para clusula WHERE.
Sintaxe;
SELECT <campo> FROM <nome_da_tabela> WHERE <campo> BETWEEN <valor_minimo> AND
<valor_maximo>

Exemplo:
Neste exemplo, a consulta retorna todos os registros cujo os valores no campo
salarioFuncionario esteja no intervalor de 1000 2000.
SELECT * FROM tbFuncionarios WHERE salarioFuncionario BETWEEN 1000 AND 2500

Resultado:

Pgina: 47

Banco de dados MySQL

IN (val1, val2, val3, val4)


Procura os valores numa lista especificada.
Sintaxe;
SELECT <campo> FROM <nome_da_tabela> WHERE <campo> IN(<calor1>, <valor2>,..)

Exemplo:
SELECT * FROM tbFuncionario WHERE idFuncionario IN(2,4,5)

Resultado:

LIKE
Quando no se conhece o valor exato a procurar, mas temos uma ideia aproximada, podemos
utilizar o operador LIKE. Permite selecionar linhas que concordem com um dado padro de
caracteres. A cadeia de caracteres usada como padro de pesquisa pode utilizar dois smbolos
especiais:

Pagina: 48

Banco de dados MySQL


SIMBOLO
%
_

REPRESENTA
Qualquer cadeia com nenhum ou vrios
caracteres
Um caractere qualquer

SELECT <campo> FROM <nome_da_tabela> WHERE <campo> LIKE '%<string>%';

Exemplo:
SELECT * FROM tbFuncionarios WHERE nomeFuncionario LIKE '%miller%';

Resultado:

IS NULL
Os operadores de comparao IS NULL e IS NOT NULL so usados quando precisamos verificar
se determinados campos de nossas tabelas MySQL contm valores NULL.
Tenha em mente que NULL diferente de 0 (zero) e uma String vazia, ou seja, campos com
valores NULL so aqueles que no possuem nenhum valor (NULL significa ausncia de valor).
O operador IS NOT NULL testa se o valor de um determinado campo no NULL.

Sintaxe:
SELECT <campo> FROM <nome_da_tabela> WHERE <campo> IS NULL

Pgina: 49

Banco de dados MySQL


Exerccio 5

1 Descreva abaixo o comando SQL para visualizar na tabela tbFuncionarios, somente os


registros cujo o campo idFuncionario seja 2,3,5,7.
R:
2 Descreva abaixo o comando SQL para visualizar na tabela tbFuncionarios, somente os
registros cujo os valores no campo idFuncionario estejam no intervalor de 3 a 6.
R:

Pagina: 50

Banco de dados MySQL


Parmetros da instruo Select / Parte 1
A partir deste aula vamos abordar mais alguns parmetros da instruo Select. A compreenso
destes parmetros est dividida em duas partes entre a aula 7 e 8.

Parmetro JOIN
O JOIN um dos mais importantes comando da linguagem SQL, pois tem a capacidade de
retornar dados contidos em mais de uma tabela, atravs de campos relacionados.
Sintaxe;
SELECT <campo> FROM <tabela_1> JOIN <tabela_2>
ON <tabela_1>.<campo>=<tabela_2>.<campo>
WHERE <condies>

Exemplo:
A tabela de Alunos possui um campo chamado idCurso cuja a informao relacionada com
o cdigo de chave primaria em tbCursos, identificando assim, o curso de cada aluno.
No exemplo a seguir seleciona todos os registros exibindo o idAluno, nomeAluno e tambm o
nomeCurso relacionado na com a tabela tbCurso, usando o parmetro JOIN.
SELECT idAluno,nomeAluno,nomeCurso FROM tbAlunos JOIN tbCursos
ON tbAlunos.idCurso=tbCursos.idCurso

Resultado:

Pgina: 51

Banco de dados MySQL


Parmetro ORDER BY
O parmetro ORDER BY utilizado na instruo SELECT para ordenar uma coluna de dados em
ordem Crescente ou Decrescente ou tambm do maior valor numrico para o menor e vice versa
com base no campo(coluna) especificado.
Sintaxe;
SELECT <campo> FROM <nome_da_tabela> ORDER BY <campo> [ASC|DESC]

Os parmentros [ASC|DESC] so opcionais.


ASC - Ordena os resultados do campo/coluna em ordem crescente (A-Z).
DESC - Ordena os resultados do campo/coluna em ordem decrescente (Z-A).

Exemplo;
Vamos selecionar todos os dados da tabela
ordem Crescente A-Z.

tbFuncionarios

no campo nomeFuncionario em

SELECT idFuncionario, nomeFuncionario FROM tbFuncionarios


ORDER BY nomeFuncionario ASC

Parmetro DISTINCT(Omite registros duplicados)


O parmetro DISTINCT elimina linhas repetidas considerando todas as colunas como um todo.
Pagina: 52

Banco de dados MySQL


Sintaxe;
SELECT DISTINCT <campo> FROM

<nome_da_tabela>

Exemplo:
SELECT DISTINCT areaFuncionario FROM tbFuncionarios

Parmetro LIMIT (limitador de registros selecionados)


O parmetro LIMIT usado para limitar a quantidade de resultados em uma consulta de
seleo. Atravs do comando LIMIT possvel extrair dados como os 5 primeiros ou 5 ltimos
registros de uma tabela. Outra utilidade para o parmetro LIMIT a paginao de resultados nas
consultas.
Sintaxe:
SELECT <campo> FROM <nome_da_tabela> LIMIT X,Y

X valor numrico que indica a posio inicial a partir de onde os registros sero exibidos.
Registros antes desta posio sero ignorados.
Y Valor numrico que indica a quantidade de registros h serem exibidos a partir da posio
X.

Observaes:
Em uma tabela de registros a posio 0 (zero) corresponde a primeira linha de registros, portanto, quando definimos,
por exemplo, a posio 9 no parmetro LIMIT, estaremos selecionando o decimo registro da tabela.

Pgina: 53

Banco de dados MySQL

ndices
0
1
2
3
4
5
6
7
8
9

Registros por linhas


1
2
3
4
5
6
7
8
9
10

Exemplo:
O comando SQL abaixo usa o parmetro LIMIT para mostra a partir da posio 2 na tabela do
banco de dados tbFuncionarios a quantidade de 3 registros somente.
SELECT idFuncionario, nomeFuncionario FROM tbFuncionarios LIMIT 2,3
Resultado:

Pagina: 54

Banco de dados MySQL


Parmetro COUNT (Contagem de registros)
O parmetro COUNT realiza a contagem de registros selecionados retornando um valor
numrico com a totalizao da contagem. Podemos aplicar um filtro pela clausula WHERE para
condicionar quais registros sero contados.
Sintaxe;
SELECT COUNT( <campo>) FROM <nome_da_tabela> WHERE <condio>

Exemplo:
SELECT COUNT(*) FROM tbFuncionarios WHERE salarioFuncionario > 2000

Pgina: 55

Banco de dados MySQL


Parmetros da instruo Select / Parte 2
Nesta aula continuaremos o entendimento dos parmetros associados instruo SELECT.

Parmetro SUM (Soma de valores)


O parmetro SUM realiza a somatria de campos por registro selecionado, retornando um
valor numrico com o resultado do clculo da soma. Podemos aplicar um filtro pela clausula WHERE
para condicionar quais registros tero campos de valores numricos somados.
Sintaxe;
SELECT SUM(<campo>) FROM <nome_da_tabela> WHERE <condio>

Exemplo:
SELECT SUM(salarioFuncionario) FROM tbFuncionarios WHERE
idCargo = 2

Parmetro AVG (Mdia de valores)


O parmetro AVG calcula a mdia de valores, de campos com valores numricos em uma
consulta SQL. Podemos utilizar a clusula WHERE para filtrar as linhas de registros que sero
calculadas.
Sintaxe;
SELECT AVG( <campo> ) FROM <nome_da_tabela> WHERE <condio>

Exemplo:

Pagina: 56

Banco de dados MySQL


No exemplo a seguir calculado a mdia de valores do campo salarioFuncionario de todos
os funcionrios cujo campo idCargo seja igual a 2.
SELECT AVG(salarioFuncionario) FROM tbFuncionarios WHERE idCargo = 2

Parmetro MAX/MIN
Os parmetros MAX e MIN so utilizados para se obter o maior ou menor valor de um campo
numa consulta SQL.
Exemplo:
Na consulta SQL a seguir, utilizando o parmetro
retornado o valor do maior salrio pago a funcionrios.

Na consulta SQL a seguir, utilizando o parmetro


retornado o valor do menor salrio pago a funcionrios.

MAX

MIN

no campo

salarioFuncionario

ser

no campo

salarioFuncionario

ser

Pgina: 57

Banco de dados MySQL

Parmetro GROUP BY
A clusula GROUP BY usada para agrupar as linhas da tabela segundo um critrio definido
usando a clusula WHERE. Os grupos so formados pelo agrupamento das linhas, a cada grupo
formado no passo anterior so aplicadas as funes de grupo (se houver).
Quando se usa GROUP BY estamos a trabalhar em "modo de grupo" o que implica deixar de
considerar linhas individuais para considerar grupos de linhas. A cada grupo de linhas apenas
podemos aplicar funes de grupo, tais como: mdia, varincia, valor mximo, valor mnimo ou
contagem do nmero de elementos.
Exemplo:
O exemplo abaixo mostra quantos Alunos so de cada cidade. As linhas da tabela tbAlunos
so ordenadas pelo campo cidadeAluno. Depois so formados conjuntos de linhas, cujos elementos,
tm em comum o valor de cidadeAluno. Finalmente feita a contagem do nmero de linhas de cada
conjunto:
SELECT COUNT(cidadeAluno),cidadeAluno FROM tbAlunos
GROUP BY cidadeAluno

Pagina: 58

Banco de dados MySQL

Parmetro HAVING
O parmetro HAVING semelhante ao parmetro condicional WHERE, mas a diferena que
o HAVING deve ser usado com o GROUP BY, pois sua consulta baseada em colunas agrupadas.
Sintaxe;
Exemplo
SELECT cidadeAluno, COUNT(cidadeAluno) FROM
tbAlunos GROUP BY HAVING cidadeAluno = 'Campinas'

Pgina: 59

Banco de dados MySQL


Instrues de Inseres, atualizaes e excluses
At agora focamos muito o uso a instruo SELECT e seus parmetros. Nesta aula vamos
compreender o uso de trs instrues principais da linguagem SQL, as instrues; INSERT, UPDATE
e DELETE.

Insert
A instruo INSERT no tem muita complexidade, basicamente um comando padro de
insero de novos valores em uma tabela de banco de dados.
Sintaxe;
INSERT INTO <nome_da_tabela> (<campo1>,<campo2>,....)
VALUES( <valor_campo1> , <valor_campo2>,.....)

Exemplo:
INSERT INTO tbCurso (nomeCurso, valorCurso)VALUES(Portugus , 100.00)

Update
A instruo UPDATE utilizada para atualizar valores em determinados campos de um registro
ou de vrios registros ao mesmo tempo. A instruo UPDATE deve ser usada cuidadosamente com
a clausula WHERE, pois sem a clausula where todas as linhas de registros sero atualizados.
Uma instruo UPDATE permite alterar:

Uma coluna de uma linha da tabela;


Vrias colunas de uma linha;
Uma coluna em vrias linhas;
Vrias colunas em vrias linhas;

Para obter o que foi descrito acima usamos:

Pagina: 60

A clusula SET para escolher a(s) coluna(s);

Banco de dados MySQL

A clusula WHERE para escolher a(s) linha(s);

Sintaxe;
UPDATE <nome_da_tabela> SET <campo1> = <valor1>,<campo2> = <valor2>,..
WHERE <condio>

Exemplo 1:
No exemplo abaixo, o campo salarioFuncionario atualizado para 5000, mas com a condio
imposta pela clusula WHERE que atualiza somente o registro do funcionrio cujo o campo
idFuncionario seja igual a 1.
UPDATE tbFuncionarios SET salarioFuncionario = 5000 WHERE idFuncionario = 1

Aps a execuo da consulta UPDATE, o funcionrio Bernardo Castro ter seu salrio
atualizado para 5000,00.

Observaes:
Caso a clusula WHERE no fosse informada a atualizao do campo salarioFuncionario aconteceria em todos
os registros de funcionrios.

Exemplo 2:
possvel tambm, atualizar dados numricos de um campo em cada registro selecionado
para o resultado de um clculo matemtico em tempo de execuo.
No exemplo a seguir, querem acrescentar R$ 100,00 reais de bonificao ao salrio de todos
os funcionrios. Para realizar esta consulta Update, adicionaremos na consulta SQL um pequeno
clculo a seguir.
UPDATE tbFuncionarios SET salarioFuncionario = salarioFuncionario + 100
Entendendo claramente o que acontece neste calculo;

Pgina: 61

Banco de dados MySQL


Vamos supor que o campo salrio j tenha 5000, ento a atualizao seria assim.
salarioFuncionario = salarioFuncionario + 100
salarioFuncionario = 5000+100

Delete
A instruo DELETE exclui linhas de registros em uma tabela. Aplicando junto com a clusula
WHERE podemos especificar qual ou quais linhas de registros sero excludas.
Sintaxe;
DELETE FROM <nome_da_tabela> WHERE <condio>

Exemplo:
DELETE FROM tbCursos WHERE idCurso = 3

Pagina: 62

Banco de dados MySQL


Exerccio 6
1. Utilizando a instruo INSERT cadastre mais um aluno na tabela tbAlunos do banco de dados
dbEscola.
R:
2. Utilizando a instruo UPDATE, atualize o campo salarioFuncionario na tabela tbFuncionarios para
5000, mas utilize a clusula WHERE para especificar somente os funcionrios cujo idCargo seja 3.
R:
3. Utilizando a instruo DELETE na tabela tbCursos, exclua o curso Matemtica.
R:

4.

Pgina: 63

Banco de dados MySQL


Controle de Usurios / Backups e Recovers
Vamos dedicar est aula a compreenso do controle de acesso por usurios e a como realizar
backups de segurana, bem como a restaurao destes backups.
O banco de dados a parte integrante do sistema que mais devemos dar importncia,
poderamos dizer que o banco de dados o corao de um sistema, seja ele, uma aplicao Web ou
Desktop. Portanto, vrios fatores de segurana devem ser levados em considerao, para garantir
a segurana do banco de dados.
Podemos agrupar os fatores de segurana em dois tpicos principais; Controle de Usurios e
Backups.
O primeiro fator importante, com relao a segurana de acesso. Devemos definir as contas
de usurios com suas respectivas senhas e definir os privilgios de acesso correto a cada usurio.
O segundo fator importante, com relao os backups e recovers, para garantir cpias fieis
dos bancos de dados de seus sistemas at a date que foi realizado o backup. Se o banco original
apresentar problemas ou se voc tenha, perdido dados acidentalmente, possvel restaurar o
backup mais recente.

Controle de Usurios
J sabemos que, para conectar a um servidor de banco de dados MySQL, seja ele, local o
remoto, precisamos logar no mesmo, com uma conta de usurios. Esta conta de usurio precisa ter
ainda, os privilgios, sejam eles, totais ou limitados, para ter acesso aos bancos de dados criados
nestes servidor.

Criando um usurio
Para se criar um usurio preciso antes de mais nada, estar logado no banco MySQL com um
usurio que possua privilgios de criao e alterao de contas de usurios. Utilize o usurio root
para realizar esta ao.
Sintaxe:
CREATE USER <usurio> [IDENTIFIED BY <senha>]

Pagina: 64

Banco de dados MySQL


No MySQL o nome do usurio constitudo de um nome mais o host de onde ele poder
acessar o servidor (user@host). Caso voc no informe o host para o usurio, o MySQL assumir
"%", isto , todos os hosts. A opo IDENTIFIED BY para especificar a senha do usurio novo e
opcional, podendo ser configurado mais adiante.
Exemplo:
CREATE USER marcos IDENTIFIED BY senha123

Exibindo usurios cadastrados


Todos os usurios so cadastrados em uma tabela interna do MySQL chamada user contida
num banco de dados especial chamado mysql. Para se exibir a lista de usurios de um banco de
dados MySQL basta digitar a instruo abaixo;
SELECT * FROM mysql.user

Excluindo um usurio
Para se excluir um usurio, novamente lembramos que deve-se estar logado como um usurio
com privilgios, desta vez de excluso de usurios.
O comando utilizada para excluir um usurio o comando DROP, tambm utilizado para excluir
bancos e tabelas.

Pgina: 65

Banco de dados MySQL


Sintaxe;
DROP USER <nome_do_usuario>

Liberando Privilgios
O MySQL armazena as informaes dos seus usurios em 4 tabelas que esto localizadas no
banco de dados mysql. Estas tabelas so a user, db, tables_priv e columns_priv.
Tabela user
A tabela user armazena as informaes dos usurios do banco e os privilgios globais deste
usurio.
Tabela tables_priv e columns_priv
Armazena os privilgios dos usurios especficos de um banco de dados.
tables_priv e columns_priv
Armazenam os privilgios associados a tabelas e colunas, respectivamente.
Sintaxe;
CRANT <privilgios> [(colunas)] ON <banco>.<tabela> TO <usurio>@<domnio>
IDENTIFIED BY <senha>

No comando acima os [ ] indicam que o comando opcional. O primeiro item a ser informado (so) o(s) privilgio(s)
a ser(em) concedido(s) ao(s) usurio(s).

Pagina: 66

Banco de dados MySQL


O primeiro parmetro aps a instruo GRANT <privilgios> informa quais privilgios podero
ser atribudos ao usurio indicado. Os privilgios podem ser colocados um a um, separados por
vrgula(,).
Abaixo segue a lista de privilgios disponveis para os usurios;
Privilgio
ALL [PRIVILEGES]
ALTER
CREATE
CREATE
TEMPORARY
TABLES
DELETE
DROP
EXECUTE
FILE
INDEX
INSERT
LOCK TABLES
PROCESS
REFERENCES
RELOAD
REPLICATION
CLIENT
REPLICATION
SLAVE
SELECT
SHOW DATABASES
SHUTDOWN
SUPER

UPDATE
USAGE
GRANT OPTION

Descrio
Todos os privilgios exceto GRANT OPTION
Permite executar alteraes de tabelas (Editar)
Permite a criao de novas tabelas
Permite a criao de tabelas temporrias

Permite deletar dados nas tabelas


Permite executar DROP TABLE (Excluir tabelas)
Permite executar stored procedures
Permite executar SELECT ... INTO OUTFILE e LOAD DATA INFILE
Permite executar CREATE INDEX e DROP INDEX
Permite executar a instruo INSERT nas tabelas
Permite executar LOCK TABLES em tabelas que voc tenha o privilgio SELECT
Permite executar SHOW FULL PROCESSLIST
Ainda no est implementado
Permite executar FLUSH
Permite ao usurio obter a localizao do Master ou Slave
Necessrio para a replicao Slave (leitura dos eventos do log binrio do
Master)
Permite executar SELECT
Exibe todos os bancos de dados
Permite executar mysqladmin shutdown
Permite executar CHANGE MASTER, KILL, PURGE MASTER LOGS e SET GLOBAL.
Permite conectar-se ao servidor uma vez, mesmo que o max_connections
tenha sido atingido
Permite executar a instruo UPDATE
Sinnimo para "no privileges''
Permite ao usurio repassar os seus privilgios

possvel definir as colunas que receberam este atributo, mas est opo opcional.
Aps a definio dos privilgios, temos que definir os banco de dados e suas tabelas. Caso os
privilgios devam ser aplicados a todos os bancos de dados e suas tabelas, podemos utilizar o
caractere Asterisco (*) da seguinte forma;
GRAT ... ON *.* TO ....

Pgina: 67

Banco de dados MySQL


Por fim, indicamos qual o usurio recebera estes privilgios.
.....TO marcos@dominio.com.br

Caso voc queira especificar acesso por todos e quais quer domnios
Exemplo:
Neste exemplo a seguir, concedido ao usurio marcos os privilgios descritos, em todos
os bancos e todos as respectivas tabelas de cada um, atravs do parmetro *.*
CRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE VIEW,
INDEX, SHOW DATABASES, SHOW VIEW
ON *.* TO marcos@%

Para listar os privilgios deste usurio utilize o comando:


SHOW GRANTS FOR marcos@localhost;

Backups e Recovers
Neste tpico vamos abordar os procedimentos de backups dos bancos de dados do MySQL,
bem como a restaurao desses backups.

Backup pelo phpMyAdmin


O programa phpMyAdmin uma aplicao Web desenvolvida na linguagem PHP para
manipular o banco de dados MySQL. Atravs do phpMyAdmin podemos fazer todo tipo de
manipulao no banco de dados MySQL, desde que, o usurio que nos conectamos ao banco, tenha
os privilgios de acesso para tudo o que vamos realizar no MySQL.

Pagina: 68

Banco de dados MySQL


O phpMyAdmin o cliente de acesso ao banco de dados MySQL mais usado pelos Servidores
de hospedagem de sites com banco de dados MySQL. Geralmente o acesso a ele, feito atravs de
uma rea de administrao como, Painel de controle.
Alm dos vrios recursos de manipulao do banco de dados que podemos executar,
podemos realizar backups e restaurao dos mesmos pelo phpMyAdmin.
O XAMPP possui o phpMyAdmin instalado para acessar e manipular o banco de dados MySQL
local e para acessa-lo, basta abrir o Navegador de internet (Browser) e digitar o link
http://localhost/phpmyadmin/ .

Nota!
Lembre-se que o servidor apache deve estar ativo no painel de controle do xampp.

Pgina: 69

Banco de dados MySQL


Criando um backup
1. Aps acessar o phpMyAdmin, clique na guia Exportar para podermos acessar as configuraes de
criao de backup.
2. Na rea de exportao, selecione os bancos de dados que deseja criar um backup (cpia de
segurana).
3. Selecione a extenso SQL para o arquivo a ser gerando.
4. Defina o nome para o arquivo de backup.
5. Clique no boto Executar para gerar o backup.

Pagina: 70

Banco de dados MySQL

6. Caso o navegador no esteja configurado para salvar arquivos automaticamente, defina a pasta
onde deve ser salvo o backup. Por exemplo a pasta Documentos.
7. Verifique na pasta onde salvou o arquivo se o mesmo est l.

Pgina: 71

Banco de dados MySQL

Restaurando um Backup
Um backup de bancos de dados do MySQL simplesmente uma cpia dos bancos de dados e
suas respectivas tabelas e registros gravados em um arquivo de texto em formato de linguagem
SQL. Para restaurar os bancos de dados contidos neste arquivo SQL, o phpMyAdmin s precisa
executar os comando SQL contidos neste arquivo.
O processo de restaurao de um backup de banco de dados pelo phpMyAdmin bastante
simples tambm. Basicamente um processo de importao de dados, sem maiores detalhes, devese somente encontrar o arquivo de backup e executar a restaurao deste backup.
Siga as etapas para restaurar o backup criado anteriormente;
1. Clique na guia impostar.
2. Na sesso Arquivo para importar, clique no boto Choose File para localizar o arquivo de backup.
3. Localize a pasta onde o arquivo est, clique nele e em seguida abra-o.

Pagina: 72

Banco de dados MySQL

4. Aps indicar o local do arquivo para importar, clique no boto Executar.

5. Aps executar o backup os bancos de dados so restaurados no sistema.

Pgina: 73

Banco de dados MySQL

Pagina: 74

Banco de dados MySQL


Exerccios de Reviso
Esta aula reservada para a reviso das aulas ministrada no livro. Uma aula com exerccios
variados para praticar os comando SQL do MySQL. Estude bastante.

Exerccio 7
1. Descreva o comando SQL correto para se criar um banco de dados no servidor MySQL com o nome
dbGeral. Em seguida teste em seu computador usando o software Workbench.

R:
2. Descreva o comando SQL correto para se criar a tabela de dados com base nas informaes a
seguir.
Nome da tabela: tbProduto:
Nome do Campo

Tipo de dados

Not Null

codigoProduto
nomeProduto
descricaoProduto
quantidadeProduto
valorUnitProduto

INT(10)
VARCHAR(45)
LONGTEXT
INT(10)
DECIMAL(10.2)

X
X
X
X
X

Chave Primaria
X

Auto incrementado
X

Pgina: 75

Banco de dados MySQL


R:

3. Descreva o comando SQL correto para inserir um registro na tabela que voc criou acima.

R:

Exerccio 8
1. Em uma tabela de banco de dados chamada tbClientes, com aproximadamente 500 registros
cadastrados, com chave primaria idCliente auto incrementada, iniciando em 1 at o 500 em
ordem crescente, qual seria a consulta SQL para selecionar 100 registros a partir do registro com
chave primaria igual a 99? Lembre-se, a primeira linha de registro em uma tabela a posio 0
(Zero).
a) (
) - SELECT * FROM tbClientes WHERE idCliente = 99
b) (
) - SELECT * FROM tbClientes LIMIT 100,100
c) (
) - SELECT * FROM tbClientes LIMIT 98,100
d) (
) - SELECT * FROM tbClientes LIMIT 99,100
e) (
) - SELECT * FROM tbClientes LIMIT 100,99
2. Em uma tabela de banco de dados chamada tbProdutos, com aproximadamente 1000 produtos
cadastrados, precisamos alterar o valor de todos os produtos definidos no campo valorProduto

Pagina: 76

Banco de dados MySQL


para R$ 2,50 reais de acrscimo ao valor cadastrado em cada registro. Assinale a alternativa correta
que atenda a esta necessidade.
a)

b)
c)
d)
e)

(
(
(
(
(

)))))-

UPDATE tbProdutos valorProduto = (valorProduto + 2.5)


UPDATE SET tbProdutos valorProduto = valorProduto + 2.5
UPDATE tbProdutos valorProduto = (valorProduto + 2.5) WHERE valorProduto = 2.5
update tbProdutos SET valorProduto = valorProduto + 2.5
UPDATE FROM tbProdutos SET valorProduto = 2.5

3. Considerando ainda uma tabela de banco de dados tbProdutos, com 11 registros cadastrados
exibida abaixo, observe os registros existentes na tabela e assinale a alternativa que indica a ao
correta a ser executada pela consulta a seguir.
Consulta: delete from tbProdutos where valorProduto <=2.5 and idProduto >= 8
Tabela Produtos antes da consulta;

a)
b)
c)
d)
e)

(
(
(
(
(

)))))-

Foram excludos 4 registros


Foram excludos todos os registros menores ou iguais a 2.5
Foram excludos 2 registros
Foram excludos todos os registros com idProduto maior ou igual a 8
Nem uma das alternativas anteriores

4. Considerando uma tabela de banco de dados chamada tbClientes com 10 registros mostrados a
seguir. Assinale a alternativa correta para o resultado retornado da consulta abaixo:
Tabela

Pgina: 77

Banco de dados MySQL

Consulta:
SELECT idCliente, nomeCliente FROM tbClientes WHERE idCliente <4 OR idCliente > 8

a)
b)
c)
d)
e)

(
(
(
(
(

)))))-

Seleciona somente os registros 1,2,3,9,10


Seleciona somente os registros 9,10
Seleciona somente os registros 4,5,6,7,8
Seleciona somente os registros 1,2,3
Seleciona somente os registros 5,6,7

5. Considerando uma tabela de banco de dados chamada tbClientes com 10 registros mostrados a
seguir, podemos perceber que, na coluna do campo nomeCliente, os dados esto fora de uma ordem
crescente ou decrescente. Assinale a alternativa correta cuja a consulta SQL correta seleciona os
dados no campo nomeCliente em ordem crescente ou seja, de A para Z:
Tabela tbClientes antes da consulta;

Pagina: 78

Banco de dados MySQL


a) (
b) (
c) (
d) (
e) (

)))))-

SELECT idCliente, nomeCliente FROM tbClientes order by desc nomeCliente


SELECT idCliente, nomeCliente FROM tbClientes order by nomeCliente asc
SELECT idCliente, nomeCliente FROM tbClientes order by nomeCliente desc
SELECT * FROM tbClientes order by asc nomeCliente
SELECT idCliente, nomeCliente FROM tbClientes order by asc nomeCliente

Pgina: 79