Gerenciando banco de dados com MySQL (Parte 1)

Este artigo aborda por completo as funções SQL básicas de manipulação de tabelas, assim como as funções de manipulação de dados. Os comandos SQL foram executados sob MySQL, mas também podem ser utilizados em qualquer outro software gerenciador de banco de dados.

[ Hits: 308.910 ]

Por: Jefferson Estanislau da Silva em 17/11/2003


Manipulando dados nas tabelas



Agora que já temos a nossa estrutura de tabelas prontas, é hora de começar a inserir dados nelas, pois é para isso que elas servem, armazenar dados para que estes sejam trabalhados mais tarde.

Inserindo Dados


O comando utilizado para inserir dados nas tabelas é o INSERT, veja a sintaxe abaixo para se usar este comando:

INSERT INTO tabela VALUES (valor_campo1, valor_campo2, ..., valorcampoN);

OBS: Insere valores na ordem correta de todos os campos da tabela.

Vamos agora para a inserção de dados. Iremos começar com a tabela DISCIPLINAS, sendo assim, a partir do prompt do MySQL, digite os comandos abaixo:

mysql> insert into DISCIPLINAS values ('10','Matematica');
Query OK, 1 row affected (0.30 sec)

mysql> insert into DISCIPLINAS values ('20','Portugues');
Query OK, 1 row affected (0.00 sec)

mysql> insert into DISCIPLINAS values ('30','Quimica');
Query OK, 1 row affected (0.00 sec)

mysql> insert into DISCIPLINAS values ('40','Biologia');
Query OK, 1 row affected (0.00 sec)

OBS: O uso de aspas simples é obrigatório por se tratar de um valor não numérico. Lembre-se que '10' foi para o campo "coddisciplina" e que 'Matematica' foi para o campo "nomedisciplina", de acordo com a ordem dos campos da tabela.

Vamos agora para a tabela CURSOS:

mysql> insert into CURSOS values ('01', 'Ensino Medio', '30', '40');
Query OK, 1 row affected (0.00 sec)

mysql> insert into CURSOS values ('02', 'Ensino Fundamental', '10', '20');
Query OK, 1 row affected (0.00 sec)

OBS: Lembre-se que '01' foi para o campo "codcurso", 'Ensino Medio' para "nomecurso", '30' para "coddisc1" e '40' para "coddisc2".

Vamos agora para a tabela ALUNOS:

mysql> insert into ALUNOS values ('100', 'Jefferson Estanislau da Silva', 'Rua Alberto Braune - 150', 'Nova Friburgo', '01');
Query OK, 1 row affected (0.00 sec)

mysql> insert into ALUNOS values ('200', 'Leila Maria Muniz da Silva', 'Rua General Osorio - 90', 'Nova Friburgo', '01');
Query OK, 1 row affected (0.00 sec)

mysql> insert into ALUNOS values ('300', 'Camila Silva Perez', 'Rua Barata Ribeiro - 570', 'Rio de Janeiro', '02');
Query OK, 1 row affected (0.00 sec)

mysql> insert into ALUNOS values ('400', 'Victor Estanislau da Silva', 'Rua Galdino do Valle - 200', 'Nova Friburgo', '02');
Query OK, 1 row affected (0.00 sec)

OBS: Lembre-se que '100' foi para o campo "matricula", 'Jefferson Estanislau da Silva' foi para "nome", 'Rua Alberto...' para "endereco", 'Nova...' para "cidade" e '01' para "codcurso".

Muito bem! Acabamos de inserir dados em nossa base de dados. Mas e agora?

Visualizando dados


Não iria fazer sentido você armazenar dados se não pudesse visualizá-los quando fosse preciso, correto? Por isso, iremos aprender agora como visualizar estes dados. O comando a ser utilizado é o SELECT, veja a sintaxe dele abaixo:

SELECT  {campo(s)} FROM {tabela(s)}
        WHERE {condição}
        ORDER BY {campo(s)}
        GROUP BY {campo(s)}


Esclarecendo as informações da sintaxe a cima:



Obs: O "*" (asterisco), terá um papel importante neste comando.

Exemplo1: Visualizar os nomes da tabela alunos quando a matricula for igual a '100'.

mysql> select nome from ALUNOS
    -> where matricula='100';
+-------------------------------+
| nome                          |
+-------------------------------+
| Jefferson Estanislau da Silva |
+-------------------------------+
1 row in set (0.46 sec)

Exemplo2: Visualizar os nomes da tabela alunos quando a codcurso for igual a '01'.

mysql> select nome from ALUNOS
    -> where codcurso='01';
+-------------------------------+
| nome                          |
+-------------------------------+
| Jefferson Estanislau da Silva |
| Leila Maria Muniz da Silva    |
+-------------------------------+
2 rows in set (0.00 sec)

Exemplo3: Visualizar os nomes e endereço da tabela alunos quando a cidade for igual a 'Nova Friburgo'.

mysql> select nome, endereco from ALUNOS
    -> where cidade='Nova Friburgo';
+-------------------------------+----------------------------+
| nome                          | endereco                   |
+-------------------------------+----------------------------+
| Jefferson Estanislau da Silva | Rua Alberto Braune - 150   |
| Leila Maria Muniz da Silva    | Rua General Osorio - 90    |
| Victor Estanislau da Silva    | Rua Galdino do Valle - 200 |
+-------------------------------+----------------------------+
3 rows in set (0.00 sec)

Exemplo4: Visualizar todos os campos da tabela alunos.

mysql> select * from ALUNOS;
...

Exemplo5: Visualizar todos os campos da tabela alunos, ordenando-os pelo campo nome.

mysql> select * from ALUNOS
    -> order by nome;
...

Visualizando dados de várias tabelas


Para que isto ocorra, será fundamental o campo chave, que ajudará a fazer a ligação com um campo comum de outra tabela, mas que tem o mesmo tipo de dado. Veja a sintaxe a seguir:

select TABELA1.campo, TABELA2.campo from TABELAS
where TABELA1.campo_chave = TABELA2.campo_comum
and TABELA.campo = valor;


Esclarecendo as informações da sintaxe a cima:

SELECT comando para se chamar a visualização de registros
campo(s) campos da tabela, para referência da visualização dos registros
FROM chamada para indicar a tabela
tabela(s) tabela ou tabelas a serem utilizadas
WHERE chamada para uma condição
condição condição que deve ser verdadeira para que os registro sejam visualizados
ORDER BY permite ordenar a visualização de registros em função de um campo especifico
GROUP BY permite agrupar a visualização de registros em função de um campo especifico


Exemplo6: Visualizar o campo "nome" da tabela alunos e o campo "nomecurso" da tabela cursos, retirado das tabelas alunos e cursos, quando codcurso da tabela alunos for igual a codcurso da tabela cursos e a cidade da tabela alunos seja igual a 'Nova Friburgo'.

mysql> select ALUNOS.nome, CURSOS.nomecurso from ALUNOS, CURSOS
    -> where ALUNOS.codcurso = CURSOS.codcurso
    -> and ALUNOS.cidade='Nova Friburgo';
+-------------------------------+--------------------+
| nome                          | nomecurso          |
+-------------------------------+--------------------+
| Jefferson Estanislau da Silva | Ensino Medio       |
| Leila Maria Muniz da Silva    | Ensino Medio       |
| Victor Estanislau da Silva    | Ensino Fundamental |
+-------------------------------+--------------------+
3 rows in set (0.35 sec)

Alterando dados


Outra coisa importante é você poder alterar uma informação, quando visualizado que esta foi cadastrada erroneamente, para isso iremos utilizar o comando UPDATE, como mostra a sintaxe abaixo:

UPDATE tabela
       SET campo = valor
       WHERE {condição};


Vamos a uma explicação prática desta sintaxe:

mysql> update ALUNOS
-> set cidade='Salvador'
-> where matricula='300';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

O exemplo acima significou que: usando a tabela alunos, altere a cidade para 'Salvador' quando a matricula for igual a '300'.

Para ver a alteração, use o comando: select * from ALUNOS;

Neste próximo exemplo, usando a tabela alunos, iremos mudar o nome para 'Joao Vieira da Silva' quando a cidade for igual a 'Salvador'.

mysql> update ALUNOS
-> set nome='Joao Vieira da Silva'
-> where cidade='Salvador';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Para ver a alteração, use o comando: select * from ALUNOS;

Apagando dados


Como toda a informação pode se tornar inútil ou desnecessária, devemos aprender como apagar um dado de nossa tabela. Para isso, iremos utilizar o comando DELETE, veja a sintaxe a seguir:

DELETE FROM tabela
       WHERE {condição};

Vamos a uma explicação prática desta sintaxe:

mysql> delete from ALUNOS
-> where matricula='300';
Query OK, 1 row affected (0.41 sec)

Observe que usei para esta condição o número da matrícula, mas poderia ter usado o valor de qualquer campo.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. A Linguagem SQL e seus componentes
   3. Sobre o MySQL
   4. Utilizando o MySQL
   5. Criando a base de dados
   6. Alterando a base de dados
   7. Visualizando a estrutura de nossa base de dados
   8. Mas só para ser do contra, vamos simular um problema
   9. Manipulando dados nas tabelas
   10. Conclusão
Outros artigos deste autor

Configurando o IDS - Snort / Honeypot (parte 2)

Implementando scripts PHP com MySQL

AMSN, uma opção Open Source para o Messenger da Microsoft

Software Livre - GNU x LPG e o Governo x Economia (parte 2)

Banda Larga: Será que você tem mesmo?

Leitura recomendada

Administrando bancos MySQL com phpMyAdmin

SQL Dicas & Truques (versão 0.1)

Instalação e configuração do MySQL com phpMyAdmin no CentOS - Iniciantes

Cluster MySQL - Instalação e configuração

Instalando o MySQL no Slackware

  
Comentários
[1] Comentário enviado por thiagosc em 17/11/2003 - 14:14h

Beleza de artigo Jefferson parabéns...

[2] Comentário enviado por m0d em 19/11/2003 - 19:04h

opa, meu nome eh julio cezar, queria dizer que gostei muito do artigo, e gostaria de deixar aki tb o pedido ...
gostaria que escrevesse o quanto antes a parte 2 do artigo, pois achei mt massa.
obrigado

[3] Comentário enviado por removido em 17/04/2004 - 20:24h

legal essa de fazer um artigo sobre MySQL. amigo, tenho uma ideia e uma duvida pra ti, estou tentando conectar uma base de dados MySQL rodando remotamente em um sevidor red hat por meio de uma estação terminal server kurumin (as máquinas já estão se vendo e se conversando via rede) utilizando o Open Office org como front-end.

[4] Comentário enviado por Rsell em 29/06/2004 - 02:04h

Parabens pelo artigo Jefferson.

To precisando aprender Linux voltado para parte de banco de dados. Teu artigo me ajudou.
Abraços

[5] Comentário enviado por duardo em 23/07/2004 - 01:14h

muito bom realmente, foi muito valido pra mim que estou começando a mexer com programação...

[6] Comentário enviado por juliomortandela em 30/08/2004 - 11:29h

Ótimo Artigo, estou começando a trabalhar com banco de dados em MySQL, já tenho em mente algumas implementações de PHP + MySQL para viabilizar o uso do sistema ERP aqui da empresa remotamente, e como não conheço "NADA" de MySQL nem de PHP, já notei que não será um bicho de sete-cabeças...

PS: E este modo de passar o conhecimento adiquirido por todos nós usuários Linux apenas pelo fato de poder auxiliar o próximo, sem pensar em reputação, ou dinheiro que me faz manter acesa a chama de "um dia em que a humanidade irá prosperar de fato."

Muito Obrigado

Julio

[7] Comentário enviado por nico_di_mafre em 30/08/2004 - 15:54h

Este é exelente, parabéns Jefferson E. Silva, realmente seus artigos são muito bons.

[8] Comentário enviado por ace rush em 22/11/2004 - 19:28h

Muito bom Jeff, sem viravoltas e bem objetivo.. gostei.. parabens ^^

[9] Comentário enviado por sl0ck em 27/11/2004 - 02:13h

Muito Bom esse Tutorial sobre BD, Valeuz!!!

[10] Comentário enviado por genioloco em 30/11/2004 - 02:13h

Meu, este artigo é o que eu precisava para aprender Mysql que é um senhor banco de dados!

[11] Comentário enviado por fernandoamador em 16/12/2004 - 16:48h

Excelente apostila de mySQl. Parabéns.

[12] Comentário enviado por kl31n em 09/03/2005 - 00:13h

Ok......legal o artigo....
mas gostaria de saber tipo.....
se existem StoredProcedures no MySql
ou como o MySql trata as operações
para fazer com que realmente aconteça
o Client-Server
tipo...o sistema manda as informações e
o BG eh que grava elas e se vira com tudo.......

[13] Comentário enviado por perigo em 17/03/2005 - 13:43h

Carregue a tabela CLIENTE_AUX com os dados da tabela CLIENTE, usando apenas um comando.
Como eu resolvo isso ?

[14] Comentário enviado por Hernando em 03/05/2005 - 10:55h

Como sempre vejo a excelencia em seus artigos... Gosto de acompanhar todos mesmo que naum venha a ultiliza-los testo todos e nunca tive problemas com nenhum deles, parabenizo-o tambem pela preocupação demonstrada por ti a quem está iniciando no mundo linux... é isto que precisa para motivar a migração de qualquer usuário e assim atingir o dominio do mercado, sendo que o mesmo segue tendencias... e se a tendencia é o crescimento do linux é para isso que estamos aki...

[]'s

[15] Comentário enviado por fabiano_shark em 10/12/2005 - 14:33h

Parabéns pela iniciativa, ficou perfeito seu artigo. Parabéns.

[16] Comentário enviado por halquimista em 30/12/2005 - 18:02h

Esperamos um novo artigo com novas explicações!!!
valeu

[17] Comentário enviado por kernel_sys em 03/06/2006 - 02:43h

cara gostaria de agradecer por esses passo qeu vc passou..to fazendo a mateia de bamco de dados na facul...como não seria diferente o fila da P do meu professor so usa windows.., e como tambem não seria diferente eu compliquei e quis usa linux..heheh não abro mão disso jamais...valeu mesmo..

[18] Comentário enviado por Lpareal em 20/06/2006 - 19:35h

Tou esperando ansiosamente a segunda parte do artigo!!

Muito bom! Valeu mesmo!

[19] Comentário enviado por cams em 11/10/2006 - 08:14h

Poxa valeu esse artigo vai me salvar
mto bom mesmo...

[20] Comentário enviado por aazevedo1984 em 04/05/2007 - 10:42h

Valeu cara ajudou bastante. Estou esperando a continuacao. Mas ate la como eu mudo a chave primaria?

[21] Comentário enviado por balani em 15/07/2007 - 02:10h

sem comentarios, simplesmente excepcional...

[22] Comentário enviado por worm em 10/09/2007 - 14:48h

Excelente, muito bom seu artigo cara!!

[23] Comentário enviado por edex em 10/03/2008 - 13:32h

Onde posso encontrar o bd? Em que pasta do sistema encontro o arquivo?

[24] Comentário enviado por megatron_rj em 19/07/2008 - 02:54h

Muito bom o artigo!!!!
Escrito de forma clara e simples para que seu entendimento seja atingido.
Obrigado,

[25] Comentário enviado por negralha em 14/10/2008 - 21:31h

muito bom cara valeu por coloessas infoemação ai valeu

[26] Comentário enviado por mmartin em 11/09/2009 - 14:43h

Ótimo artigo.

[27] Comentário enviado por juniorx em 29/09/2012 - 11:39h

poxa cara valeu mesmo dahora em!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts

tabela1.campo campo a ser exibido
tabela2.campo campo a ser exibido
tabelas nome das tabelas a serem usadas
tabela1.campo_chave campo chave para junção
tabela2.campo_comum campo comum para junção
tabela.campo qualquer uma das tabelas indicadas
valor valor para referência da condição