SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Banco de Dados II (2010/2)
Mariane Souza
(mariane@bcc.unifal-mg.edu.br)
REVISÃO SQL – Parte I
Modelo Relacional empresa
SQL (Structured-Query Language)
 Linguagem para manipulação de banco de dados em um SGBD;
 Início dos anos 70 nos laboratórios da IBM:
 Necessidade de uma linguagem mais amigável que álgebra relacional;
 Inclui operações de:
 Definição/exclusão/alteração de tabelas e esquemas
 Create/Drop table/schema.
 Definição de restrições de integridade
 On delete/update set null, on delete/update cascade, primary key,
foreing key...
SQL (Structured-Query Language)
 ...
 Manipulação de dados
 Select/Insert/Update/Delete
 Definição de visões
 Create/Drop view
 Controle de transações
 Commit, roolback...
 Autorização de usuários
 Grant...
Criação/exclusão de esquemas
 Cria um esquema para definição de tabelas:
 CREATE SCHEMA empresa
 Cria um esquema indicando a quem ele pertence:
 CREATE SCHEMA empresa AUTHORIZATION mariane
 Exclusão de um esquema criado no SGBD:
 Possui dois tipos (CASCADE e RESTRICT)
 DROP SCHEMA empresa CASCADE
 DROP SCHEMA empresa
 O esquema será excluído mesmo se houver elementos dentro dele;
 DROP SCHEMA empresa RESTRICT
 O esquema só será excluído se não tiver elementos;
Criação de tabelas
 O comando CREATE TABLE é utilizado na criação de uma
tabela:
 CREATE TABLE nometabela (
campo1 tipocampo1 restricao1 restricao2…,
campo2 tipocampo2 restricao1 restricao2…,
….
PRIMARY KEY (campochavedestatabela),
FOREIGN KEY(chaveestrangeira1) REFERENCES
tabela(campochave))
Criação de tabelas
 Criação de uma tabela em um dado esquema, com
restrições:
 CREATE TABLE empregado (
ssn int(10) NOT NULL AUTO_INCREMENT,
pnome varchar(45),
datanasc datetime,
sexo enum('M','F'),
salario double,
superssn int(10),
dnumero int(10),
PRIMARY KEY (ssn),
FOREIGN KEY(superssn) REFERENCES empregado(ssn),
FOREIGN KEY(dnumero) REFERENCES departamento (dnumero))
Criação de tabelas
 Criação de uma tabela em um dado esquema, com
restrições:
 CREATE TABLE empregado (
ssn int(10) NOT NULL PRIMARY KEY,
pnome varchar(45),
datanasc datetime,
sexo enum('M','F'),
salario double DEFAULT NULL,
superssn int(10),
dnumero int(10),
UNIQUE (pnome),
FOREIGN KEY(superssn) REFERENCES empregado(ssn),
FOREIGN KEY(dnumero) REFERENCES departamento (dnumero))
Criação de tabelas
 Especificando restrições com CONSTRAINT e ações referenciais
engatilhadas:
 CREATE TABLE empregado (
…
CONSTRAINT chaveestrangeirasuper
FOREIGN KEY (superssn) REFERENCES empregado(ssn)
ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT chaveestrangeiradep
FOREIGN KEY (dnumero) REFERENCES empregado(dnumero)
ON DELETE SET DEFAULT ON UPDATE CASCADE)
opcional
Exclusão de tabelas
 Exclui uma tabela em um esquema:
 DROP TABLE empresa CASCADE
 DROP TABLE empresa
 Exclui uma tabela em um esquema desde que ela não esteja sendo
referenciada em nenhuma restrição de chave estrangeira ou visões
 DROP TABLE empresa RESTRICT
 Exclui apenas os registros, mantém a tabela vazia.
 DELETE FROM empresa
Alteração de tabelas
 A estrutura da tabela pode mudar utilizando o comando ALTER
para vários tipos de mudança:
 ALTER TABLE nomedatabela ALTERACAO
 ALTER TABLE empregado ADD funcao varchar(12)
 ALTER TABLE empregado DROP endereco CASCADE
 ALTER TABLE empregado DROP funcao RESTRICT
 ALTER TABLE empregado ALTER salario SET DEFAULT=2000,00
 ALTER TABLE empregado ADD CONSTRAINT x ..... (definição da
constraint)
 ALTER TABLE empregado DROP CONSTRAINT x CASCADE
obrigatório
Inserção de tuplas em tabelas
 O comando INSERT pode ser utilizado para adicionar uma única tupla à
tabela. Existem duas formas:
 Informando todos os campos desejados diretamente:
 INSERT INTO nometabela (campo1, campo2, ...) VALUES (valor1, valor2, ...)
 INSERT INTO empregado (ssn, pnome, minicial, unome, datanasc, salario)
VALUES (123456789, ‘Marcia', ‘S.', ‘Garcia','1983-08-15', 30000)
 Utilizado quando não se deseja inserir informação em todos os campos
da tabela;
 Os campos desejados devem ser explicitados; Os demais serão definidos
com o seu valor default;
Inserção de tuplas em tabelas
 Informando apenas os valores:
 INSERT INTO nometabela VALUES (valor1, valor2, ..., valor n)
 INSERT INTO empregado VALUES (123456789, ‘Marcia', ‘S.',
‘Garcia', '1983-08-15', ‘F’, 30000, 98765, 2)
 Utilizado para inserir informações completas;
 Neste caso os campos não precisarão ser mencionados, mas os valores
deverão estar na ordem especificada na tabela;
Inserção de tuplas em tabelas
 É possível adicionar diversas tuplas de uma só vez
em uma tabela:
 Os atributos de cada uma serão definidos entre parênteses;
 Depois dos parênteses deve-se separar usando vírgula;
 INSERT INTO empregado (pnome, minicial,unome)
VALUES (‘Marcio', ‘M.', ‘Rezende'), (‘Mario', ‘L.',
‘Figueira')
Inserção de tuplas em tabelas
 Podemos ainda inserir tuplas resultantes de uma consulta utilizando o
comando INSERT
 Suponha que desejo criar uma tabela para armazenar o número de
empregados de cada departamento;
 CREATE TABLE info_emp (
nome_dep varchar(15)
numero_emp int(10));
INSERT INTO info_emp (nome_dep, numero_emp)
SELECT dnome, count(*) FROM departamento, empregado WHERE
departamento.dnumero = empregado.dnumero GROUP BY dnome;
 Esta tabela pode ser mantida apenas com restrições ON UPDATE
CASCADE?
 Não. A manutenção desta tabela pode ser feita criando uma view (visão).
Inserção de tuplas em tabelas
 É importante frisar que o controle de permitir ou não que um dado
INSERT possa ser efetivado no banco pode depender:
 Do SGBD: caso ele implemente restrições de integridade
 Do programador: caso contrário
 Ex: Se o SGBD implementa NOT NULL, ele não irá permitir que um
comando INSERT seja efetivado com um dado campo sem nenhum valor.
 Caso contrário, o programador não deverá permitir que um campo, em um
formulário por exemplo, possa ser nulo, ou neste caso terá que passar um
valor default para o banco;
Atualização de tuplas em tabelas
 A atualização de valores de atributos de uma tupla é
feita utilizando o comando UDPATE:
 UPDATE nometabela SET atributo1 = novovalor1,
atributo 2 = novovalor2 ... WHERE condicao
 Deseja-se alterar o nome do departamento número 2 para
DCC. :
 UPDATE departamento SET dnome = ‘DCC’ WHERE dnumero
= 2;
Atualização de tuplas em tabelas
 Um único comando UDPATE pode alterar valores de várias
tuplas;
 Suponha que se deseja aumentar o salário de todos os empregados da
do departamento ‘Exatas’ em 10%.
 UPDATE empregado SET salario = salario*1.1 WHERE dnumero IN
(SELECT dnumero FROM departamento WHERE dnome = ‘Exatas’)
 Neste caso, várias tuplas (referente a cada empregado que trabalha no
departamento ‘Exatas’) serão atualizadas em um só comando
UPDATE;
Atualização de tuplas em tabelas
 Caso sejam definidas ações engatilhadas do tipo ON
UPDATE CASCADE as atualizações poderão ser propagadas
para outras tabelas;
 Suponha a definição da seguinte ação engatilhada na restrição
de chave estrangeira na tabela empregado:
 CONSTRAINT chaveestrangeiradep
FOREIGN KEY (dnumero) REFERENCES
empregado(dnumero)
ON DELETE SET NULL ON UPDATE CASCADE
Atualização de tuplas em tabelas
 Neste caso, com a seguinte atualização da tabela
departamento:
 UPDATE departamento SET dnumero = 2 WHERE
dnumero = 5
 O que acontece?
 Todas as tuplas na tabela empregado que tiverem
relacionadas com o departamento 5 terão seus valores do
campo ‘dnumero’ atualizados para 2;
Remoção de tuplas em tabelas
 A remoção de tuplas de uma tabela é feita através do
comando DELETE:
 DELETE FROM nometabela WHERE condicao
 O número de tuplas deletadas depende das condições definidas
na cláusula WHERE.
 Caso a cláusula WHERE não seja colocada, todas as tuplas da
tabela mencionada serão deletadas!
 Entretanto, a tabela continuará no banco de dados (somente
DROP exclui uma tabela).
Remoção de tuplas em tabelas
 Suponha que se deseja remover todos os empregados que
ganhem mais de 40.000 reais na empresa;
 DELETE FROM empregado WHERE empregado.salario > 40.000;
 Suponha que se deseja excluir todos os empregados do
departamento ‘Solos’;
 DELETE FROM empregado WHERE empregado.dnumero IN
(SELECT dnumero FROM departamento WHERE
departamento.dnome = ‘Solos’)
Remoção de tuplas em tabelas
 Da mesma forma que acontece com UPDATE:
 Caso sejam definidas ações engatilhadas do tipo ON DELETE
CASCADE as exclusões poderão ser propagadas em outras tabelas;
 Suponha a definição da seguinte ação engatilhada na restrição
de chave estrangeira na tabela dependente:
 CONSTRAINT chaveestrangeiraemp
FOREIGN KEY (essn) REFERENCES empregado(ssn)
ON DELETE CASCADE ON UPDATE CASCADE
Remoção de tuplas em tabelas
 Neste caso, com a seguinte exclusão na tabela
empregado:

DELETE FROM empregado WHERE ssn = 12345678;
 Todas as tuplas na tabela dependente que tiverem
relacionadas com o empregado cujo ssn é
‘12345678’ serão deletadas;
Próxima aula
 Revisão SQL – parte II
 Consultas básicas e complexas

Mais conteúdo relacionado

Semelhante a Revisao_SQL_Parte_I.ppt

Semelhante a Revisao_SQL_Parte_I.ppt (20)

Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Aula 300309
Aula 300309Aula 300309
Aula 300309
 
12 SQL - Junções / Join
12 SQL - Junções / Join12 SQL - Junções / Join
12 SQL - Junções / Join
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1
 
Aula7 sql basico_6por_pag
Aula7 sql basico_6por_pagAula7 sql basico_6por_pag
Aula7 sql basico_6por_pag
 
Sql junções
Sql junçõesSql junções
Sql junções
 
Aula 250309
Aula 250309Aula 250309
Aula 250309
 
BD I - Aula 15 A - Comandos DML
BD I - Aula 15 A - Comandos DMLBD I - Aula 15 A - Comandos DML
BD I - Aula 15 A - Comandos DML
 
Apostila - Banco de Dados
Apostila - Banco de DadosApostila - Banco de Dados
Apostila - Banco de Dados
 
Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Aula 7 sql - select
Aula 7   sql - selectAula 7   sql - select
Aula 7 sql - select
 
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub SelectsBD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
 
Banco II - PostgreSQL - Filtros
Banco II - PostgreSQL - FiltrosBanco II - PostgreSQL - Filtros
Banco II - PostgreSQL - Filtros
 
Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018
 
BD I - Aula 15 C - Manutencao de tabelas
BD I - Aula 15 C - Manutencao de tabelasBD I - Aula 15 C - Manutencao de tabelas
BD I - Aula 15 C - Manutencao de tabelas
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1
 

Revisao_SQL_Parte_I.ppt

  • 1. Banco de Dados II (2010/2) Mariane Souza (mariane@bcc.unifal-mg.edu.br) REVISÃO SQL – Parte I
  • 3. SQL (Structured-Query Language)  Linguagem para manipulação de banco de dados em um SGBD;  Início dos anos 70 nos laboratórios da IBM:  Necessidade de uma linguagem mais amigável que álgebra relacional;  Inclui operações de:  Definição/exclusão/alteração de tabelas e esquemas  Create/Drop table/schema.  Definição de restrições de integridade  On delete/update set null, on delete/update cascade, primary key, foreing key...
  • 4. SQL (Structured-Query Language)  ...  Manipulação de dados  Select/Insert/Update/Delete  Definição de visões  Create/Drop view  Controle de transações  Commit, roolback...  Autorização de usuários  Grant...
  • 5. Criação/exclusão de esquemas  Cria um esquema para definição de tabelas:  CREATE SCHEMA empresa  Cria um esquema indicando a quem ele pertence:  CREATE SCHEMA empresa AUTHORIZATION mariane  Exclusão de um esquema criado no SGBD:  Possui dois tipos (CASCADE e RESTRICT)  DROP SCHEMA empresa CASCADE  DROP SCHEMA empresa  O esquema será excluído mesmo se houver elementos dentro dele;  DROP SCHEMA empresa RESTRICT  O esquema só será excluído se não tiver elementos;
  • 6. Criação de tabelas  O comando CREATE TABLE é utilizado na criação de uma tabela:  CREATE TABLE nometabela ( campo1 tipocampo1 restricao1 restricao2…, campo2 tipocampo2 restricao1 restricao2…, …. PRIMARY KEY (campochavedestatabela), FOREIGN KEY(chaveestrangeira1) REFERENCES tabela(campochave))
  • 7. Criação de tabelas  Criação de uma tabela em um dado esquema, com restrições:  CREATE TABLE empregado ( ssn int(10) NOT NULL AUTO_INCREMENT, pnome varchar(45), datanasc datetime, sexo enum('M','F'), salario double, superssn int(10), dnumero int(10), PRIMARY KEY (ssn), FOREIGN KEY(superssn) REFERENCES empregado(ssn), FOREIGN KEY(dnumero) REFERENCES departamento (dnumero))
  • 8. Criação de tabelas  Criação de uma tabela em um dado esquema, com restrições:  CREATE TABLE empregado ( ssn int(10) NOT NULL PRIMARY KEY, pnome varchar(45), datanasc datetime, sexo enum('M','F'), salario double DEFAULT NULL, superssn int(10), dnumero int(10), UNIQUE (pnome), FOREIGN KEY(superssn) REFERENCES empregado(ssn), FOREIGN KEY(dnumero) REFERENCES departamento (dnumero))
  • 9. Criação de tabelas  Especificando restrições com CONSTRAINT e ações referenciais engatilhadas:  CREATE TABLE empregado ( … CONSTRAINT chaveestrangeirasuper FOREIGN KEY (superssn) REFERENCES empregado(ssn) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT chaveestrangeiradep FOREIGN KEY (dnumero) REFERENCES empregado(dnumero) ON DELETE SET DEFAULT ON UPDATE CASCADE) opcional
  • 10. Exclusão de tabelas  Exclui uma tabela em um esquema:  DROP TABLE empresa CASCADE  DROP TABLE empresa  Exclui uma tabela em um esquema desde que ela não esteja sendo referenciada em nenhuma restrição de chave estrangeira ou visões  DROP TABLE empresa RESTRICT  Exclui apenas os registros, mantém a tabela vazia.  DELETE FROM empresa
  • 11. Alteração de tabelas  A estrutura da tabela pode mudar utilizando o comando ALTER para vários tipos de mudança:  ALTER TABLE nomedatabela ALTERACAO  ALTER TABLE empregado ADD funcao varchar(12)  ALTER TABLE empregado DROP endereco CASCADE  ALTER TABLE empregado DROP funcao RESTRICT  ALTER TABLE empregado ALTER salario SET DEFAULT=2000,00  ALTER TABLE empregado ADD CONSTRAINT x ..... (definição da constraint)  ALTER TABLE empregado DROP CONSTRAINT x CASCADE obrigatório
  • 12. Inserção de tuplas em tabelas  O comando INSERT pode ser utilizado para adicionar uma única tupla à tabela. Existem duas formas:  Informando todos os campos desejados diretamente:  INSERT INTO nometabela (campo1, campo2, ...) VALUES (valor1, valor2, ...)  INSERT INTO empregado (ssn, pnome, minicial, unome, datanasc, salario) VALUES (123456789, ‘Marcia', ‘S.', ‘Garcia','1983-08-15', 30000)  Utilizado quando não se deseja inserir informação em todos os campos da tabela;  Os campos desejados devem ser explicitados; Os demais serão definidos com o seu valor default;
  • 13. Inserção de tuplas em tabelas  Informando apenas os valores:  INSERT INTO nometabela VALUES (valor1, valor2, ..., valor n)  INSERT INTO empregado VALUES (123456789, ‘Marcia', ‘S.', ‘Garcia', '1983-08-15', ‘F’, 30000, 98765, 2)  Utilizado para inserir informações completas;  Neste caso os campos não precisarão ser mencionados, mas os valores deverão estar na ordem especificada na tabela;
  • 14. Inserção de tuplas em tabelas  É possível adicionar diversas tuplas de uma só vez em uma tabela:  Os atributos de cada uma serão definidos entre parênteses;  Depois dos parênteses deve-se separar usando vírgula;  INSERT INTO empregado (pnome, minicial,unome) VALUES (‘Marcio', ‘M.', ‘Rezende'), (‘Mario', ‘L.', ‘Figueira')
  • 15. Inserção de tuplas em tabelas  Podemos ainda inserir tuplas resultantes de uma consulta utilizando o comando INSERT  Suponha que desejo criar uma tabela para armazenar o número de empregados de cada departamento;  CREATE TABLE info_emp ( nome_dep varchar(15) numero_emp int(10)); INSERT INTO info_emp (nome_dep, numero_emp) SELECT dnome, count(*) FROM departamento, empregado WHERE departamento.dnumero = empregado.dnumero GROUP BY dnome;  Esta tabela pode ser mantida apenas com restrições ON UPDATE CASCADE?  Não. A manutenção desta tabela pode ser feita criando uma view (visão).
  • 16. Inserção de tuplas em tabelas  É importante frisar que o controle de permitir ou não que um dado INSERT possa ser efetivado no banco pode depender:  Do SGBD: caso ele implemente restrições de integridade  Do programador: caso contrário  Ex: Se o SGBD implementa NOT NULL, ele não irá permitir que um comando INSERT seja efetivado com um dado campo sem nenhum valor.  Caso contrário, o programador não deverá permitir que um campo, em um formulário por exemplo, possa ser nulo, ou neste caso terá que passar um valor default para o banco;
  • 17. Atualização de tuplas em tabelas  A atualização de valores de atributos de uma tupla é feita utilizando o comando UDPATE:  UPDATE nometabela SET atributo1 = novovalor1, atributo 2 = novovalor2 ... WHERE condicao  Deseja-se alterar o nome do departamento número 2 para DCC. :  UPDATE departamento SET dnome = ‘DCC’ WHERE dnumero = 2;
  • 18. Atualização de tuplas em tabelas  Um único comando UDPATE pode alterar valores de várias tuplas;  Suponha que se deseja aumentar o salário de todos os empregados da do departamento ‘Exatas’ em 10%.  UPDATE empregado SET salario = salario*1.1 WHERE dnumero IN (SELECT dnumero FROM departamento WHERE dnome = ‘Exatas’)  Neste caso, várias tuplas (referente a cada empregado que trabalha no departamento ‘Exatas’) serão atualizadas em um só comando UPDATE;
  • 19. Atualização de tuplas em tabelas  Caso sejam definidas ações engatilhadas do tipo ON UPDATE CASCADE as atualizações poderão ser propagadas para outras tabelas;  Suponha a definição da seguinte ação engatilhada na restrição de chave estrangeira na tabela empregado:  CONSTRAINT chaveestrangeiradep FOREIGN KEY (dnumero) REFERENCES empregado(dnumero) ON DELETE SET NULL ON UPDATE CASCADE
  • 20. Atualização de tuplas em tabelas  Neste caso, com a seguinte atualização da tabela departamento:  UPDATE departamento SET dnumero = 2 WHERE dnumero = 5  O que acontece?  Todas as tuplas na tabela empregado que tiverem relacionadas com o departamento 5 terão seus valores do campo ‘dnumero’ atualizados para 2;
  • 21. Remoção de tuplas em tabelas  A remoção de tuplas de uma tabela é feita através do comando DELETE:  DELETE FROM nometabela WHERE condicao  O número de tuplas deletadas depende das condições definidas na cláusula WHERE.  Caso a cláusula WHERE não seja colocada, todas as tuplas da tabela mencionada serão deletadas!  Entretanto, a tabela continuará no banco de dados (somente DROP exclui uma tabela).
  • 22. Remoção de tuplas em tabelas  Suponha que se deseja remover todos os empregados que ganhem mais de 40.000 reais na empresa;  DELETE FROM empregado WHERE empregado.salario > 40.000;  Suponha que se deseja excluir todos os empregados do departamento ‘Solos’;  DELETE FROM empregado WHERE empregado.dnumero IN (SELECT dnumero FROM departamento WHERE departamento.dnome = ‘Solos’)
  • 23. Remoção de tuplas em tabelas  Da mesma forma que acontece com UPDATE:  Caso sejam definidas ações engatilhadas do tipo ON DELETE CASCADE as exclusões poderão ser propagadas em outras tabelas;  Suponha a definição da seguinte ação engatilhada na restrição de chave estrangeira na tabela dependente:  CONSTRAINT chaveestrangeiraemp FOREIGN KEY (essn) REFERENCES empregado(ssn) ON DELETE CASCADE ON UPDATE CASCADE
  • 24. Remoção de tuplas em tabelas  Neste caso, com a seguinte exclusão na tabela empregado:  DELETE FROM empregado WHERE ssn = 12345678;  Todas as tuplas na tabela dependente que tiverem relacionadas com o empregado cujo ssn é ‘12345678’ serão deletadas;
  • 25. Próxima aula  Revisão SQL – parte II  Consultas básicas e complexas