Pular para o conteúdo

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!
Marcos Miras marcosmiras
Hits: 83.282 Categoria: Banco de Dados Subcategoria: MySQL
  • Indicar
  • Impressora
  • Denunciar

Parte 4: Manipulando a tabela

Bom, aprendemos a criar uma base, criar uma tabela e manipular dados dentro dessa estrutura, agora veremos algumas funções que podemos utilizar em nossa tabela.

Adicionando, renomeando e excluindo uma coluna na tabela

Bom pessoal, pode acontecer que depois de você criar toda sua estrutura haja uma falha de raciocínio lógico e acabe esquecendo de alguma coluna, claro que é recomendável que crie uma estrutura num papel e depois execute-a para que tudo possa estar certinho, mas caso você não alertou para esse fato, pode resolver esse problema utilizando o "alter table".

mysql> ALTER TABLE tabela1 ADD COLUMN sexo varchar(1) AFTER email;

Ou seja, estou dizendo para que ele modifique a tabela chamada "tabela1" adicionando o campo "sexo", com tipo de dado 1 caractere de texto, depois da coluna "email".

Podemos também atualizar um campo já existente de uma tabela:

mysql> ALTER TABLE tabela1 CHANGE email mail VARCHAR(40);

Veja como a estrutura de nossa tabela mudou:

mysql> DESC tabela1;
+--------+----------------+-------+-----+---------+--------+
| Field     | Type              | Null   | Key | Default | Extra |
+--------+----------------+-------+-----+---------+--------+
| nome  | varchar(20) | YES   |         | NULL    |            | 
| mail    | varchar(40) | YES   |         | NULL    |            | 
| sexo    | varchar(1)   | YES   |          | NULL    |            | 
| data    | date              | YES   |          | NULL    |           | 
+--------+----------------+------+------+---------+--------+

Para excluirmos uma coluna podemos utilizar o seguinte:

mysql> ALTER TABLE tabela1 DROP sexo;

Bloqueando uma tabela

Em alguns casos é necessário que haja um bloqueio da tabela para determinada tarefa, isso ocorre em situações de transações, exportação de backup, alterações em grande volume de dados e assim adiante:

mysql> LOCK TABLES tabela1 READ;

O comando acima faz com que só haja a leitura dessa tabela, entre as funções podemos mesclar o lock tables com:
  • READ - Como vimos, só deixa fazer consulta (ler).
  • READ LOCAL - Permite que inserções não-conflitantes sejam realizadas (não funciona em tabelas InnoDB).
  • WRITE - Permite que a thread que solicitou o bloqueio possa escrever e atualizar registros e as demais threads possam somente ler.
  • LOW_PRIORITY WRITE - Bloqueia a tabela para inserção e alteração, permite que outros processos bloqueiem essa tabela para leitura. A thread que solicitar o bloqueio de escrita deverá esperar a thread que bloqueou a leitura acabe seu processamento.

Desbloqueando uma tabela

mysql> UNLOCK TABLES;
mysql> FLUSH TABLES;

Requer o flush para que todas as informações sobre índices sejam gravados em disco.

   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

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

Integridade dos arquivos do sistema

PhpPgAdmin e PhpMyAdmin

Comunity ENTerprise Operating System, o CentOS

A função DATE_FORMAT() do MySQL

Resolva Problemas com o MySQL Workbench no Linux Mint 21.1

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

Administrando bancos MySQL com phpMyAdmin

MySQL Workbench no Slackware 14.0

#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/ etch/updates main contrib
deb-src 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

Entre na sua conta para comentar.