sql minicurso - parte ii - dml
TRANSCRIPT
Minicurso de SQL
Parte II: DML
Prof. José Augusto Cintra
htttp://www.josecintra.com/blog
Revisão 1 - Julho/2014
Apresentação
O objetivo deste minicurso é fornecer conceitos
básicos sobre a SQL, linguagem amplamente
utilizada para manipulação de Bancos de Dados
Relacionais.
Subentende-se que o leitor já possua
conhecimentos prévios sobre Modelagem de
Bancos de Dados eTeoria Relacional.
2
Os exemplos aqui apresentados são compatíveis com os bancos de dadosrelacionais com suporte para a SQL padrão.
Modelo de Dados
Para os exemplos, usaremos o seguinte esquema de dados de finalidade puramente didática, sem
nos preocuparmos com a correção do modelo:
Um funcionário pode estar em um único departamento e um departamento pode possuir
vários funcionários;
Um funcionário pode participar de vários projetos e um projeto pode conter vários
funcionários. A tabela associativa func_proj faz a ligação entre funcionários e projetos;
3
4
Inserções, Alterações e Deleções
Como vimos, a DML engloba os comandos que permitem a manutenção das
informações armazenadas nas tabelas do banco de dados, ou seja, permite realizar a
inserção, alteração e exclusão de dados.
Para testar os comandos, vamos popular as tabelas criadas nos capítulos anteriores e
depois alterar e excluir alguns registros.
5
Comando INSERT
O comando INSERT insere registros nas tabelas, atribuindo conteúdo em seus
campos de acordo com o tipo e tamanho dos dados. Dessa forma, é necessário
conhecer a estrutura da tabela que se deseja manipular.
Sintaxe:
INSERT INTO <tabela> [( <atributo>, ... )] VALUES
( expressão, ... );
Nome da tabela que vai receber o novo registro
Nomes dos campos que receberão os valores
Valores que serão inseridos. A expressão deve ser compatível com o campo respectivo
6
Comando INSERT - Exemplos
INSERT INTO
departamento (cod_depto, desc_depto)
VALUES
(1, ‘COMPRAS’)
Observações:
Neste exemplo, será inserido um novo registro na tabela departamento, sendo
que o campo cod_depto receberá o valor 1 e o campo desc_depto, o valor
‘COMPRAS’ respectivamente.
O campo desc_depto é do tipo texto. Por isso, o valor inserido deve possuir o
delimitador ASPAS SIMPLES. Isso não ocorre para o campo cod_depto, que é
numérico.
Os campos e valores envolvidos devem ser compatíveis quanto ao tipo e tamanho
dos dados. Caso contrário, ocorrerá um erro.
7
Comando INSERT - Exemplos
INSERT INTO
departamento (desc_depto, cod_depto)
VALUES
(‘COMPRAS’, 1)
Observações:
Este exemplo é idêntico ao anterior. A ordem dos campos foi alterada, mas a
correspondência continua a mesma.
8
Comando INSERT - Exemplos
INSERT INTO
departamento
VALUES
(1,‘COMPRAS’)
Observações:
Este exemplo é idêntico ao anterior. Os nomes dos campos foram omitidos, então é
preciso certificar-se do seguinte:
O Sistema fará a correspondência automática entre os valores e os campos na ordem
física. Dessa forma, os valores precisam ser compatíveis.
Todos os campos devem ser informados, exceto os não obrigatórios. Nesse caso,
utilize vírgulas adicionais
Campos que possuem valores default cujos valores não foram informados na inserção,
serão gravados com os valores definidos na estrutura.
Evite essa prática, pois a estrutura das tabelas não é fixa.
9
Comando INSERT - Exemplos
INSERT INTO
funcionario (cod_func, nome_func, data_nasc,cod_depto)
VALUES
(1,‘JOSÉ DA SILVA’,’01/01/1985’,1)
Observações:
Foi utilizado o delimitador de aspas simples para inserir a data de nascimento. Para
campos do tipo DATE, cuidado com o formato utilizado pelo BD.
Os campos sexo_func e salario_func não foram informados. Nesse caso o sistema
fará o seguinte:
O sexo possui default. Será gravado o valor ‘M’
Para o campo salário, sem default, será gravado o valor NULL
Para o campo cod_depto foi gravado o valor 1 que corresponde ao departamento
‘COMPRAS’ na tabela departamento . O sistema sempre fará a checagem da tabela
relacionada, resultando em erro, caso o valor informado não exista.
10
Comando UPDATE
O comando UPDATE altera os dados dos registros nas tabelas, atribuindo o novo
conteúdo em seus campos de acordo com o tipo e tamanho dos dados. Dessa forma,
é necessário conhecer a estrutura da tabela que se deseja manipular.
Sintaxe:
UPDATE <tabela> SET <Atributo> = <expressão>, ...
[ WHERE <Condição> ]
Nome da tabela cujos registros vão ser alterados
Nomes dos campos que vão ser alterados
Novos valores dos camposDetermina quais registros receberão as alterações, de acordo com a condição lógica (filtro)
11
Comando UPDATE - Exemplos
UPDATE funcionario
SET salario = salario * 1.10
Observações:
Este comando irá atualizar o salário de todos os funcionários reajustando-os em
10%.
Como não existe um filtro (WHERE) especificado a atualização será feita em
todos os registros sem distinção.
12
Comando UPDATE - Exemplos
UPDATE funcionario
SET salario = salario * 1.10
WHERE cod_depto = 1
Observações:
Este comando irá atualizar o salário de todos os funcionários do departamento
1, reajustando-os em 10%.
É possível atualizar quantos campos forem necessários, incluindo-os na relação,
como no exemplo abaixo, que atualiza alguns dados apenas para o funcionário de
código = 1.
UPDATE funcionario
SET salario = 5000.50, SEXO = ‘M’
WHERE cod_func = 1
13
Comando DELETE
O comando DELETE é simples e direto. Sua função é excluir registros da tabela de
acordo com uma condição especificada.
Sintaxe:
DELETE FROM <tabela> [WHERE <Condição>]
Tabela da qual queremos excluir os registros
Filtro (condição) especificando quais registros vão ser excluídos
14
Comando DELETE - Exemplo
DELETE FROM projetos
DELETE FROM projetos where cod_proj = 1
Observações:
O primeiro exemplo exclui incondicionalmente todos os registro da tabela de
projetos;
O segundo exemplo excluir apenas o projeto de código = 1;
O sistema irá verificar se existe algum funcionário relacionado ao projeto na
tabela func_proj e, caso exista, ocorrerá um erro, a menos que o
relacionamento tenha sido feito com a opção CASCADE. Isso vale também para
o comando UPDATE
15
FIM
Referências
www.inf.pucrs.br/~danielc/bda/SQL1.ppt
www.dsc.ufcg.edu.br/~baptista/cursos/BDadosI/Capitulo4.ppt
https://en.wikipedia.org/wiki/SQL
Para obter materiais complementares, consulte o blog em:
http://www.josecintra.com/blog