MySQL – INSERT INTO – Inserir Dados em Tabelas – 11
Inserir Dados nas tabelas no MySQL – comando INSERT INTO
Uma das operações mais importantes em um banco de dados é a inserção de registros (dados). Fazemos isso com o uso do comando INSERT INTO.
Sintaxe padrão:
INSERT INTO nome_tabela (coluna1, coluna2,...)
VALUES (valor1, valor2,...);
De acordo com a sintaxe apresentada, devemos especificar a tabela e quais colunas dessa tabela receberão os dados, e em seguida, logo após a palavra-chave VALUES, especificamos os dados em si – na mesma ordem em que as colunas foram especificadas.
Caso haja uma coluna com auto incremento, ela não deve ser incluída na lista de colunas do comando, pois seus dados serão gerados e inseridos automaticamente pelo MySQL quando um novo registro for adicionado.
Exemplos no banco de dados db_biblioteca:
Vamos inserir dados de quatro editoras na tabela tbl_editoras:
INSERT INTO tbl_editoras (Nome_Editora) VALUES ('Prentice Hall'); INSERT INTO tbl_editoras (Nome_Editora) VALUES ('O´Reilly'); INSERT INTO tbl_editoras (Nome_Editora) VALUES ('Microsoft Press'); INSERT INTO tbl_editoras (Nome_Editora) VALUES ('Wiley'); INSERT INTO tbl_editoras (Nome_Editora) VALUES ('McGraw-Hill Education');
Agora, vamos inserir dados na tabela de autores. No exemplo anterior executamos o comando INSERT INTO quatro vezes. mas é possível executá-lo apenas uma vez e inserir múltiplos registros, como mostra o código abaixo, que irá inserir 12 autores de uma vez na tabela tbl_autores:
INSERT INTO tbl_autores VALUES (1, 'Daniel', 'Barret'), (2, 'Gerald', 'Carter'), (3, 'Mark', 'Sobell'), (4, 'William', 'Stanek'), (5, 'Richard', 'Blum'), (6, 'Jostein', 'Gaarder'), (7, 'Umberto', 'Eco'), (8, 'Neil', 'De Grasse Tyson'), (9, 'Stephen', 'Hawking'), (10, 'Stephen', 'Jay Gould'), (11, 'Charles', 'Darwin'), (12, 'Alan', 'Turing'), (13, 'Simon', 'Monk'), (14, 'Paul', 'Scherz');
Note que nesse caso, como inserimos dados em todas as colunas da tabela, e na mesma ordem em que elas foram criadas, não foi necessário especificar essas colunas no comando.
Vamos inserir dados na tabela de categorias:
INSERT INTO tbl_categorias VALUES (1, 'Tecnologia'), (2, 'História'), (3, 'Literatura'), (4, 'Astronomia'), (5, 'Botânica');
Agora, para finalizar, vamos inserir dados na tabela de livros (tbl_livro):
INSERT INTO tbl_Livro (Nome_Livro, ISBN13, ISBN10, Data_Pub, Preco_Livro, Categoria, ID_Autor, ID_Editora) VALUES ('Linux Command Line and Shell Scripting','9781118983843', '111898384X', '20150109', 68.35, 1, 5, 4), ('SSH, the Secure Shell','9780596008956', '0596008953', '20050517', 58.30, 1, 1, 2), ('Using Samba','9780596002565', '0596002564', '20031221', 61.45, 1, 2, 2), ('Fedora and Red Hat Linux', '9780133477436', '0133477436', '20140110', 62.24, 1, 3, 1), ('Windows Server 2012 Inside Out','9780735666313', '0735666318', '20130125', 66.80, 1, 4, 3), ('Microsoft Exchange Server 2010','9780735640610', '0735640610', '20101201', 45.30, 1, 4, 3), ('Practical Electronics for Inventors', '9781259587542', '1259587541', '20160324', 67.80, 1, 13, 5);
Neste último exemplo, uma das colunas não recebeu dados inseridos pelo comando (ID_livro é auto-incrementado), então especificamos as colunas que receberiam dados.
Testando a inserção de dados
Agora vamos executar os comandos abaixo (consultas simples com SELECT) para verificar se os registros foram inseridos corretamente em cada tabela no MySQL:
SELECT * FROM tbl_autores; SELECT * FROM tbl_editoras; SELECT * FROM tbl_livro;
Veja o resultado da inserção de dados na tabela de livros, verificado com o comando executado acima:
Assista a um vídeo explicativo sobre a inserção de registros no MySQL:
O site esta direcionando para /redes-computadores/curso-de-rede-par-trancado-parte-1/ quando devia esta indo para /mysql/mysql-select-realizar-consultas-simples-em-tabelas-12/ que seria a sequência correta.
Grande aulas gostei recordar pessoal. QUERO MATERIAL POR FAVOR.
Bom dia amigo. Tenho uma dúvida e se possivel gostaria da ajuda do mestre do Excel\Access. Eu estou usando o comando INSERT INTO desse jeito:
SQL = “INSERT INTO cadastro(Nome, Endereço, Telefone)”
SQL = SQL & ” VALUES (”
SQL = SQL & ” ‘” & Me.txtNome.Value & “‘”
SQL = SQL & “, ‘” & Me.txtApelido.Value & “‘”
SQL = SQL & “, ‘” & Me.txtEndereco.Value & “‘”
SQL = SQL & ” )”
Até aí tudo bem, funciona perfeitamente mas se possível eu gostaria de usar assim:
SQL = “INSERT INTO cadastro”
SQL = SQL & ” VALUES (”
SQL = SQL & ” ‘” & Me.txtNome.Value & “‘”
SQL = SQL & “, ‘” & Me.txtApelido.Value & “‘”
SQL = SQL & “, ‘” & Me.txtEndereco.Value & “‘”
SQL = SQL & ” )”
Conforme vc fez no exemplo CADASTRO AUTORES
Eu já vi na internet algumas instruções que dizem que assim tambem funciona mas eu não consegui fazer funcionar, o que estou fazendo de errado?
Antes fique se indagando pq eu quero complicar a guerra, eu explico: eu tenho diversos formularios que vão criar tabela com mais de 50 colunas, se eu tiver que escrever o nome de cada coluna, vou levar muito tempo fazendo isso.
Queria usar um comando tipo o SELECT, SQL = “SELECT * FROM cadastro”.
O mestre tem alguma ideia?
Estou usando o Office 2013 32Bits.
Boa tarde Fábio !! Sou estudando de Sistemas para Internet e estamos vendo agora comandos do MySql !! Gostaria de saber se tem como inserir registros em duas tabelas ao mesmo tempo ?? Obrigado pelo seus conhecimentos compartilhados !! Que Deus te abençoe sempre !!
Olá Marcel! Sua questão é tão interessante que resolvi escrever um post para explicar como realizar tal tarefa – dê uma olhada aqui:
http://www.bosontreinamentos.com.br/mysql/como-inserir-dados-em-duas-tabelas-ao-mesmo-tempo-no-mysql/
Obrigado e abraço!
Olá Fábio.
Estou com problema com Trigger no MariaDB, quero criar uma Trigger de log que toda vez que for alterado uma coluna de uma tabela, ela grave em uma tabela de log uma chave, tipo(alteração ou Deleção) , nome da tabela, campo, dado alterado e dado novo.
Eu criei essa trigger mas não esta funcionando!!!
DELIMITER //
create trigger TBU_sam_dados2
before update on sam_dados
for each row
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE x, o, n VARCHAR(50) ;
DECLARE cur1 CURSOR FOR SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ‘cohab’ AND TABLE_NAME = ‘sam_dados’;
DECLARE cur2 CURSOR FOR SELECT concat(‘old.’, COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ‘cohab’ AND TABLE_NAME = ‘sam_dados’;
DECLARE cur3 CURSOR FOR SELECT concat(‘new.’, COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ‘cohab’ AND TABLE_NAME = ‘sam_dados’;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
OPEN cur2;
OPEN cur3;
read_loop: LOOP
FETCH cur1 INTO x ;
FETCH cur2 INTO o ;
FETCH cur3 INTO n ;
IF done THEN
LEAVE read_loop;
END IF;
SET @o := o ;
SET @n := n ;
if @o != @n then
Insert into logs.sam_logs(cod, tipooperacao, tabela, campo, alterado, alteracao, data, hora, login)
values( old.cpf, ‘U’, ‘sam_dados’,x , @o , @n, sysdate(),curtime() ,user());
end if;
END LOOP;
CLOSE cur1;
CLOSE cur2;
CLOSE cur3;
END; //
DELIMITER ;
Deste de já agradeço muito pela sua atenção
Alex Wilson Krutzfeldt.
alexkrutzfeldt@gmail.com
Fone : (19) 99109-4156