sql minicurso - parte ii - dml

15
Minicurso de SQL Parte II: DML Prof. José Augusto Cintra htttp :// www.josecintra.com/blog Revisão 1 - Julho/2014

Upload: jose-augusto-cintra

Post on 11-Feb-2017

536 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: SQL Minicurso - Parte II - DML

Minicurso de SQL

Parte II: DML

Prof. José Augusto Cintra

htttp://www.josecintra.com/blog

Revisão 1 - Julho/2014

Page 2: SQL Minicurso - Parte II - DML

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.

Page 3: SQL Minicurso - Parte II - DML

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

Page 4: SQL Minicurso - Parte II - DML

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.

Page 5: SQL Minicurso - Parte II - DML

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

Page 6: SQL Minicurso - Parte II - DML

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.

Page 7: SQL Minicurso - Parte II - DML

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.

Page 8: SQL Minicurso - Parte II - DML

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.

Page 9: SQL Minicurso - Parte II - DML

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.

Page 10: SQL Minicurso - Parte II - DML

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)

Page 11: SQL Minicurso - Parte II - DML

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.

Page 12: SQL Minicurso - Parte II - DML

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

Page 13: SQL Minicurso - Parte II - DML

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

Page 14: SQL Minicurso - Parte II - DML

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

Page 15: SQL Minicurso - Parte II - DML

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