1 of 21

[IF559] BANCO DE DADOS 1

Alterações de/nas Tabelas

Prof. Ismael César

ismael.cesar@ufpe.br

Material adaptado do Prof. Nicolas Melo

2 of 21

SQL - DDL

(Data Definition Language)

3 of 21

SQL - DDL

Alterações de um esquema

  • Eventualmente será necessário alterar o tipo de um atributo ou excluí-lo, ou ainda pode ser necessário que uma tabela seja excluída.
  • Para tanto há cláusulas que são utilizadas para este fim

4 of 21

SQL - DDL

Alterações de um esquema - DROP

  • O comando DROP pode ser usado para remover elementos nomeados do esquema, como tabelas, domínios ou restrições.
  • Também é possível remover um database por completo através do comando DROP DATABASE. Ex: para excluir um banco de dados chamado LIVRARIA, digitamos

DROP DATABASE LIVRARIA;

  • Através do DROP também podemos excluir uma tabela. Ex: excluir a tabela LIVRO do bd LIVRARIA:

DROP TABLE LIVRO;

5 of 21

SQL - DDL

Alterações de um esquema - TRUNCATE e DELETE

  • Imagine agora que se deseja “limpar” a tabela LIVRO e não excluí-la. Para realizar a atividade descrita utiliza-se o comando TRUNCATE:

TRUNCATE TABLE LIVRO;

  • Se o objetivo é excluir linhas conforme algum critério, utiliza-se o DELETE:

DELETE FROM LIVRO WHERE num_pag > 100;

6 of 21

SQL - DDL

Alterações de um esquema - ALTER

  • Para realizar alterações no esquema, como tabelas e restrições, utiliza-se o comando ALTER
    • ADD: para adicionar
    • DROP: para deletar
  • Ex1: para incluir um atributo que mantém as tarefas dos funcionários na relação FUNCIONARIO do esquema EMPRESA, podemos usar o comando:

ALTER TABLE EMPRESA.FUNCIONARIO ADD COLUMN Tarefa VARCHAR ( 12 );

  • Se nenhuma cláusula DEFAULT for especificada, os valores no novo atributo serão NULL para todas as tuplas. Logo, não é possível utilizar a restrição NOT NULL, neste caso.

7 of 21

SQL - DDL

Alterações de um esquema - ALTER

  • Ex2: para remover o atributo Endereco da tabela FUNCIONARIO utilizamos o comando:

ALTER TABLE EMPRESA.FUNCIONARIO DROP COLUMN Endereco CASCADE;

  • A opção CASCADE faz com que todas as restrições de referência à coluna “Endereco” também sejam excluídas.

8 of 21

SQL - DDL

Alterações de um esquema - ALTER

  • Também é possível alterar definições de atributos. Ex:

ALTER TABLE EMPRESA.DEPARTAMENTO ALTER COLUMN Cpf_gerente DROP DEFAULT;

ALTER TABLE EMPRESA.DEPARTAMENTO ALTER COLUMN Cpf_gerente SET DEFAULT ‘33344555587’;

9 of 21

SQL - DDL

Alterações de um esquema - ALTER

  • Podemos também alterar restrições. Ex:

ALTER TABLE EMPRESA.FUNCIONARIO MODIFY Minicial VARCHAR(3) NOT NULL;

10 of 21

SQL - DML

(Data Manipulation Language)

11 of 21

SQL - DML

  • A DML é composta por três comandos, que podem ser utilizados para modificar o estado de um banco de dados:
    • INSERT
    • UPDATE
    • DELETE
  • LEMBRETE: alguns autores consideram a instrução SELECT como parte dos comandos da DML. Nós abordaremos este comando como pertencente à classe DQL

12 of 21

SQL - DML

Inserir dados em tabelas - INSERT

  • Com o comando INSERT INTO podemos inserir:
    • Dados na mesma ordem de criação dos atributos na tabela
    • Dados, informando em quais atributos eles serão inseridos
    • Múltiplas linhas em uma tabela

13 of 21

Criação da tabela FUNCIONARIO

,

14 of 21

SQL - DML

Inserir dados em tabelas - INSERT

  • Inserindo dados na mesma ordem de criação dos atributos na tabela:

INSERT INTO FUNCIONARIO

VALUES ('João', 'C', 'Silva',

'12345688910',

TO_DATE('15/03/2000','dd/mm/yyyy'),

'Rua Jiquiá, 00, Recife, PE',

'M',

35000,

'12457896524',

4);

15 of 21

SQL - DML

Inserir dados em tabelas - INSERT

  • Inserindo dados informando em quais atributos eles serão inseridos:

INSERT INTO FUNCIONARIO (Pnome, Unome, Cpf, Cpf_supervisor)

VALUES ('João', 'Silva',

'12345688910',

'12457896524');

16 of 21

SQL - DML

Inserir dados em tabelas - INSERT

  • Inserindo múltiplas linhas em uma tabela… Imagine que nós queremos criar uma tabela para armazenar todas as datas de nascimentos dos funcionários:

CREATE TABLE ANIVERSARIO (niver DATE);

INSERT INTO ANIVERSARIO (

SELECT Datanasc FROM FUNCIONARIO);

  • OBS: se um novo funcionário for inserido ou algum deles for alterado, a tabela ANIVERSARIO ficará desatualizada.

17 of 21

SQL - DML

Inserir dados em tabelas - INSERT

  • Inserindo múltiplas linhas em uma tabela… Imagine que o objetivo agora é criar uma tabela para armazenar todos os nomes e as respectivas datas de nascimentos dos funcionários:

CREATE TABLE NOME_ANIVERSARIO (nome_func VARCHAR(30), niver DATE);

INSERT INTO NOME_ANIVERSARIO (

SELECT Pnome, Datanasc FROM FUNCIONARIO);

18 of 21

SQL - DML

Atualizar dados em tabelas - UPDATE

  • Para atualizar dados de uma tabela utilizamos o comando UPDATE
  • Para especificar quais atributos serão atualizados utilizamos o SET
  • Caso queiramos verificar algum critério nas tuplas a serem atualizadas utilizamos a cláusula WHERE.
  • Podemos realizar operações matemáticas para atualizar valores de atributos numéricos

19 of 21

SQL - DML

Atualizar dados em tabelas - UPDATE

/*Altera todos os valores da coluna niver*/

UPDATE ANIVERSARIO SET niver = '31-mar-2001';

/*Altera todos os valores da coluna niver, daquelas tuplas aquele atributo é nulo*/

UPDATE NOME_ANIVERSARIO SET niver = '31-mar-2001' WHERE niver IS NULL;

/*Conceder aumento de 10% aos funcionários do departamento 5*/

UPDATE FUNCIONARIO SET Salario = Salario*1.1 WHERE Dnr=5;

20 of 21

SQL - DML

Deletar dados de tabelas - DELETE

  • O comando DELETE é utilizado para remover tuplas das relações.
  • Utiliza-se a cláusula WHERE para indicar o critério a ser analisado para que uma tupla seja excluída

21 of 21

SQL - DML

Deletar dados de tabelas - DELETE

/*Remove todas as tuplas da tabela*/

DELETE FROM NOME_ANIVERSARIO;

/*Remove todas as tuplas da tabela que possuem o atributo nome_func igual a João*/

DELETE FROM NOME_ANIVERSARIO WHERE nome_func='João';