Baixe o app para aproveitar ainda mais
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
Compartilhar