sql minicurso - parte ii - dml

Post on 11-Feb-2017

536 Views

Category:

Data & Analytics

0 Downloads

Preview:

Click to see full reader

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

top related