Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% acharam este documento útil (0 voto)
38 visualizações41 páginas

Programação e Desenvolvimento de Banco de Dados

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1/ 41

Programação e

Desenvolvimento
de Banco de Dados
Manipulação de dados e estruturas

Prof. Dr. Gilberto Fernandes Jr.


• Unidade de Ensino: 2

• Competência da Unidade: Conhecer e compreender a


criação e manipulação de tabelas.

• Resumo: Saber elaborar script SQL inserção e


manutenção de dados, alteração e exclusão de tabelas e
constraints.

• Palavras-chave: SQL, manipulação de dados, constraints

• Título da Teleaula: Manipulação de dados e estruturas

• Teleaula nº: 2
Contextualização
• Comandos utilizados na manipulação de bancos de
dados
• Alteração de tabelas e constraints
• Exclusão de tabelas em banco de dados
Comandos para
manipulação de
bancos de dados:
SELECT, INSERT,
UPDATE e DELETE
Introdução
• Linguagem de manipulação de dados (DML)
• inserir, atualizar, excluir ou modificar dados
• Principais instruções
• Cláusulas condicionais
A cláusula SELECT
• Consulta SQL e o resultado é uma tabela
• Cláusula WHERE
• AND, OR, NOT, <, <=, >, >=, = e <>
• Cláusula FROM
• Especifica uma ou mais tabelas

SELECT * FROM convidado;

SELECT * FROM convidado WHERE nome LIKE ‘A%’;


Instrução de Inserção (INSERT)
• Permite adicionar novas linhas ou registro numa tabela
existente.

INSERT INTO nome_tabela (col1, col2) VALUES(15, 2);

INSERT INTO nome_tabela (col1, col2) VALUES(15, 2),(1,3);

• Inserir múltiplas linhas

INSERT INTO nome_tabela (a,b,c)


VALUES(1,2,3),(4,5,6),(7,8,9);
Instrução de Inserção (INSERT)
Exemplo: considere a tabela a seguir

CREATE TABLE IF NOT EXISTS convidado (


id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50) NOT NULL DEFAULT '',
nascimento DATE,
estudante ENUM('Não', 'Sim') NOT NULL DEFAULT 'Não'
);
INSERT INTO CONVIDADO (nome, nascimento, estudante)
VALUES ('Dani Moura', '1979-03-28', 'Sim');
Resultado:

Fonte: livro texto

INSERT INTO CONVIDADO (nome, nascimento, estudante)


VALUES ('Rui Albuquerque', null , 'Sim');

Resultado:

Fonte: livro texto


Instrução de Atualização (UPDATE)
• UPDATE: atualiza colunas de linhas existentes na
tabela nomeada com novos valores.
• SET: indica quais colunas modificar e os valores que
devem ser fornecidos.

UPDATE convidado
SET estudante = 'Sim'
WHERE nome = 'Lebrencio Grulher'
AND nascimento = '08-Jul-1990';
Instrução de Atualização (UPDATE)
• WHERE: condições que identificam quais linhas
devem ser atualizadas
UPDATE convidado SET estudante = 'Não';
• ORDER BY e LIMIT:

UPDATE convidado
SET estudante = 'Sim'
WHERE nascimento < '08-Jul-1990’
LIMIT 10
ORDER BY nome;
Instrução de Atualização (UPDATE)
• UPDATE pode ser usado para várias tabelas ao mesmo
tempo
• Não pode utilizar ORDER BY e LIMIT, neste caso

UPDATE lista, produto SET lista.preco = produto.preco


WHERE lista.id = produto.id;
Instrução de Exclusão (DELETE)
• Instrução DML que exclui linhas de uma tabela.
• Uso semelhante à UPDATE.
• Sua sintaxe geral é dada por:

DELETE FROM nome_tabela


[WHERE condição]
[ORDER BY ...]
[LIMIT quantidade_linhas]
Instrução de Exclusão (DELETE)
• Exemplos:

DELETE FROM convidados


WHERE estudante = 'Sim'
ORDER BY nome
LIMIT 10;

DELETE FROM log_usuario


WHERE usuario = ‘rm’
ORDER BY datahora_acao LIMIT 1;
Alteração de tabelas
Alteração de tabelas (ALTER TABLE)
• Comando que altera a estrutura de uma tabela
• Adicionar ou excluir colunas
• Criar ou destruir índices
• Renomear colunas, ou a própria tabela
• Alterar o mecanismo de armazenamento

ALTER TABLE nome_tabela


[especificação_alteração
[,especificação_alteração]
...]
Alteração de tabelas (ALTER TABLE)
• A sintaxe para as alterações é semelhante às cláusulas
da instrução CREATE TABLE.
• Alguns comandos de especificação_alteração:

ADD [COLUMN] (nome_coluna definição_coluna,...)


CHANGE [COLUMN] nome_antigo nome_novo definição_coluna
DROP [COLUMN] nome_coluna
RENAME COLUMN antigo_nome_coluna TO novo_nome_coluna
Alteração de tabelas (ALTER TABLE)
• Múltiplas cláusulas ADD, ALTER, DROP e CHANGE são
permitidas em uma única instrução ALTER TABLE,
separadas por vírgulas

ALTER TABLE cliente DROP COLUMN parentesco,


DROP COLUMN telefones;

• Outros exemplos:

ALTER TABLE cliente AUTO_INCREMENT = 13;

ALTER TABLE pessoas CHARACTER SET = latin1;


Adicionando e excluindo colunas (ADD e DROP)
• ADD: adicionar novas colunas a uma tabela
• DROP: remover colunas existentes
• FIRST ou AFTER nome_coluna: adicionar uma coluna
a uma posição específica dentro de uma linha da
tabela. O padrão é na última linha.
Renomeando, redefinindo e reordenando colunas
• As cláusulas CHANGE, MODIFY, RENAME COLUMN e
ALTER permitem que os nomes e definições de colunas
existentes sejam alterados. Exemplos:

ALTER TABLE pessoas CHANGE antigo novo BIGINT


NOT NULL;

ALTER TABLE pessoas MODIFY nome INT NOT NULL;

ALTER TABLE pessoas RENAME COLUMN novo TO antigo;


Usando restrições (constraints)

CREATE TABLE pessoa (


id int NOT NULL PRIMARY KEY,
nome varchar(255) NOT NULL,
sobrenome varchar(255),
idade int );

ALTER TABLE pessoa


DROP PRIMARY KEY;

ALTER TABLE pessoa


ADD CONSTRAINT PK_pessoa PRIMARY KEY (id, sobrenome);
Usando restrições (constraints)
• Sintaxe para definição de restrição de chave
estrangeira com CREATE TABLE ou ALTER TABLE
ALTER TABLE nome_tabela
ADD [CONSTRAINT [símbolo]] FOREIGN KEY
[index_nome] (index_col_nome, ...)
REFERENCES nome_tabela (index_col_nome,...)
[ON DELETE referências]
[ON UPDATE referências]

referências:
RESTRICT | CASCADE | SET NULL | NO ACTION
Usando restrições (constraints)
• Regras para nomear um índice de chave estrangeira:
• Se definido, o valor do símbolo CONSTRAINT é usado.
Caso contrário, o valor do index_nome FOREIGN KEY é
usado.
• Se nenhum símbolo CONSTRAINT ou FOREIGN KEY
index_nome estiverem definidos, o nome do índice de
chave estrangeira será gerado usando o nome da coluna
de chave estrangeira de referência.
Usando restrições (constraints)
• Integridade referencial:

CREATE TABLE pai ( CREATE TABLE filha (


id INT NOT NULL, id INT PRIMARY KEY,
nome VARCHAR(50), parente_id INT,
PRIMARY KEY (id) nome VARCHAR(50)
); );

ALTER TABLE filha


ADD CONSTRAINT FK_parente
FOREIGN KEY (parente_id) REFERENCES pai(id);
Qualificadores
• São utilizados com as cláusulas ON UPDATE e ON
DELETE
• CASCADE: qualificador que exclui ou atualiza a linha da
tabela pai e exclui ou atualiza automaticamente as
linhas correspondentes na tabela filha.
• SET NULL: exclui ou atualiza a linha da tabela pai e
define como NULL a coluna ou colunas de chave
estrangeira na tabela filha.
• RESTRICT: rejeita a operação de exclusão ou
atualização da tabela pai.
Qualificadores
• Para excluir uma restrição, podemos executar a
instrução abaixo, em que a chave criada é mantida
após esta execução, assim somente a restrição será
excluída.

ALTER TABLE filha DROP FOREIGN KEY FK_parente;


Testando a estrutura
do banco de dados
Guia Turístico
Resolução de Situação-Problema
• Você está trabalhando em uma multinacional, no
desenvolvimento de um sistema de Guia Turístico, e
está na etapa de manipulação de banco de dados.
• Sua tarefa é inserir os dados no banco criado
pela equipe anterior
• O que você deve inserir:
• Países (com respectivos continentes): Brasil, Índia,
China e Japão;
• Estados (com respectivas siglas): Maranhão, São Paulo,
Santa Catarina, Rio de Janeiro;
• Cidades (com respectivas populações aproximadas):
Sorocaba, Déli, Xangaim Tóquio;
• Pontos turísticos (com sua especificação: Quinzinho
de Barros (Instituição), Parque Estadual do Jalapão
(Atrativo),Torre Eiffel (Atrativo), Fogo de Chão
(Restaurante).
• Em seguida, teste a estrutura do banco realizando as
seguintes alterações:
• Alterar para “Atrativo” o primeiro ponto turístico
• Alterar o segundo país (Índia) para ter o código “IND”
• Deletar a primeira cidade

• Avalie a estrutura do banco, verificando se tudo


ocorreu corretamente!
Resolução de Situação-Problema
• Em seguida, surgiram alguns questionamentos sobre o
sistema:
• Como identificar as língua(s) nativas dos países?
• Há alterações que devem ser feitas na estrutura do
banco de dados, nas tabelas e no DER?

• Realize estas alterações:


• Criação de uma nova tabela (linguagemPais)
• Definição da integridade referencial entre ela e a tabela
país
Exclusão de tabelas
em banco de dados
Introdução
• Manutenção de dados (incluir, alterar e excluir)
• Respeitar estrutura (restrições)
• A restrição FOREIGN KEY é usada para impedir ações
que destruam links entre tabelas
Fonte: livro texto
Fonte: livro texto

Fonte: livro texto


Outras operações
• DROP TABLE: remover uma ou mais tabelas

DROP TABLE [IF EXISTS] nome_tabela [, nome_tabela] ...

• Exclusão com restrição de chave estrangeira:

ALTER TABLE nota DROP FOREIGN KEY nota_ibfk_1;

DROP TABLE IF EXISTS aluno;


Outras operações
• TRUNCATE TABLE: instrução para esvaziar uma
tabela completamente

TRUNCATE [TABLE] nome_tabela;

• Instruir o MySQL a “respeitar” as restrições


Padrão
SET FOREIGN_KEY_CHECKS = 1;
do MySQL
• Instruir o MySQL a “ignorar” as restrições
SET FOREIGN_KEY_CHECKS = 0;
Resolução de Situação-Problema
• Você está trabalhando no desenvolvimento de um
guia turístico em sua empresa.
• Você já tem um banco de dados com uma estrutura
pronta, relacionamentos criados, chaves e restrições
definidas
• No entanto, após o inicio de um projeto, pode haver a
necessidade de revisão
• Incluir/excluir estruturas!
Resolução de Situação-Problema
• Você deve incluir um sistema de coordenadas!
• Alterar tabela de Elementos Turísticos,
adicionando campos latitude e longitude (coordenadas).
• Alterar a tabela “Países”, adicionando uma nota de 0
a 10 com o nível de interesse para o turista
• Alterar tabela “Cidades”, incluindo uma lista com os
três melhores restaurantes.
• Após isso, não teremos a necessidade de manter a
tabela coordenadas e você poderá excluí-la.
Recapitulando
Recapitulando
• Comandos utilizados na manipulação de bancos de
dados
• SELECT, INSERT, UPDATE, DELETE
• Alteração de tabelas e constraints
• ALTER TABLE, ADD, DROP, CHANGE, MODIFY
• Exclusão de tabelas em banco de dados
• DROP TABLE, TRUNCATE TABLE

Você também pode gostar