Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Documentos relacionados
Banco de Dados I Introdução SQL

A linguagem SQL

Banco de Dados. Professora: Luciana Faria

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Tabelas. Banco de Dados I MySQL

BCD29008 Banco de dados

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Manipulação de Dados com SQL

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Subsistema de Integridade Semântica

A linguagem SQL

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

Bancos (Bases) de Dados

MySql. Introdução a MySQL. Andréa Garcia Trindade

Introdução ao Modelo Relacional

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Modelo Relacional Prof. Msc Denival A. dos Santos

Introdução ao PostgreSQL

SQL Básica. Andre Noel

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

SQL Linguagem de Definição de Dados

Subsistema de Integridade Semântica

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

INTRODUÇÃO AO MODELO RELACIONAL

Revisão de Bancos de Dados

Teste Exemplo Revisão da tentativa 1

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL (Tópicos) Structured Query Language

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Múltiplas Tabelas. Disciplina de Banco de Dados

Linguagem de Consulta Estruturada (SQL)

Linguagem SQL Restrições, Triggers e Views

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

ACH2025. Aula 11. Visões. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

MODELO RELACIONAL Prof.: Jacson Tiola Técnico em Redes de Computadores

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Restrições de Integridade Semântica

Linguagem de Definição de Dados (DDL)

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

Banco de Dados. Linguagem SQL

Utilizando o Postgres - comandos SQL para a manipulação de dados

SQL-99: Esquema de BD EMPRESA

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Linguagem SQL (Parte II)

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

SQL. Autor: Renata Viegas

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

ACH2025. Laboratóriode Bases de Dados. SQL Oracle Asserçõese gatilhos. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

Revisão Banco de Dados

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

A linguagem SQL

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Comandos de Manipulação

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

Rápida revisão do Modelo Relacional

BANCO DE DADOS PARA NINJAS

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

BANCO DE DADOS GERENCIAL 1 A U L A 2

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

PSI Linguagem de Definição de dados. Módulo 15

Instrução Create Table

Professor Leonardo Larback

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

IMPLEMENTAÇÃO DE BANCO DE DADOS

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

mod._1_teoria_sistemas de bancos de dados.doc

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Bases de Dados. DDL Data Definition Language

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

SIG: Sistemas de Informações Geográficas. Adaptado de Gilberto Câmara

Introdução ao Banco de Dados. Banco de Dados

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Transcrição:

Pedro F. Carvalho OCP Oracle 2008.2 10g SQL Avançado Atualização e Inserção de Dados

Comando INSERT Sumário Inclusão simples, inclusão de dados com SELECT Comando UPDATE Alteração simples, alteração usando subquery Comando DELETE Eliminação simples, eliminação utilizando subquery Comando TRUNCATE TABE Remoção de todos os registros de uma tabela

Comando Insert Propósito O comando INSERT inclui um registro no final de uma tabela de acordo com os valores especificados Sintaxe INSERT INTO <tabela> [<lista de campos>] VALUES <lista de valores> Argumentos <tabela>: especifica a tabela na qual o registro será incluído <lista de campos>: especifica os campos da tabela cujos valores serão inseridos

Comando Insert Argumentos (cont.) VALUES <lista de valores>: especifica os valores (correspondentes aos respectivos campos) a serem inseridos na tabela

Comando Insert Exemplo: Inserir na Tabela Cliente os seguintes valores: codigo = 7, nome = Claudia Melo, tipo = PF, endereco = R. Macapá, 33, Bessa, cidade = 1, cep = 58000-00, fone = 3246-9522 Insert Into Cliente (codigo, nome, tipo, endereco, cidade, cep, fone) Values (7, Claudia Melo', 'PF', R. Macapá, 33, Bessa', 1', 58000-00', 3246-9522')

Incluindo dados com Select Propósito Inserir dados em uma tabela tendo como valores o resultado de um SELECT Sintaxe INSERT INTO <tabela para insercao> SELECT <lista de campos> FROM <tabela para consulta> [WHERE, GROUP BY, ORDER BY, etc.] Observações As colunas resultantes do SELECT têm que casar com os tipos dos dados das colunas da cláusula INTO Não se usa o VALUES no INSERT (neste caso)

Incluindo dados com Select CREATE TABLE tabela1( ) coluna1 int IDENTITY, coluna2 varchar(40) NULL, coluna3 char(1) NULL, coluna4 varchar(30) NULL INSERT INTO tabela1 SELECT nome, sexo, endereco FROM funcionario WHERE estcivil <> 'C'

DROP TABLE tabela1 Incluindo dados com Select CREATE TABLE tabela1 ( pedido smallint, cliente varchar(40) NULL, vendedor varchar(40) NULL, CONSTRAINT PK_tabela PRIMARY KEY (pedido), ) INSERT INTO tabela1 SELECT p.código, c.nome, f.nome FROM pedido p, cliente c, funcionario f WHERE c.código = p.cliente and f.codigo = p.vendedor

Comando Update Propósito O comando UPDATE altera os valores armazenados no(s) registro(s) de uma tabela Sintaxe UPDATE <tabela> SET <coluna1=valor1 [,coluna2=valor2,, coluna_n=valor_n]> [WHERE <condição >] Argumentos <tabela>: especifica a tabela na qual o(s) registro(s) será(ão) alterados SET <coluna1=valor1[,coluna2=valor2, ]>: Especifica as colunas a serem alteradas e seus novos valores

Argumentos (cont.) Alteração Simples WHERE <condição>: especifica as condições que precisam ser satisfeitas pelos registros que terão seus valores atualizados Exemplo: Aumente o salário dos funcionários casados em 25% UPDATE funcionario SET salario = salario*1.25 WHERE estcivil = C

Alteração Simples Exemplo: Dar um aumento de 15% no salário dos funcionários homens, casados ou divorciados, e que tenham nascido entre 01/01/50 e 31/12/70. UPDATE funcionario SET salario=salario*1.15 WHERE sexo= M AND estcivil IN ( C, D ) AND datanasc BETWEEN 1950-01-01 AND 1970-12-31

Alteração utilizando subquery Exemplo: Fornecer um aumento de 18% no salário dos funcionários que tenham o salário menor que a média de salários da empresa. UPDATE funcionario SET salario=salario*1.18 WHERE salario < (SELECT AVG(salario) FROM funcionario)

Alteração utilizando subquery Exemplo: Baixar o preço em 12% dos produtos com preço de venda igual ao do produto mais caro vendido na empresa. UPDATE produto SET venda=venda*0.88 WHERE venda = (SELECT MAX(venda) FROM produto)

Alteração utilizando subquery Exemplo: Alterar de todos os funcionários a função Vendedor' para Auxiliar de Caixa'. UPDATE funcionario SET funcao = (SELECT codigo FROM funcao WHERE nome = Auxiliar de Caixa ) WHERE funcao = (SELECT codigo FROM funcao WHERE nome = Vendedor )

Comando Delete Propósito O comando DELETE elimina registros de uma tabela de acordo com a condição especificada. Sintaxe DELETE FROM <tabela> [WHERE <condição >] Argumentos <tabela>: especifica a tabela na qual o(s) registro(s)será(ão) excluídos WHERE <condição>: especifica as condições que precisam ser satisfeitas para a remoção dos registros

Remoção Simples Exemplo: Remova todos os registros da tabela usuario. DELETE FROM usuario Exemplo: Excluir todos os clientes do tipo pessoa física que não possuam telefone DELETE FROM cliente WHERE tipo= PF and fone is null

Remoção usando subquery Exemplo: Excluir todos os funcionários que tenham salário maior que a média de salário da empresa. DELETE FROM funcionario WHERE salario > (SELECT AVG(salario) FROM funcionario)

Remoção usando subquery Exemplo: Excluir todos os pedidos dos clientes dos estados da Paraíba e Pernambuco. DELETE FROM pedido WHERE cliente = (SELECT codigo FROM cliente WHERE cidade IN (SELECT codigo FROM cidade WHERE uf IN ( PB, PE )))

Comando TRUNCATE TABLE Propósito Comando usado para excluir todas as linhas de uma tabela Sintaxe TRUNCATE TABLE <tabela> Características Semelhante ao DELETE FROM sem o WHERE Quase sempre é mais rápido que o DELETE, especialmente em tabelas grandes TRUNCATE TABLE não salva informações no Log de Transações

Regras de Integridade

Introdução As regras de integridade fornecem a garantia que mudanças feitas no BD não resultem em perda da consistência dos dados Restrições impostas aos dados

Introdução Em BD I: CREATE TABLE dvd ( cod_d int not null identity, titulo varchar(40) not null, genero varchar(15), duracao time, situacao varchar(12) default ( Disponível ), PRIMARY KEY (cod_d), CHECK (situacao in ( Alugada, Disponível )) )

Introdução Para assegurar que os dados do BD estão válidos precisa-se formalizar verificações (check) e regras de negócio que os dados devem aderir. Esta forma de assegurar consistência é conhecida como restrições de integridade (integrity constraints).

Introdução Restrição de Integridade Finalidade é fornecer um meio de assegurar que as mudanças feitas no BD, por usuários autorizados, não levam à perda de consistência dos dados.

Integridade Questão: Como garantir Integridade do BD? Solução 1: Inserir as restrições de integridade no código da aplicação Problemas: Sobrecarrega o programador, pois ele precisa codificar todas as validações Susceptível a erros pode-se esquecer de fazer uma validação => BD inconsistente Difícil manutenção => Se RI mudar, então precisa mudar todas as aplicações que validam àquela RI

Integridade Solução 2: Inserir as Regras de Integridade no próprio BD, através do subsistema do SGBD.

Importante: Regras de Integridade As regras são compiladas e armazenadas no dicionário de dados

Vantagens: Regras de Integridade Validação é tratada pelo SGBD, ao invés de ser feita nas aplicações individuais; Melhor entendimento e manutenção devido à atualização das regras no catálogo Deve existir um meio de atualizar regras com o sistema funcionando Pode-se utilizar linguagem de consulta para as RI s

Modelo Relacional Integridade nos BDs Relacionais 1. Integridade de Domínio Os valores de uma coluna (atributo) devem estar dentro do conjunto de valores possíveis do domínio 2. Integridade de Vazio Define se o valor de uma coluna pode ser nulo ou não. obs: nulo não é zero nem branco.

Modelagem Relacional 3. Integridade de Entidade Os valores de uma chave primária não podem ser nulos 4. Integridade Referencial (chave estrangeira) Integridade Referencial define que os valores de uma coluna pertencente a uma chave estrangeira (FK) devem existir na chave primária da tabela referenciada.

Restrições de Domínio Restrições de domínio são as mais elementares formas de restrição de integridade São facilmente verificadas pelo sistema, sempre que um novo item de dados é incorporado ao BD

Restrições de Domínio A cláusula check permite modos poderosos de restrições de domínio Ela permite ao projetista do esquema determinar um predicado que deva ser satisfeito por qualquer valor designado a uma variável cujo tipo seja o domínio

Integridade Referencial Garantir que um valor que aparece em uma relação para um dado conjunto de atributos também apareça para um certo conjunto de atributos de outra relação Feitos por meio de chaves primárias e estrangeiras

Integridade Referencial create table cliente (cpf_cliente char(20) not null nome_cliente char(20), rua_cliente char(30), cidade_cliente char(30), primary key (cpf_cliente))

Integridade Referencial create table conta (numero_conta char(10) not null nome_agencia char(20), saldo integer, primary key (numero_conta), foreign key (nome_agencia) references agencia, check (saldo >= 0))

Integridade Referencial create table depositante (nome_cliente char(20) not null numero_conta char(10), primary key (nome_cliente, numero_conta), foreign key (nome_cliente) references cliente, foreign key (numero_conta) references conta)

Visões em SQL

Sumário Visões Sintaxe Exemplos Vantagens e Desvantagens

Visão Definição Um meio de fornecer ao usuário um modelo de dados personalizado Uma visão pode esconder dados que um determinado usuário não precisa ver Vantagens Restringir quais colunas de uma tabela podem ser acessadas (leitura/modificação) Podem conter valores calculados ou valores de resumo

Benefícios diretos Visão Simplificar o uso do sistema É permitido ao usuário restringir a atenção aos dados de interesse Segurança O usuário só acessa os dados que forem prédeterminados

Visão Como definimos uma visão? Definição de um SELECT que faz uma consulta sobre as tabelas A visão aparece no esquema de dados como se fosse uma tabela

Visão Sintaxe de criação CREATE VIEW <nome da visao> AS ( <instrução SELECT> )

Visão Considere as tabelas abaixo: Empréstimo numemp Agencia Valor E170 Tambaú 1.500,00 E200 Cristo 2.800,00 Nome_Cliente Devedor Num_empres João E170 Carol E155

Exemplo 1: Visão Um usuário precisa da agência e nome de todos os clientes que têm um empréstimo em cada agência. Este usuário não está autorizado a ver informações específicas aos empréstimos dos clientes.

Visão CREATE VIEW cliente_emprestimo AS (SELECT e.agencia, d.nome_cliente FROM devedor d, emprestimo e WHERE e.numemp = d.num_empres) Na consulta a visão: SELECT *FROM cliente_emprestimo

Visão Exemplo 2: Crie uma visão que forneça o nome do usuário e a quantidade de mensagens que o mesmo recebeu. CREATE VIEW estatistica_mensagem AS (SELECT r.destinatario Usuario, COUNT(*) QuantRecebidas FROM mensagem m, recebedor r WHERE m.idmens = r.idmens GROUP BY r.destinatario)