No tutorial anterior criamos uma nova tabela em nossa base de dados, agora é hora de praticarmos o insert nesta nova tabela. E também no tutorial anterior, além de criarmos um novo campo para adicionarmos telefone, trabalhamos um pouco do conceito de carnalidades. Modelo ER – Entidade Relacionamento para ser mais específico, trabalhamos diretamente com o tipo de relacionamento um para muitos (1:N).
O relacionamento 1:N significa que uma entidade pode se relacionar com várias ocorrências de outra entidade. Por exemplo, uma pessoa pode estar relacionada a vários números de telefone, mas um número de telefone só pode estar relacionado a apenas uma pessoa.
Porém, para que na prática este relacionamento fosse possível implementamos uma regra de restrição criando um ID UNIQUE na tabela “userposjava”. Isto é, um campo único, que não se repete. E então críamos uma chave estrangeira (foreign key) na tabela “telefoneuser”, trata-se de um campo que faz referência a um campo que é chave primária na tabela “userposjava”. E para criar a forense key, utilizamos a seguinte query.
alter table telefoneuser add foreign key (usuariopessoa) references userposjava (id)
E agora, depois de criada a nova tabela, adicionado uma chave estrangeira, criado uma sequência automática no campo id, iremos, com dissemos praticar o insert. Iremos inserir dados na tabela “telefoneuser”.
DELETANDO DADOS DE UMA TABELA
Vamos deletar todos os dados da tabela “userposjava”, assim, poderemos começar a povoar a tabela novamente, mas, do zero. Para apagar todas as linhas da tabela utilize a seguinte query.
DELETE FROM userposjava.
Mas suponhamos que você deseje eliminar registros que atendam a determinada condição, neste caso, utiliza-se o WHERE, por exemplo:
DELETE FROM Clientes
WHERE id=5;
Uma vez deletado todos os dados, só poderemos inserir um número de telefone se tivermos algum registro na tabela “userposjava”. A tabela “userposjava” pode ser considerada neste caso a tabela pai.
INSERT NA TABELA PAI
Uma forma simples de abrirmos o QUERY EDITOR para inserir um novo registro, é clicando com o botão direito na tabela “userposjava”, escolha Scripts >> Insert Script. Ao fazermos isso, ele já abre o Query Editor com uma máscara para apenas inserirmos os dados.
Mas atente-se para o fato de que o nosso id está sendo gerado de forma automática, dessa forma, remova da máscara toda referência ao id. Insira alguns registros na tabela para que possamos na sequência trabalhar com a tabela “telefoneuser”.
INSERT INTO public.userposjava(nome, email)
VALUES('José Maria', 'josemaria@gmail.com');
INSERT NA TABELA FILHA
Agora sim podemos inserir dados na tabela filha. Da mesma forma clique com o botão direito na tabela “telefoneuser”, escolha Scripts >> Insert Script. Aqui também exclua qualquer referência ao id.
Lembrando que ‘número’ e ‘tipo’ são dados do tipo character, assim, devem estar entre aspas simples. E o campo “usuariopessoa” é a referência ao id do registro que desejamos “atualizar” na tabela userposjava.
INSERT INTO public.telefoneuser(numero, tipo, usuariopessoa)
VALUES('(45)9 98821-2355','CEL',10);
Iremos inserir dois números de telefone para o mesmo registro, mudaremos apenas o número para fazer distinção entre um e outro. Mas caso queira altere também o tipo de telefone, enfim, você pode colocar TEL ou RES de residência, fica a sua escolha.
CONSULTANDO UM REGISTRO
Insira quantos números de telefones desejar para os dois usuários, pratique adicionando mais usuários e atribuindo números de telefones a eles.
Mas aí você deseja consultar quais números de telefones estão associados ao registro 11 da tabela, como fazer? Você irá selecionar na tabela que deseja consultar, a tabela telefoneuser os registros quando o usuariopessoa for o id 11.
SELECT * FROM telefoneuser WHERE usuariopessoa = 11;
Lembra que “usuariopessoa” é a foreign key que faz referência ao id da tabela “userposjava”? Então agora a consulta começa a concatenar as tabelas.
EM POUCAS PALAVRAS
Neste tutorial aprendemos a trabalhar com o INSERT em linguagem SQL pura, e retomamos alguns conceitos importantes que nos ajudaram a compreender o que foi feito. Espero que tenham compreendido, eu fico por aqui, nos vemos no próximo tutorial.