Buscar

#12 Conteúdo SQL Comandos DML (INSERT, UPDATE e DELETE) (Conteúdo)2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 1 de 7 
1. Comandos DML: 
 
1.1. INSERT 
O comando INSERT é utilizado para se inserir novos registros em uma tabela. Pode-se inserir: 
 
o Um ou mais registros especificados diretamente no parâmetro valores_inserção (vide sintaxe do comando), 
ou; 
o Zero ou mais linhas obtidas como resultado de uma instrução de consulta (vide comando SELECT). 
 
Para poder utilizar esse comando, o usuário/programador deverá possuir as seguintes permissões: 
 
o Permissão para executar o comando INSERT na tabela para que se possa inserir novos registros, e; 
o Permissão para executar o comando SELECT (vide comando SELECT) para que se possa utilizar o parâmetro 
consulta ou para a utilização da cláusula RETURNING. 
 
1.1.1. SINTAXE 
INSERT INTO nome_tabela [ ( nome_campo [, ...] ) ] 
 { valores_inserção | consulta } 
 [ RETURNING * | expressão_de_retorno [ AS nome_retorno ] [, ...] ]; 
 
O parâmetro nome_tabela especifica o nome da tabela que irá receber os novos registros. 
 
O parâmetro nome_campo é utilizado para especificar os campos que irão receber os novos registros. Devemos 
observar que não há uma ordem especifica quando se informa os nomes dos campos, porém ao não ser informado 
os campos, o comando INSERT assumirá que serão informados os valores de todos os campos da tabela na 
ordem em foram declaradas na sua criação. 
 
Os campos ausentes no parâmetro nome_campo serão preenchidos com o seu valor padrão (vide cláusula 
DEFAULT no comando CREATE TABLE). Caso não haja um valor definido no parâmetro expressão_padrão na 
cláusula DEFAULT do comando CREATE TABLE, o campo será preenchido com o valor nulo (null). 
 
O parâmetro valores_inserção é utilizado para especificar os valores a serem recebidos pelos campos. A 
ordem de especificação dos valores deverá seguir a ordem dos campos informados no parâmetro nome_campo. 
 
Caso o tipo do dado informado no parâmetro valores_inserção não for do mesmo tipo do seu campo correlato 
informado no parâmetro nome_campo o SGBD irá tentar fazer uma conversão automática de tipo, que se não 
bem-sucedida deverão ser utilizadas funções de conversões de dados (essas funções serão estudadas nas 
próximas aulas). 
 
Utiliza-se o parâmetro consulta quando se deseja que os campos informados no parâmetro nome_campo sejam 
preenchidos com o resultado de uma consulta realizada ao banco de dados (vide comando SELECT). 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 2 de 7 
A cláusula RETURNING é utilizada para se obter um valor de retorno dado pelo comando INSERT. Quando 
informado o parâmetro *, o comando irá exibir os valores inseridos na tabela, ou pode-se informar uma lista 
personalizada de valores especificada em expressão_de_retorno. 
 
1.1.2. EXEMPLOS 
Tomando por base o banco de dados criado na aula anterior e analisando a tabela seguir, vamos ver como fazer 
para inserirmos os dados em suas respectivas tabelas. 
 
 
 
Vemos no modelo a seguir que a tabela docentes_disciplinas possui chaves estrangeiras, ou seja, para que essa 
tabela possa possuir algum registro primeiramente devemos ter dados inseridos nas tabelas cujas chaves primárias 
se relacionam a ela. 
 
 
Vemos assim que primeiramente devemos inserir dados nas tabelas docentes, disciplinas e cursos. 
 
Extraindo os valores da tabela de dados, podemos montar os comandos a seguir, iniciando pela tabela docentes: 
 
INSERT INTO docentes (matricula, nome) VALUES (12345, 'Joaquim Manuel'); 
INSERT INTO docentes (matricula, nome) VALUES (67890, 'Tereza Maria'); 
INSERT INTO docentes (matricula, nome) VALUES (65234, 'Sandra Costa'); 
INSERT INTO docentes (matricula, nome) VALUES (95621, 'Felipe Eduardo'); 
 
 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 3 de 7 
Como estamos preenchendo todos os campos, poderíamos omitir a lista de campos informados. Dessa forma os 
comandos poderiam ser escritos dessa forma: 
 
INSERT INTO docentes VALUES (12345, 'Joaquim Manuel'); 
INSERT INTO docentes VALUES (67890, 'Tereza Maria'); 
INSERT INTO docentes VALUES (65234, 'Sandra Costa'); 
INSERT INTO docentes VALUES (95621, 'Felipe Eduardo'); 
 
Outro ponto que devemos observar é que como estamos inserindo os docentes na tabela docentes não precisamos 
repetir os dados de um mesmo docente. 
 
Para a tabela cursos, teremos os comandos a seguir: 
 
INSERT INTO cursos (codigo, nome) VALUES (15111, 'Auxiliar de Escritório'); 
INSERT INTO cursos (codigo, nome) VALUES (15250, 'Auxiliar de Contabilidade'); 
INSERT INTO cursos (codigo, nome) VALUES (15300, 'Auxiliar de Escritório'); 
 
E para a tabela disciplinas iremos usar a seguinte instrução: 
 
INSERT INTO disciplinas (nome, cargahoraria) VALUES ('Lingua Portuguesa', 90) 
 RETURNING codigo; 
 
INSERT INTO disciplinas (nome, cargahoraria) VALUES ('Matemática', 90) 
 RETURNING codigo; 
 
INSERT INTO disciplinas (nome, cargahoraria) VALUES ('Editor de Textos', 60) 
 RETURNING codigo; 
 
INSERT INTO disciplinas (nome, cargahoraria) VALUES ('Sistema Operacional', 120) 
 RETURNING codigo; 
 
Observa-se que ao inserirmos as disciplinas Editor de Textos e Sistema Operacional não informamos a sua carga 
horária. Nesse caso o SGBD irá assumir o valor default do campo (60) definido na sua estrutura. 
 
Um outro ponto a analisar é que não foi informado valor para o campo codigo, pois o mesmo é autoincremento, ou 
seja, quem irá gerar esse valor será o SGBD. Nesse exemplo o SGBD irá retornar 1 para a primeira disciplina, 2 para 
segunda e assim sucessivamente. Cabe ressaltar que iremos obter esses valores através da cláusula RETURNING 
codigo a medida que o comando INSERT é executado. 
 
Outro ponto a se observar é a utilização da cláusula RETURNING para obtermos os códigos das disciplinas, uma vez 
que esse valor será gerado pelo SGBD. Essa informação será utilizada para a inserção dos dados na tabela 
docentes_disciplinas. 
 
 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 4 de 7 
Agora vejamos como inserir os dados na tabela docentes_disciplinas. 
 
Na estrutura da tabela disciplinas_docentes vemos que o campo iddocentes_disciplinas é autoincremento, logo, ele 
não precisa ser informado na passagem dos parâmetros do comando INSERT. 
 
INSERT INTO disciplinas_docentes (periodo, matricula, codigo, codcurso) 
 VALUES ('2016.1', 12345, 1, 15111); 
 
INSERT INTO disciplinas_docentes (periodo, matricula, codigo, codcurso) 
 VALUES ('2016.1', 67890, 2, 15250); 
 
INSERT INTO disciplinas_docentes (periodo, matricula, codigo, codcurso) 
 VALUES ('2016.1', 12345, 1, 15250); 
 
INSERT INTO disciplinas_docentes (periodo, matricula, codigo, codcurso) 
 VALUES ('2016.1', 65234, 3, 15111); 
 
INSERT INTO disciplinas_docentes (periodo, matricula, codigo, codcurso) 
 VALUES ('2016.1', 95621, 4, 15300); 
 
 
 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 5 de 7 
1.2. UPDATEComando utilizado para alterar valores armazenados em uma tabela. Observar que devemos informar na cláusula SET 
apenas os campos que se deseja alterar o valor armazenado. Ao não se informar um campo nesse parâmetro, o valor 
armazenado não será alterado. (vide sintaxe do comando). 
 
Para poder utilizar esse comando, o usuário/programador deverá possuir as seguintes permissões: 
 
o Permissão para executar o comando UPDATE na tabela para que se possa alterar os valores dos registros, e; 
o Permissão para executar o comando SELECT (vide comando SELECT) para que se possa utilizar a cláusula 
RETURNING e/ou para a obtenção de resultados oriundos de uma consulta através do comando SELECT (vide 
comando SELECT). 
 
1.2.1. SINTAXE 
UPDATE nome_tabela 
 SET nome_campo1 = {valor_campo | DEFAULT},..., 
 nome_campon = {valor_campo | DEFAULT} | 
 {(nome_campo [, ...]) = ({ valor_campo | DEFAULT } [, ...]) } 
 [ WHERE condição_alteração ] 
 [ RETURNING * | expressão_de_retorno [ AS nome_de_retorno ]; 
 
O parâmetro nome_tabela especifica o nome da tabela que terá seus dados alterados. 
 
A cláusula SET é utilizada para definir os campos a serem alterados. Os campos são informados através do 
parâmetro nome_campo. 
 
A cláusula WHERE é utilizada para especificar uma condição informando quais registros devem ter seus valores 
alterados. A não utilização desse parâmetro implica na alteração dos valores de todos os registros da tabela. 
 
A cláusula RETURNING é utilizada para se visualizar os registros alterados pelo comando UPDATE. Quando 
informado o parâmetro *, o comando irá exibir os valores alterados na tabela, ou pode-se informar uma lista 
personalizada de valores especificada em expressão_de_retorno. 
 
1.2.2. EXEMPLOS 
Analisando os dados inseridos na tabela cursos, observamos que o curso de código 15300 (Auxiliar de Escritório) 
tem o mesmo nome do curso de código 15111. Mas isso foi um erro na hora da digitação. O nome do curso de 
código 15300 era para ser Manutenção de Computadores. 
 
Para essa alteração de dados, iremos utilizar o comando UPDATE, porém iremos informar apenas o campo nome 
para ser alterado. 
 
Vejamos o comando a seguir: 
 
UPDATE cursos SET nome = 'Manutenção de Computadores'; 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 6 de 7 
Vemos que não informamos uma condição de alteração. Da forma como foi informado, todos os registros irão 
sofrer a alteração. Para que isso não ocorra devemos informar uma condição para alterar apenas o registro 
desejado. 
 
Agora vejamos o comando a seguir: 
 
UPDATE cursos SET nome = 'Manutenção de Computadores' WHERE codigo = 15300; 
 
Com a condição especificada na cláusula WHERE, o comando UPDATE irá alterar apenas o curso que possui o 
código 15300. 
 
 
 
 
Curso Técnico Subsequente de Informática para Internet 
 
Disciplina: Banco de Dados 
Professor: Freitas, Charles Cesar Magno de 
Almeida, Everton Fagner Costa de 
 
Página: 7 de 7 
1.3. DELETE 
Esse comando é utilizado para a exclusão de registros de uma tabela. 
 
1.3.1. SINTAXE 
DELETE [ ONLY ] FROM nome_tabela 
 [ USING lista_tabelas_auxiliares ] 
 [ WHERE condição_exclusão ] 
 [ RETURNING * | expressão_de_retorno [ AS nome_de_retorno ] ]; 
 
O parâmetro nome_tabela especifica o nome da tabela cujos registros serão excluídos. 
 
Por default o comando DELETE exclui o registro na tabela e os registros associados nas tabelas dependentes. 
Para que isso não ocorra, deve-se utilizar a cláusula ONLY. 
 
Deve-se utilizar cláusula USING, informando em lista_tabelas_auxiliares, para adicionar a lista de tabelas 
a serem utilizadas pela cláusula WHERE, caso seja necessária a utilização de campos existentes nessas tabelas. 
 
A cláusula WHERE é utilizada para especificar uma condição informando quais registros devem ser excluídos. A 
não utilização desse parâmetro implica na exclusão de todos os registros da tabela. 
 
A cláusula RETURNING é utilizada para se visualizar os registros excluídos pelo comando DELETE. Quando 
informado o parâmetro *, o comando irá exibir os valores excluídos na tabela, ou pode-se informar uma lista 
personalizada de valores especificada em expressão_de_retorno. 
 
1.3.2. EXEMPLOS 
DELETE FROM cursos; 
 
Tenta excluir todos os registros da tabela cursos, porém como há registros relacionados na tabela 
docentes_disciplinas será gerado um erro de violação de integridade referencial. 
 
DELETE FROM docentes_disciplinas WHERE matricula = 12345; 
 
Nesse exemplo iremos apagar os registros da tabela docentes_disciplinas cuja matricula do docente seja igual a 
12345. 
 
 
2. Referências 
• ROB, Peter; CORONEL, Carlos. SISTEMAS DE BANCO DE DADOS: PROJETO, IMPLEMENTAÇÃO E 
GERENCIAMENTO – Tradução da 8ª edição norte-americana. 8ª. ed. [S.l.]: Cengage, 2010. 744 p. 
• http://pgdocptbr.sourceforge.net/pg82/reference.html

Continue navegando