Inserindo Dados
Agora que já criamos nossas tabelas, vamos aprender a realizar consultas simples e a inserir dados nas tabelas. Atualmente nossa base de dados possui essas três tabelas:
Caso você tenha fechado o MySQL e ele retorne a mensagem de que nenhuma base de dados está selecionada, digite o comando use teste;.
Uma consulta é apenas um comando capaz de exibir as informações de uma ou mais tabelas. Para exibirmos o conteúdo de uma tabela, o comando a ser usado é o SELECT e sua sintaxe é bem simples, vejam:
SELECT * FROM cliente;
Esse comando exibirá todo o conteúdo da tabela cliente.
O retorno Empty set indica que nossa tabela está vazia. Sendo assim, vamos inserir alguns dados. O comando utilizado para isso é o INSERT INTO e ele deve ser usado da seguinte forma:
INSERT INTO cliente (telefone, nome, endereco, email, idade, cpf) VALUES (“5555-5555”, “Daniel”, “Rua X, 200”, “daniel@emailinexistente.com”, 30, “99999999990”);
Fiquem tranquilos se tudo parece um pouco confuso ou poluído demais. Vou explicar melhor logo abaixo, mas de imediato o importante é apenas executar este comando no MySQL:
O retorno Query OK, 1 row affected indica que o comando foi bem recebido pelo SGBD e que uma linha sofreu alteração, que no nosso exemplo foi a criação de uma linha contendo os dados que utilizamos. Vamos verificar se os dados estão realmente lá com o comando SELECT, visto acima:
Vejam que nossos dados foram corretamente armazenados. A formatação não está maravilhosa, é possível melhorá-la um pouco, mas não veremos isso ainda e, de qualquer forma o prompt do SGBD não é a melhor interface para exibir dados, e nem deve ser, já que seu papel é apenas armazená-los, mas enfim, o importante é que nossos dados foram corretamente salvos.
Antes de prosseguirmos, cabem algumas observações importantes sobre o comando de inserção. Vamos a elas:
Nos primeiros parênteses defini os campos da tabela que receberiam os dados (enumerados em amarelo). Nos parênteses seguintes defini os dados que seriam colocados nos campos (enumerados em verde). O importante a ser observado é que a ordem da inserção dos dados acompanhou a ordem definida nos primeiros parênteses. Por exemplo: o campo 2 definia a coluna "nome", portanto na inserção o valor 2 era o nome do cliente. O campo 3 definia o endereço e o valor 3 na inserção era a string contendo o endereço, e assim por diante. Essa ordem deve ser respeitada. Vale ressaltar que ela não precisa seguir a ordem definida na criação das tabelas. Se o último campo definido na criação foi a idade e você quiser inserir o dado referente à idade em primeiro lugar, não há problema, mas a especificação deve deixar isso claro, da seguinte forma:
INSERT INTO cliente (idade, telefone, nome, endereco, email, cpf) VALUES (30, “5555-5555”, “Daniel”, “Rua X, 200”, “daniel@emailinexistente.com”, “99999999990”);
Percebam que aqui defini o campo idade como sendo o primeiro e, nos parênteses referentes aos dados, coloquei o valor da idade como o primeiro a ser inserido. Isso é possível.
Outra observação importante é que o valor referente à idade foi o único que não foi inserido com aspas e isso aconteceu por ele ser um campo do tipo int e não uma string. Portanto lembrem-se que campos int não necessitam de aspas.
Vale ressaltar também que poderíamos não ter inserido dados em todos os campos, deixando nosso comando da seguinte forma:
INSERT INTO cliente (idade, nome, email, cpf) VALUES (30, “Marcos”, “marcos@emailinexistente.com”, “88888888888”);
Se dermos um SELECT na tabela, teremos isso:
Percebam que os campos onde não especificamos nada aparecem com a palavra NULL, que significa que eles estão nulos.
Para encerrar a inserção de dados, é importante dizer que se formos inserir os dados na mesma ordem em que as colunas foram criadas e preenchendo todos os campos, nosso comando pode ser reduzido, vejam:
INSERT INTO cliente VALUES (“2222-2222”, “Lisa”, “Rua Y, 300”, “lisa@emailinexistente.com”, 20, “55555555550”);
Percebam que não especifiquei os campos, apenas coloquei o parênteses com os dados e mesmo assim o comando foi recebido corretamente pelo SGBD:
Vale relembrar que o comando só foi bem aceito porque inseri os dados na mesma ordem em que os campos da tabela foram criados no comando create table. É bem mais simples, mas utilizando este comando reduzido você obrigatoriamente precisa preencher todos os campos.
Caso você queira usar esse recurso, mas não se lembre da ordem em que os campos da sua tabela foram criados, você pode usar o comando DESC seguido do nome da tabela, da seguinte forma:
desc cliente;
Com o comando desc e o nome da tabela você vê a ordem em que as colunas foram criadas e pode fazer uso do comando simplificado!