Introdução ao MySQL

No fórum do Viva o Linux tenho percebido diversas perguntas sobre o MySQL, dúvidas sobre conexão, direitos de usuários, dentre outros detalhes básicos. Se você não conhece nada ou quase nada sobre o MySQL, chegou a hora de aprender um pouco mais sobre ele!

[ Hits: 82.203 ]

Por: Marcos Miras em 24/09/2008


Criando tabela e inserindo, atualizando e excluindo dados



Particularmente eu considero a linha de comando do MySQL um pouco chatinha, prefiro uma interface gráfica. Pesquisando encontrei algumas, mas a que mais me agradou foi o MySQL Query Browser, que pode ser baixado no site do MySQL.

Já que criamos nossa base e compreendemos um pouco mais sobre o MySQL, vamos criar algumas tabelas:

Carregue a base:

mysql> USE minha_base;

Vamos criar uma tabela com os campos NOME, EMAIL, DATA:

mysql> create table tabela1 (nome VARCHAR(20), email VARCHAR(20), data DATE);

Vejamos se a mesma foi criada:

mysql> SHOW TABLES;
+-------------------------------+
| Tables_in_minha_base  |
+-------------------------------+
| tabela1                              |
+-------------------------------+
E vejamos os campos que ela possui:

mysql> DESC tabela1;
+-------+----------------+------+-----+---------+-------+
| Field  | Type               | Null  | Key | Default | Extra |
+-------+----------------+------+-----+---------+-------+
| nome | varchar(20) | YES  |         | NULL    |          |
| email | varchar(20) | YES  |         | NULL    |           |
| data   | date              | YES  |         | NULL    |           |
+-------+----------------+------+-----+---------+-------+
E vamos inserir dados nessa tabela:

mysql> INSERT INTO tabela1 VALUES ('Marcos Miras' , 'marcosmiras@atmsystem.com.br' , '2008-09-19');
mysql> SELECT * FROM tabela1;
+-----------------+-------------------------------------+---------------+
| nome               | email                                       | data              |
+-----------------+-------------------------------------+----------------+
| Marcos Miras | marcosmiras@atmsyste     | 2008-09-19 | 
+-----------------+-------------------------------------+----------------+

Vamos atualizar esse valor do campo "email":

mysql> UPDATE tabela1 SET email='marcos@atmsystem.com';
mysql> SELECT * FROM tabela1;
+-----------------+------------------------------------+----------------+
| nome               | email                                       | data             |
+-----------------+------------------------------------+----------------+
| Marcos Miras | marcos@atmsystem.com | 2008-09-19 | 
+-----------------+------------------------------------+----------------+

Excluindo a entrada de registro:

mysql> DELETE FROM tabela1;
mysql> SELECT * FROM tabela1;
Empty set (0.00 sec)

Porém, percebe-se que o comando insert atualiza o campo determinado de todos os registros da tabela e o comando "delete" exclui todos os dados da tabela, para resolver esse problema conheceremos a cláusula "where". Para testar vamos fazer várias inserções na tabela:

mysql> INSERT INTO tabela1 VALUES ('Joao Silva' , 'joao@dominio' , '2008-09-19');
mysql> INSERT INTO tabela1 VALUES ('Jose Pereira' , 'ze@dominio' , '2008-09-19');
mysql> INSERT INTO tabela1 VALUES ('Maria' , 'maria@dominio' , '2008-09-19');
mysql> INSERT INTO tabela1 VALUES ('Pedro' , 'pedro@dominio' , '2008-09-19');
mysql> SELECT * FROM tabela1;
+---------------+----------------------+----------------+
| nome            | email                    | data              |
+---------------+----------------------+----------------+
| Joao Silva    | joao@dominio    | 2008-09-19 | 
| Jose Pereira | ze@dominio        | 2008-09-19  | 
| Maria            | maria@dominio | 2008-09-19 | 
| Pedro            | pedro@dominio  | 2008-09-19 | 
+---------------+----------------------+----------------+

Utilizando o "where" vamos selecionar os registros da tabela1 que contenham "Pedro":

mysql> SELECT * FROM tabela1 WHERE nome="Pedro";
+--------+----------------------+----------------+
| nome  | email                     | data             |
+--------+----------------------+----------------+
| Pedro   | pedro@dominio | 2008-09-19 | 
+--------+----------------------+----------------+

Sendo assim podemos excluir e atualizar os dados que queremos:

mysql> UPDATE tabela1 SET email='pd@dominio2' where nome="Pedro";
mysql> UPDATE tabela1 SET nome='Maria Souza' where nome='Maria';
mysql> DELETE FROM tabela1 where nome='Joao Silva';

Verifique suas alterações com o "select".

O "delete" exclui os dados da tabela, agora se você deseja excluir a tabela você pode usar o "drop", assim como na exclusão do base (vista na página anterior).

mysql> DROP TABLE tabela1;

Página anterior     Próxima página

Páginas do artigo
   1. O software
   2. Armazenamento e criação
   3. Criando tabela e inserindo, atualizando e excluindo dados
   4. Manipulando a tabela
   5. Permissões
   6. Segurança e configuração
   7. Conclusão
Outros artigos deste autor

PhpPgAdmin e PhpMyAdmin

Integridade dos arquivos do sistema

Ruby + Rails + Gem + Mongrel Cluster + Apache + MySQL n0 Red Hat EL

Comunity ENTerprise Operating System, o CentOS

Leitura recomendada

Gerenciando banco de dados com MySQL (parte 2)

SQL Dicas & Truques (versão 0.1)

Gambas2 e MySQL, aprofundando relações

OpenOffice + ODBC + MYSQL

OcoMon 2.0RC6 no OpenSUSE 11.2 com PHP5 + MySQL5 + Apache2 com correção de acentuação

  
Comentários
[1] Comentário enviado por maran em 24/09/2008 - 09:23h

WoW fala ai Marcos, tudo na paz?
Ainda não li tudo, porém, estou ancioso para poder chegar em casa e ler com calma, já esta impresso :)

Show de bola velinho, não conheço nada de Banco de Dados, e isso ai, já irá ser uma bela porta de entrada,

Parabéns, é isso ae, 10!

Abraços

[2] Comentário enviado por marcosmiras em 24/09/2008 - 09:32h

Tudo tranquilo Maran, obrigado pelo comentário e o que precisar estamos aí!

[]'s
Marcos Miras

[3] Comentário enviado por JLAUDIRT em 24/09/2008 - 10:03h

Infelizmente ainda estou preso ao window por ter de utilizar o delphi para desenvolver aplicativos para os meus clientes.
Estou estudando o mysql e percebi que ele nao aceita muitos selects (uns dentro dos outros) por exemplo:

"select table1.campo1,table1.campo2,(select table2.campo2 from table2 where table2.campo1 = table1.campo1) as descricao from table1 order by campo1;"


Qual seria a solução para este tipo de select?

[4] Comentário enviado por jose.freitas.rj em 24/09/2008 - 11:56h

pessoal sou novo no linux e uso fedora 8 e mexo um pouco com mysql e postgresql. com o postgresql consigo fazer qualquer maquina da rede acessar meu banco de dados, já com o mysql não sei fazer por que ainda não encontrei nenhum tutorial explicando isso. alguém sabe configurar o mysql no fedora 8 pra ser acessado por qualquer maquina da rede?
abraços...

[5] Comentário enviado por marcosmiras em 24/09/2008 - 11:59h

jfreitas23,
Releia a página 5 desse artigo:
http://www.vivaolinux.com.br/artigo/Introducao-ao-MySQL/?pagina=5

Que você vai encontrar como fazer o que deseja!

[]'s
Marcos Miras

[6] Comentário enviado por jose.freitas.rj em 24/09/2008 - 13:25h

marcos, show de bola!!! aieuaiueiaueiua...
funcionou!!!
valeu pela ajuda!!!
simples e eficaz!!!
valeu pela dica!!!
FIQUE COM DEUS!!!

[7] Comentário enviado por joaomc em 24/09/2008 - 13:28h

Lembrem-se: Multithreads *não* é o mesmo que uso de mais do que um processador.

[8] Comentário enviado por f_Candido em 24/09/2008 - 16:26h

Muito Bom. Parabéns.
Sem comentários.


Abraços

[9] Comentário enviado por andre_asn em 24/09/2008 - 17:13h

Gostei muito do seu artigo mas tive um probleminha uso o debian 4.0 e logo de cara deu este :

download@MATRIX:~$ su
Password:
MATRIX:/home/download# apt-get mysql mysql-server mysql-client
E: Operação mysql inválida

Mudando um pouco o comando para instalar da este outro erro :

MATRIX:/home/download# apt-get install mysql mysql-server mysql-client
Lendo lista de pacotes... Pronto
Construindo árvore de dependências... Pronto
E: Impossível achar pacote mysql
MATRIX:/home/download#

[10] Comentário enviado por grandmaster em 24/09/2008 - 18:21h

Parabéns, ficou realmente bem legal

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br


[11] Comentário enviado por marcosmiras em 24/09/2008 - 21:53h

@andre_asn: Você deve adicionar o repositório correto! Dê uma lida nesse link http://www.howtoforge.com/mysql4.1-and-php4-on-debian-etch

@f_Candido: Muito obrigado!

@grandmaster: Muito obrigado!

[]'s
Marcos Miras.

[12] Comentário enviado por andre_asn em 24/09/2008 - 22:03h

Boa noite Marcos Miras mas ja instalei o repositório mas da sempre o mesmo problema:

download@MATRIX:~$ su
Password:
MATRIX:/home/download# apt-get mysql mysql-server mysql-client
E: Operação mysql inválida
MATRIX:/home/download#

[13] Comentário enviado por slacklex em 24/09/2008 - 22:55h

Show de bola, amanhã imprimo no serviço... :-)

[14] Comentário enviado por marcosmiras em 25/09/2008 - 09:46h

@andre_asn: Houve um erro de digitação no artigo, o comando correto é:
apt-get install mysql mysql-server mysql-client
Faltou o "install", vou pedir para a equipe de moderação corrigir!

@slacklex: Obrigado por seu comentário!

[]'s
Marcos Miras.

[15] Comentário enviado por andre_asn em 25/09/2008 - 09:56h

Bom dia apenas informando que não deu certo ainda ja estou com o source.list com o abaixo:

#
#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

deb http://ftp.br.debian.org/debian/ etch main
deb-src http://ftp.br.debian.org/debian/ etch main

deb http://security.debian.org/">http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/">http://security.debian.org/ etch/updates main contrib

deb http://mirrors.kernel.org/debian etch main contrib non-free
deb-src http://mirrors.kernel.org/debian etch main contrib non-free
deb http://security.debian.org etch/updates main contrib non-free
deb-src http://security.debian.org etch/updates main contrib non-free
deb http://www.debian-multimedia.org etch main

deb http://www.debian-multimedia.org etch main

Quando dou o resto do comando:

Next we open /etc/apt/preferences and specify that apt should use the debian.mytso.net repository with priority over the default Debian repositories:

vi /etc/apt/preferences

Diz que não tenho permissão para adicionar mesmo usando o comando root

[16] Comentário enviado por brunocontin em 26/09/2008 - 08:53h

Show de bola, poderia ter uma continuidade rsss, Pois o material ficou muito bem explicado.

[17] Comentário enviado por fredcrs em 26/09/2008 - 08:55h

show de bola
+favoritos
+10

[18] Comentário enviado por marcosmiras em 26/09/2008 - 09:26h

Obrigado pelos comentários!

[]'s
Marcos Miras

[19] Comentário enviado por patriques em 05/04/2009 - 00:31h

Ótimo artigo.. parabéns!
luz e paz...

[20] Comentário enviado por cesar em 18/08/2009 - 14:57h

Muito bom!

Parabéns.

[21] Comentário enviado por dgnonline em 23/11/2009 - 15:10h

Parabéns cara ;D

VIVA O LINUX

[22] Comentário enviado por francislei bowen em 11/03/2010 - 19:19h

Olá,tenho que criar um site em que sua estrutura é silmples mas....não tenhu um conhecimento bom com banco de dados,e uql seria o melhor a ser inserido no site....e como fazer a configuração se vcs, se disponibilizarem algum material disponivel eu agradeço muito muito mesmo....estou ferrado se não criar um quanto antes....desde já agradeço a todos pela atenção.
Francislei

[23] Comentário enviado por pais em 22/05/2011 - 17:02h

root@alencar-desktop:/home/sistema# groupadd mysql
root@alencar-desktop:/home/sistema# useradd -g mysql mysql
root@alencar-desktop:/home/sistema# cd /usr/local
root@alencar-desktop:/usr/local# tar -zxvf mysql-4.0.13.tar.gz
tar: mysql-4.0.13.tar.gz: Não é possível open: Arquivo ou diretório não encontrado
tar: Erro não é recuperável: saindo agora
tar: Child returned status 2
tar: Saindo com estado de falha devido a erros anteriores.
Eu já tinha tentado instalar antes destes comandos.
Cheguei até aquele ponto onde a tela fica azul e uma barra do lado direito vermelha cliko em ok mas a tela não envia nenhum resultado .
Todo comando de instalação ou de remoção da esta mensagem.

Impossível travar o diretório de administração (/var/lib/dpkg/), está em uso por outro processo?
Adriano: minha distro é o Kubuntu 10.4

[24] Comentário enviado por fndiaz em 11/04/2012 - 08:55h

Parabéns pela iniciativa!! Artigo mto bom!

[25] Comentário enviado por FOCADECKIII em 13/09/2012 - 20:35h

Boa noite!!
Sou novo aqui, já li e tentei trabalhar com bancos de dados de uma forma autodidática, mas devido a complexidade de alguns comando e regras a serem implementadas aos dados fica que meio confuso aprender. Alguém sabe um meio de aprender sobre banco de dados de uma forma mais simples?
Agredecido.

Att focadeckIII

[26] Comentário enviado por DebianWoman em 18/11/2012 - 18:57h

Muito bom!!!
Explicou melhor que o livro que estou lendo.
Muito obrigada pela sua contribuição.

Artigo excelente.



Contribuir com comentário