MySQL Básico - O comando INSERT - Inserindo dados

19/04/2006 20:12:00

Autor: Rondinely S. de Almeida


Serviços para Webmasters

No último artigo, MySQL Básico - Criando tabelas, demonstramos como criar uma base de dados e uma tabela, agora mostraremos as maneiras básicas de se inserir dados nesta tabela.

Primeiramente acesse o utilitário de linha de comando do MySQL, selecione a base de dados Locadora e verifique a existência da tabela filmes.


mysql> use locadora;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_locadora |
+--------------------+
| filmes |
+--------------------+
1 row in set (0.05 sec) mysql>

A síntese básica do comando INSERT é a seguinte:

INSERT INTO nome_tabela [(nome_coluna,...)] VALUES (valores)

Vamos inserir os dados de um filme em nossa tabela.


mysql> insert into filmes (id,titulo,ano,diretor) -> values (0,'King Kong',2006,'Peter Jackson');
Query OK, 1 row affected (0.08 sec) mysql>

Com este comando inserimos os dados do filme King Kong, do ano de 2006, do diretor Peter Jackson. Mas e o valor 0 da coluna id?

Quando criamos a tabela filmes definimos a coluna id como tendo a caracteristica de ser auto_increment, ou seja, seu valor é incrementado automaticamente, não precisamos nos preocupar com o valor inserido por último para decidirmos qual o valor a ser inserido agora. Com esta característica podemos criar sequências de valores como 1,2,3,4,5,6... Para podermos aproveitar esta facilidade não podemos atribuir um valor válido a coluna id, devemos inserir 0 ou NULL para que o banco de dados saiba que desejamos que ele calcule sozinho o próximo valor válido.

Interessante ressaltar que valores do tipo texto (string) são colocados entre aspas (simples ou dupla).

Poderiamos, também, inserir dados omitindo os nomes das colunas e colocando apenas os valores no comando, desde que os valores estejam na mesma sequência das colunas na tabela.


mysql> insert into filmes values
-> (null,'Guerra dos Mundos',2005,'Steven Spielberg');
Query OK, 1 row affected (0.01 sec) mysql>

Note que desta vez não colocamos os nomes das colunas antes da instrução VALUES. Outra mudança que fizemos foi atribuir o valor null a coluna id.

Vamos ver como está nossa tabela no momento com o auxílio do comando SELECT.


mysql> select * from filmes;
+----+-------------------+------+------------------+
| id | titulo | ano | diretor |
+----+-------------------+------+------------------+
| 1 | King Kong | 2006 | Peter Jackson |
| 2 | Guerra dos Mundos | 2005 | Steven Spielberg |
+----+-------------------+------+------------------+
2 rows in set (0.01 sec) mysql>
Não deixe de ver também:
SELECTO comando SELECT realiza uma consulta ao banco de dados e retorna o resultado desta consulta.

Estudaremos melhor o comando SELECT nos próximos artigos, mas no momento basta saber que SELECT * FROM nome_tabela, seleciona e exibe os valores de todas as colunas de uma tabela.

Observe que a coluna id contém uma sequência de valores, sequência esta gerada automáticamente pelo banco de dados.

Vamos ver agora alguns erros que podem ser cometidos ao inserir dados.

ESQUECER DE ATRIBUIR VALOR A UMA COLUNA NOT NULL

No nosso caso a tabela filmes possui apenas colunas que não aceitam valores nulos (podemos verificar isto com o comando DESC nome_tabela), ou seja, geraremos um erro se omitirmos qualquer valor, exceto o da coluna id, que neste caso atribuira um valor automático.

mysql> insert into filmes (titulo, ano) values
-> ('Harry Potter e o Cálise de Fogo',2006);
ERROR 1364 (HY000): Field 'diretor' doesn't have a default value
mysql>

Neste caso tentamos inserir apenas o valor do titulo e ano do filme, o banco de dados não aceitou e mostrou o erro 1364, para avisar que o campo diretor não tem nenhum valor padrão (não pode ser nulo, no caso) para ser atribuido.

ESQUECER DE COLOCAR UM VALOR DO TIPO TEXTO ENTRE ASPAS

mysql> insert into filmes (titulo,ano,diretor) values
-> ('Harry Potter e o Cálise de Fogo',2006,Mike Newell);
ERROR 1064 (42000): VocÛ tem um erro de sintaxe no seu SQL pr¾ximo a 'Newell)' na linha 2
mysql>

Aqui esquecemos de colocar aspas no nome do diretor, o banco de dados não aceitou a entrada e gerou o erro 1064 e avisou que temos um erro de sintese na instrução SQL próximo de 'Newell)', ou seja, próximo ao nome do diretor.

ATRIBUIR UM VALOR REPETIDO A UMA CHAVE PRIMÁRIA OU A UM CAMPO ÚNICO

Na nossa tabela de exemplo não campos únicos, mas temos uma chave primária, e pode ser por acidente tentemos atribuir um valor duplicado a esta chave.

mysql> insert into filmes (id,titulo,ano,diretor) values
-> (2,'Harry Potter e o Cálise de Fogo',2006,'Mike Newell');
ERROR 1062 (23000): Entrada '2' duplicada para a chave 1
mysql>

Nesta situação tentamos inserir um registro com a chave primária 2, mas em nossa tabela já tinhamos um registro com esta mesma chave primária, como os campos de chave primária não aceitam valores duplicados o banco de dados gerou um erro 1062 e avisou que a entrada 2 é duplicada para a primeira chave primária (primeira e única no nosso exemplo) da tabela filmes.

FINALMENTE INSERIMOS O FILME HARRY POTTER

Depois de todos estes erros vamos a síntese correta novamente.

mysql> insert into filmes (id,titulo,ano,diretor) values
-> (0,'Harry Potter e o Cálise de Fogo',2006,'Mike Newell');
Query OK, 1 row affected (0.23 sec) mysql>

Uma vez inserido este filme concluimos aqui este artigo. Nossa tabela de filmes ficou com os seguintes dados:

Artigos relacionados

MySQL Básico - O comando DELETE - Excluindo dados : 19/07/2006
Neste artigo demonstraremos como excluir registros em tabelas no banco...

MySQL Básico - O comando UPDATE - Atualizando dados : 15/05/2006
Neste artigo demonstraremos como atualizar dados em tabelas no banco de...

MySQL Básico - O comando SELECT - Realizando consultas : 20/04/2006
Neste artigo demonstraremos como realizar consultas em uma tabela no banco...

MySQL Básico - O comando CREATE TABLE - Criando tabelas : 29/03/2006
Estamos iniciando uma série de artigos sobre o básico que se deve saber...

>> Inicio <<
© Copyright hospedia.com.br - 2005
Todos os direitos reservados.
Seu Ponto de Partida na Internet
Receitas de Bolos
Lyrics
centro-top