Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Iplementação de banco de dados/Aula_01 imple bd.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 1-Modelo Relacional Conteúdo Programático desta aula Conhecer as principais características de um Sistema de Banco de Dados; Definir modelo de dados; Conceituar Relação; Identificar os componentes do modelo relacional; Conceituar integridade referencial; MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Dados X Informação Dados Informação fatos em sua forma primária Conhecimento produzido MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Importância dos Banco de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS O que é um banco de dados? MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS O que é um banco de dados? conjunto de dados que se relacionam. Propriedades: coleção lógica e coerente de dados com um significado inerente; projetado, construído e populado com dados para um propósito específico; possui um conjunto pré definido de usuários e aplicações; representa algum aspecto do mundo real - “mini-mundo” e qualquer alteração efetuada neste mini-mundo é automaticamente refletida no banco de dados. MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS EVOLUÇÃO DOS SISTEMAS Sistemas Tradicionais Sistemas de Banco de Dados Baseados em Arquivos Baseados em SGBD MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sistemas Tradicionais MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sistemas de Banco de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Benefícios de uso de um SBD Implementação do Conceito de transação Controle de Concorrência Mecanismo de acesso aos dados Mecanismo de recuperação (Tolerância a falhas) Maior Segurança MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados Bancos de Dados Centralizados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados Bancos de Dados Cliente – Servidor (com servidor de Banco de Dados) MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Estrutura Geral de um Sistema de Banco de Dados MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Esquema Esquema é um termo utilizado na área de Banco de Dados com a mesma conotação de modelo (como produto final da atividade de modelagem). O Esquema de um Banco de Dados é a especificação da estrutura do Banco de Dados. De um modo geral se utiliza o termo esquema apenas para os modelos referentes ao aspecto estrutural do mundo real. PESSOA CPF NOME COD_DEP DEPART COD_DEP NOME LOCAL MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Instância É o conjunto de ocorrências dos objetos de dados de um esquema em um dado momento do tempo (Estado do BD num momento do tempo). PESSOA CPF NOME COD_DEP 123 A D-10 456 B D-10 789 C D-20 DEPART COD_DEP NOME LOCAL D-10 DEPART-10 L1 D-20 DEPART-20 L2 D-30 DEPART-30 L3 ESQUEMA INSTÂNCIA MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Arquitetura 3 Esquemas MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeto de Banco de Dados É o processo de: · determinar a organização de um banco de dados, incluindo sua estrutura, conteúdo e aplicações; · desenvolver a estrutura de um banco de dados; · projetar a estrutura lógica e física de um ou mais bancos de dados com a finalidade de acomodar as informações necessárias aos usuários de uma organização, para um definido conjunto de aplicações. MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeto de Banco de Dados Fase 1 – Projeto Conceitual de Banco de Dados: Elaboração de um modelo abstrato do mini mundo – totalmente independente de qualquer tecnologia da informação. MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeto de Banco de Dados Fase 2 – Projeto Lógico de Banco de Dados Elaboração de um modelo implementável durante a qual endereçamos uma classe de tecnologia da informação (Ex: Bancos de Dados Relacionais). ELABORAÇÃO DE UM MODELO IMPLEMENTÁVEL A PARTIR DO MODELO ABSTRATO MODELO ABSTRATO TECNOLOGIA DA INFORMAÇÃO MODELO IMPLEMENTÁVEL CLASSE MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeto de Banco de Dados Fase 3 – Projeto Físico de Banco de Dados Elaboração de um modelo processável, durante a qual endereçamos uma tecnologia da informação específica (Ex: Bancos de Dados Relacional ORACLE versão 11g). ELABORAÇÃO DE UM MODELO PROCESSÁVEL A PARTIR DO MODELO IMPLEMENTÁVEL TECNOLOGIA DA INFORMAÇÃO MODELO PROCESSÁVEL EFETIVA MODELO IMPLEMENTÁVEL MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Ferramentas de Projeto MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo Relacional Foi proposto por Edgar Codd em 1970 Modelo Dominante nos SGBD Comerciais Possui uma extensão denominada Objeto Relacional MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Relação = Tabela MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Atributo = Coluna MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Valores dos Atributos = Domínio MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conjunto de Atributo = Esquema MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Tupla = Linha MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conjunto de Tuplas = Instância MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Campo = Encontro de Linha e Coluna MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conteúdo do Campo = Valor MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Campos sem Conteúdo = Nulo MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Único Integridade de Chave Primária MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Único Integridade de Chave Primária MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Obrigatório Integridade de Entidade MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Obrigatório Integridade de Entidade MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria Simples MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria Composta MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Candidata MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Estrangeira MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Estrangeira -> Integridade Referencial Chave Estrangeira MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Apresentar a Álgebra Relaciona; - Exemplificar as principais operações da Álgebra; Relacional. - Realizar exercícios de Álgebra Relacional. MODELO RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Quais são as PARTES (ATIVIDADES DO PROCESSO) ??? Como elas se RELACIONAM ??? Quais são os seus PRODUTOS ??? ���������������������������������������������������� Quais são as PARTES (ATIVIDADES DO PROCESSO) ??? Como elas se RELACIONAM ??? Quais são os seus PRODUTOS ??? ELABORAÇÃO DE UM MODELO ABSTRATO DO MINI-MUNDO MODELO ABSTRATO PROJETO CONCEITUAL DE DADOS PROJETO LÓGICO DE DADOS PROJETO FÍSICO DE DADOS MODELO ENTIDADE RELACIONAMENTO LINGUAGEM SQL MODELO DE DADOS RELACIONAL REQUISITOS DE INFORMAÇÃO ESQUEMA CONCEITUAL DE DADOS GLOBAL (MODELO ABSTRATO) ESQUEMA LÓGICO DE DADOS (MODELO IMPLEMENTÁVEL) ESQUEMA FÍSICO DE DADOS (MODELO PROCESSÁVEL) DBA Iplementação de banco de dados/Aula_02implementação.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 2- Álgebra Relacional Conteúdo Programático desta aula Conceituar Álgebra Relacional Conhecer as Operações da Álgebra Relacional Utilizar Operadores de Conjunto Escrever expressões utilizando operadores de tabelas Analisar expressões de Álgebra relacional ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Conceitos Envolvidos a) Relação: representada por uma tabela de duas dimensões (linhas e colunas); b) Tupla: corresponde a uma linha da relação; c) Atributo: corresponde às colunas da relação; d) Chave primária: conjunto de atributos que identificam univocamente cada tupla da relação; e) Chave extrangeira: atributo de uma relação que é chave primária de outra relação. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Conceitos Envolvidos ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Manipulação de Dados Duas categorias de linguagens – formais • álgebra relacional e cálculo relacional – comerciais (baseadas nas linguagens formais) • SQL Linguagens formais - Características – orientadas a conjuntos – fechamento • resultados de consultas são relações ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Álgebra Relacional Conjunto de operações sobre modelos relacionais de dados. As principais operações da álgebra relacional são: Seleção Projeção Produto Cartesiano Junção Operações de Conjunto : (União, Intersecção, Diferença) Divisão ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A operação Seleção é utilizada para selecionar um subconjunto de tuplas de uma relação, sendo que estas tuplas devem satisfazer uma condição de seleção. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A forma geral de uma operação Seleção é: <condição de seleção> ( <nome da relação> ) Onde: A letra grega é utilizada para representar a operação de seleção; <condição de seleção> é uma expressão booleana aplicada sobre os atributos da relação ; <nome da relação> é o nome da relação sobre a qual será aplicada a operação Seleção. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10: ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A expressão que atende ao pedido é: id_Depto = 10 (Empregado) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10 e que ganhem salario > 1500. : ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A expressão que atende ao pedido é: id_Depto = 10 E Salario > 1500 (Empregado) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção A operação Projeção seleciona um conjunto determinado de colunas de uma relação. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção A forma geral de uma operação Projeção é: <lista de atributos> (<nome da relação>) Onde: A letra grega é utilizada para representar a operação de seleção <lista de atributos> representa a lista de atributos que o usuário deseja selecionar e <nome da relação> representa a relação sobre a qual a operação projeção será aplicada. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO: ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção A expressão que atende ao pedido é: Id, Nome, Salario (Empregado) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações A Projeção e a Seleção podem ser combinadas, de forma que apenas algumas linhas e algumas colunas retornem na operação. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações A forma geral da operação Projeção : <lista de atributos> (<condição de seleção> (<nome da relação>)) Onde representa a operação de projeção <lista de atributos> representa a lista de atributos que o usuário deseja selecionar representa a operação de seleção <condição de seleção> é a condição que a linha deve atender para ser selecionada e <nome da relação> é o nome da relação sobre a qual será aplicada a operação de Seleção e Projeção ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO PARA OS EMPREGADOS DO DEPARTAMENTO 10: ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações A expressão que atende ao pedido é: Id,Nome, Salario ( Id_Depto = 10 (Empregado)) Realizada em Dois Passos ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações A expressão que atende ao pedido é: Id,Nome, Salario ( Id_Depto = 10 (Empregado)) Passos 1 - Seleção ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações A expressão que atende ao pedido é: Id,Nome, Salario ( Id_Depto = 10 (Empregado)) Passos 2 - Projeção ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações Sempre na ordem Seleção -> Projeção? Id_Depto = 10 ( Id,Nome, Salario (Empregado)) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações Id_Depto = 10 ( Id,Nome, Salario (Empregado)) Projeção não tem todas as colunas utilizadas na seleção ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano A forma geral do Produto Cartesiano é: A X B Onde: X representa a operação de produto cartesiano A e B representam as relações sobre as quais a operação será aplicada. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano - Exemplo Departamento X Região A operação ira justapor as colunas e combinar todas as linhas. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção Atua de forma similar á operação produto cartesiano, porém, a tabela resultante conterá apenas as combinações das tuplas que se relacionam de acordo com uma determinada condição de junção. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção A forma geral de uma operação Seleção é: R ⋈ <condição de junção> S Onde: ⋈ representa a operação de junção; <condição de junção> é uma expressão relacional, normalmente utilizando o operador =, que determina qual coluna da tabela R deve ser comparada com qual coluna da tabela S ( normalmente PK e FK); R e S representam as relações sobre as quais a operação será aplicada. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção - Exemplo Departamento ⋈ Id_Regiao = Id Região ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção - Exemplo Departamento ⋈ Id_Regiao = Id Região A operação ira justapor as colunas e combinar as linhas que se relacionam. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção Exemplo ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto Operações União Interseção Diferença Redundância de Tuplas Compatibilidade quanto a união ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Redundancia de Tupla ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Compatibilidade quanto a União ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS União O resultado desta operação entre duas relações consiste no conjunto de todas as linhas das duas relações . ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS União A forma geral da União é: A U B Onde: U representa a operação de União A e B representam as relações sobre as quais a operação será aplicada. A operação de União é Comutativa -> A U B = B U A ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS União - Exemplo Empregado U Acionista ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS União - Exemplo Empregado U Acionista ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em comum nas duas relações . ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção A forma geral da Interseção é: A ∩ B Onde: ∩ representa a operação de Interseção A e B representam as relações sobre as quais a operação será aplicada. A operação de Interseção é Comutativa -> A ∩ B = B ∩ A ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção - Exemplo Empregado ∩ Acionista ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção - Exemplo Empregado ∩ Acionista ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em uma tabela e não existe na outra . ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença A forma geral da Diferença é: A - B Onde: - representa a operação de Interseção A e B representam as relações sobre as quais a operação será aplicada. A Diferença não é Comutativa -> A - B <> B - A ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença - Exemplo Empregado – Acionista ou Acionista – Empregado ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença - Exemplo – Empregado – Acionista ou Acionista – Empregado ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 1 – T1 = Id,Nome ( Id_Depto = 10 (Empregado)) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 1 – T1 = Id,Nome ( Id_Depto = 10 (Empregado)) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 2 – T2 = Id,Nome ( Salario >= 1500 (Empregado)) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 2 – T2 = Id,Nome ( Salario >= 1500 (Empregado)) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 3 – T1 U T2 ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira relação que se relacionam com todos os elementos da segunda relação. É utilizada para consultas do tipo todos os eleitores que participaram de todas as votações, os sócios que pagaram todas as mensalidades e outras do mesmo tipo. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão A forma geral da Diferença é: A / B Onde: / representa a operação de Interseção A e B representam as relações sobre as quais a operação será aplicada. ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão - Exemplo ID dos Funcionários que Trabalham em todos os Projetos ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão - Exemplo ID dos Funcionários que Trabalham em todos os Projetos ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão – Exemplo – Passo 1 – T1 = Id_Proj (Projeto) ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão – Exemplo – Passo 2 – Funcionario_Projeto / T1 ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Apresentar a Linguagem SQL Instalar e Configurar um SGBD. Criar Tabelas. Manipular Dados ÁLGEBRA RELACIONAL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_03implementacaobd.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 3- Sql Parte 1 Conteúdo Programático desta aula Conhecer a Linguagem SQL Instalar e Configurar um SGBD. Criar Tabelas. Manipular Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Todos o exemplos mostrados em nossas aulas serão feitos no Oracle 10G Express Recomendo que instalem o Oracle na Máquina de vocês e acompanhem a aula Link para download do Oracle: Download Oracle http://www.oracle.com/technetwork/database/express-edition/database10gxe-459378.html LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando Digite o comando: GRANT CONNECT, RESOURCE TO AULABD DEPOIS CLIQUE EM EXECUTAR MENSAGEM DE CONFIRMAÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando CLIQUE PARA FAZER UM NOVO LOGIN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle FAÇA UM NOVO LOGIN COM O USUARIO CRIADO NOME USUÁRIO: AULABD SENHA : SENHA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Linguagem SQL SQL quer dizer Structured Query Language e é o padrão mundial de acesso às bases de dados relacionais. A Linguagem SQL é dividida nas seguintes partes: DDL - Create, Alter, Drop, Rename, Truncate: Permitem a criação e definição de objetos como tabelas, views e outros objetos no banco de dados. DRL -Select: É o comando mais comum do SQL. Utilizado amplamente para recuperação dos dados de uma base. DML - Insert, Delete, Update: Comandos de manipulação dos dados. Usados nas aplicações que mantém a base de informações com inserções, atualizações e deleções de dados. DCL - Grant, Revoke: São utilizados para atribuir ou remover direitos de acesso a objetos do banco de dados e suas estruturas. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS Elementos que Compõem uma Tabela A tabela é a forma básica de armazenamento de informações em um sistema gerenciador de banco de dados relacional e por isso deve conter um conjunto de elementos, alguns opcionais, na sua composição e que são: Nome Colunas Tipos de Dados Restrições (Constraints) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS TIPOS DE DADOS Cada coluna de uma tabela, tem que ter um tipo de dado definido e único, obedecendo a lista de tipos definidos pelo RDBMS. No Oracle existe uma diversidade bastante grande de tipos e alguns são descritos na tabela abaixo: LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS A estrutura básica do comando é de criação de tabela é: CREATE TABLE nome_da_tabela (nome_col1 tipo_col1 [restri_col1] [, nome_col2 tipo_col2 [ restri_col2 ] [, nome_col3 tipo_col3 [restri_col3] ]]... [, restri_tab1 [,restri_tab2] ); LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS Exemplos: CREATE TABLE DEPARTAMENTO ( ID NUMBER(7) PRIMARY KEY, NOME VARCHAR2(40) NOT NULL) CREATE TABLE EMPREGADO ( ID NUMBER(7) PRIMARY KEY, ULT_NOME VARCHAR2(20) NOT NULL, PRIM_NOME VARCHAR2(20) NOT NULL, CARGO VARCHAR2(30), SALARIO NUMBER(7,2), DT_ADMISSAO DATE, CPF CHAR(11) UNIQUE, ID_DEPTO NUMBER(7) REFERENCES DEPARTAMENTO(ID), ID_GERENTE NUMBER(7) REFERENCES EMPREGADO(ID)) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DML Comando Insert O comando INSERT insere linhas em uma tabela. A forma mais simples do comando INSERT insere somente uma linha , dados os valores conforme a sintaxe abaixo: insert into <nome_tabela> (coluna1, coluna2, ..., colunan) values (valor1, valor2, ..., valorn); LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT SEM REFERENCIAR COLUNAS INSERT INTO DEPARTAMENTO VALUES ( 10, ‘Financeiro’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT REFERECIANDO COLUNAS INSERT INTO DEPARTAMENTO (ID,NOME) VALUES ( 20, ‘Vendas’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Conferindo Inserção SELECT * FROM DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DML Comando Update Para alterarmos dados já existentes em nossas tabelas utilizaremos o comando UPDATE. Veja a sintaxe do comando abaixo: UPDATE [schema. ] nome_tabela SET coluna1 = expressão I subquery [, colunan = ... ] WHERE condição LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM DEPARTAMENTO UPDATE SOMAR 100 AO ID DOS DEPARTAMENTOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UPDATE UPDATE DEPARTAMENTO SET ID = ID + 100 Clique executar LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO UPDATE ALTEROU OS ID DOS DEPARTAMENTOS SELECT * FROM DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UPDATE COM CONDIÇÃO UPDATE DEPARTAMENTO SET ID = ID + 1000 WHERE ID = 110 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO UPDATE ALTEROU O ID DE 110 PARA 1110 SELECT * FROM DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DML Comando Delete Para excluirmos linhas em uma tabela utilizamos o comando DELETE. Veja a sintaxe do comando abaixo: DELETE [FROM] [schema.]nome_tabela WHERE condição LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE APAGAR A LINHA DO DEPARTAMENTO DE ID 120 DESMARCAR COMMIT AUTOMATICO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE DELETE DEPARTAMENTO COMMIT DESMARCADO SEM FROM, NO ORACLE FROM É OPCIONAL APAGOU AS 2 LINHAS???? LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE SELECT * FROM DEPARTAMENTO DELETE SEM WHERE APAGA TODAS AS LINHAS E AGORA? LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE ROLLBACK COMMIT DESMARCADO CANCELA A TRANSAÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE VOLTARAM AS LINHAS SELECT * FROM DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE COM WHERE DELETE FROM DEPARTAMENTO WHERE ID = 120 COMMIT DESMARCADO AGORA COM FROM E WHERE SO A LINHA DE ID 120 APAGADA COMO TORNAR A ALTERAÇÃO DEFINITIVA? LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE COMMIT FECHOU A TRANSAÇÃO IMPORTANTE DEPOIS DO COMMIT NÃO ADIANTA DAR ROLLBACK LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO DELETE LINHA DE ID 120 FOI APAGADA SELECT * FROM DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMANDO TABELAS Para excluirmos uma tabela existente devemos usar o comando DROP TABLE. A sua forma geral é: DROP TABLE <nome_tabela>; onde: <nome_tabela> dever ser substituído pelo nome da tabela a ser excluída. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMANDO TABELAS DROP TABLE EMPREGADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender a rodar um Script no Oracle Conhecer o Comando Select Recuperar dados de uma tabela LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_04.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 4- Sql Parte 2 Conteúdo Programático desta aula Conhecer o comando Select Executar um script no Oracle. Recuperar dados de uma tabela. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando modelo CREATE TABLE DEPARTAMENTO ( ID NUMBER(7) PRIMARY KEY, NOME VARCHAR2(40) NOT NULL) INSERT INTO DEPARTAMENTO VALUES ( 10, 'Financeiro'); INSERT INTO DEPARTAMENTO VALUES ( 20, 'Vendas'); INSERT INTO DEPARTAMENTO VALUES ( 30, 'Administrativo'); COMMIT; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando modelo CREATE TABLE EMPREGADO ( ID NUMBER(7) PRIMARY KEY, ULT_NOME VARCHAR2(20) NOT NULL, PRIM_NOME VARCHAR2(20) NOT NULL, CARGO VARCHAR2(30), SALARIO NUMBER(7,2), DT_ADMISSAO DATE, CPF CHAR(11) UNIQUE, ID_DEPTO NUMBER(7) REFERENCES DEPARTAMENTO(ID), ID_GERENTE NUMBER(7) REFERENCES EMPREGADO(ID)); LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando modelo INSERT INTO EMPREGADO VALUES( 1, 'Velasquez', 'Carmen','Presidente',25000, '08/04/2008','12345678901',30,null); INSERT INTO EMPREGADO VALUES( 2, 'Neves', 'Lauro', 'Diretor de Vendas',19500, '07/03/2009','23456789012',20, 1); INSERT INTO EMPREGADO VALUES( 3, 'Nogueira', 'Mário','Diretor Financeiro', 18000, '07/04/2010','34567890123',10,1); INSERT INTO EMPREGADO VALUES( 4, 'Queiroz', 'Mark','Gerente de Vendas',8000, '07/11/2010','12345432123',20,2); INSERT INTO EMPREGADO VALUES( 5, 'Rodrigues', 'Alberto', 'Vendedor',4000, '10/1/2008', '87965432123', 20, 4); INSERT INTO EMPREGADO VALUES( 6, 'Ugarte', 'Marlene', 'Vendedor', 3500,'23/11/2009', '87654345678',20,4); COMMIT; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando modelo CREATE TABLE CLIENTE ( ID NUMBER(7) PRIMARY KEY, NOME VARCHAR2(40) NOT NULL, VENDEDOR NUMBER(7) REFERENCES EMPREGADO(ID)); INSERT INTO CLIENTE VALUES ( 110, 'Ponto Quente',5); INSERT INTO CLIENTE VALUES ( 120, 'Casa Supimpa',6); INSERT INTO CLIENTE VALUES ( 130, 'Coisas e Tralhas',5); INSERT INTO CLIENTE VALUES ( 140, 'Casa Desconto',null); COMMIT; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS Comando Select É o comando SQL para recuperação dos dados de uma ou mais tabelas. Pode referenciar todas ou parte das colunas de uma ou mais tabelas, além de poder restringir as linhas que serão recuperadas. Como é orientado a conjuntos, um único comando pode retornar nenhuma ou várias linhas de uma combinação de tabelas desde que satisfaçam restrições impostas. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS Os componentes básicos do comando são: A Cláusula SELECT Lista as colunas que serão recuperadas Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos definindo que todas as colunas serão recuperadas. A Cláusula FROM Define a tabela que será recuperada SELECT nome-col1, nome_col2, nome coln FROM nome_da_ tabela; OU SELECT * FROM nome_da_tabela ; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ALIAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE Gerando Restrições nas consultas Ao selecionar os dados para visualização ou outra necessidade podemos, além de ordená-los, restringir o meu espectro de visualização utilizando a cláusula WHERE. A cláusula Where estabelece uma condição que a linha deverá obdecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Veja o exemplo abaixo onde desejamos que retornem apenas a linhas dos empregados com ID > 3: SELECT * FROM EMPREGADO WHERE ID > 3 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT * FROM EMPREGADO SELECIONAR O EMPREGADO DE NOME Ugarte LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' UGARTE' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' Ugarte' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATAS SELECT * FROM EMPREGADO SELECIONAR O EMPREGADO CONTRATADO EM 07/04/10 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATA SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/4/2010'; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATA SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/ABR/2010' ou SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/ABRIL/2010' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS SELECT * FROM EMPREGADO SELECIONAR OS EMPREGADOS CONTRATADOS DEPOIS DE 2008 E QUE GANHEM MAIS DE 10000 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS SELECT * FROM EMPREGADO SELECIONAR OS EMPREGADOS CONTRATADOS DEPOIS DE 2008 OU QUE GANHEM MAIS DE 10000 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS DATA MAIOR QUE 1/1/2009 SELECT * FROM EMPREGADO WHERE DT_ADMISSAO > ‘1/1/2009’ OR SALARIO > 10000 USO OR LIGANDO DUAS CONDIÇÕES SALARIO MAIOR QUE 10000 BASTA UMA SER VERDADEIRA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – NOT IN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – NOT BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – NOT LIKE SELECT * FROM EMPREGADO WHERE DT_ADMISSAO NOT LIKE ' %/04/%' NÃO FORAM CONTRATADOS NO MÊS 4 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NOT NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender funções de grupo Recuperar dados agregados de uma tabela LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_05bd.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 5- Sql Parte 3 Conteúdo Programático desta aula Aprender a ordenar o resultado de uma consulta Aprender funções de grupo Recuperar dados agregados de uma tabela LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS Os componentes básicos do comando são: A Cláusula SELECT Lista as colunas que serão recuperadas Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos definindo que todas as colunas serão recuperadas. A Cláusula FROM Define a tabela que será recuperada SELECT nome-col1, nome_col2, nome coln FROM nome_da_ tabela; OU SELECT * FROM nome_da_tabela ; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ALIAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' Ugarte' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATA SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/ABR/2010' ou SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/ABRIL/2010' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS Para permitir a ordenação o SQL nos fornece a clausula ORDER BY. SELECT { * | nome da coluna [, nome da coluna ...]} FROM nome da tabela WHERE condição {AND | OR} condição ORDER BY nome da coluna [ ASC | DESC ] [, nome da coluna [ ASC | DESC] ... ] Onde: ASC ordena as linhas de forma ascendente; é a ordenação default. DESC ordena as linhas de forma descendente. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO MULTIPLA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO MULTIPLA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO PELA POSIÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO PELA POSIÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMINANDO DUPLICADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMINANDO DUPLICADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO Funções de grupo operam sobre conjuntos de linhas. Elas retornam resultados baseados sobre um grupo de linhas, antes que um resultado por linha tenha retornado como uma função de linha única. Como padrão todas as linhas de um tabela são trilhadas como um grupo. A clausula GROUP BY da declaração do SELECT é usada para agrupar as linhas em menores grupos. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO AVG (x) Retorna o valor médio da coluna x. Exemplo: AVG (salario) Ignora os valores nulos. MAX (x) Retorna o valor máximo da coluna x. Exemplo: MAX (salario) Ignora os valores nulos. MIN (x) Retorna o valor mínimo da coluna x. Exemplo: MIN (salario) Ignora os valores nulos. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO SUM (x) Retorna a soma da coluna x. Exemplo: SUM (salario) Ignora os valores nulos. COUNT (x) Retorna o número de valores não nulos da coluna x. Exemplo: COUNT (perc_comissao) COUNT (* ) Retorna o número de linhas de uma tabela. Exemplo: COUNT (*) Considera os valores nulos. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO - DISTINCT LISTAR A QUANTIDADE DE CARGOS E DE ID_DEPTOS DIFERENTES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO - DISTINCT LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS Outro recurso do comando SELECT é a possibilidade de agruparmos nossos dados, utilizando a cláusula GROUP BY. Sintaxe: SELECT nome da coluna [ , nome da coluna] FROM nome da tabela WHERE condição GROUP BY expressão onde expressão especifica as colunas cujos valores determinam a base para o grupo de linhas; GROUP BY produz uma linha sumarizada para cada grupo de linhas selecionado. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS GRUPOS EM GRUPOS LISTAR A QUANTIDADE DE EMPREGADOS, SALARIO MEDIO E SOMA DOS SALARIOS DOS EMPREGADOS DE CADA DEPARTAMENTO E DENTRO DO DEPARTAMENTO PARA CADA CARGO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS GRUPOS EM GRUPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS - WHERE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS - WHERE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Faremos uma revisão para a AV1 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_06 bd.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 6- Sql Parte 4 Conteúdo Programático desta aula Aprender os comandos de junção Conhecer as diferentes sintaxes de junção LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Configurando Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO Um comando SELECT pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções. Sintaxe da Junção Sintaxe ANSI Sintaxe tradicional (não ANSI) Tipos Junção: Junção Cruzada ou Irrestrita (Produto Cartesiano) Junção Interior Junção Exterior Auto-Junção LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA Uma junção cruzada [cross join] de tabelas, também chamada junção irrestrita de duas tabelas gera um resultado formado por todas as combinações possíveis de uma linha da primeira tabela com uma linha da segunda. Não existe uma condição de junção. Esse resultado é chamado produto cartesiano das duas tabelas. Na sintaxe ANSI, junções cruzadas são indicadas com CROSS JOIN, por exemplo: select * from empregado cross join departamento; Na sintaxe Tradicional: select * from empregado , departamento; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR Esse tipo de junção conecta as duas tabelas e retorna apenas as linhas que satisfazem a condição de junção. Na sintaxe ANSI, junções interiores são indicadas com INNER JOIN: select <colunas> from tabela1 INNER JOIN tabela2 ON <condição de junção>; Na sintaxe Tradicional: select <colunas> from tabela1 ,tabela2 Where <condição de junção>; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR Dados do Empregado e do Departamento onde esta alocado LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL SELECT * FROM EMPREGADO , DEPARTAMENTO WHERE ID_DEPTO = DEPARTAMENTO.ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL Projetando Colunas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE TRADICIONAL REPARE AND LIGANDO FILTRAGEM E JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO QUERO JUNÇÃO PARA EMPREGADOS COM SALARIO < 10000 OU ID < 3 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL NA SINTAXE TRADICIONAL DO ORACLE NÃO EXISTE FULL JOIN SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR (+) = E.ID (+) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL RESULTADO EQUIVALENTE AO FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR (+) = E.ID UNION OPERADOR DE CONJUNTO SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR = E.ID (+) COMANDO EQUIVALENTE À LEFT COMANDO EQUIVALENTE À RIGHT LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR PROJETANDO TODAS AS COLUNAS DE CLIENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO, S.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G RIGHT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID NOTE QUE O EMPREGADO DE ID 1 NÃO TEM GERENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECTS.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G RIGHT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID WHERE G.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE, NÃO PRECISA RESOLVER POR OUTER JOIN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT ID, ULT_NOME, CARGO FROM EMPREGADO WHERE ID_GERENTE IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO, S.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G LEFT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID DADOS DOS SUBORDINADOS NULOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G LEFT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID WHERE S.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G , EMPREGADO S WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender os como construir subconsulta Conhecer os operadores de conjunto LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_07.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 7- Sql Parte 5 Conteúdo Programático desta aula Aprender os como construir subconsulta Conhecer os operadores de conjunto LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO Um comando SELECT pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções. Sintaxe da Junção Sintaxe ANSI Sintaxe tradicional (não ANSI) Tipos Junção: Junção Cruzada ou Irrestrita (Produto Cartesiano) Junção Interior Junção Exterior Auto-Junção LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL Projetando Colunas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G , EMPREGADO S WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA Subconsulta é uma consulta dentro de um outro comando SQL que pode ser: CREATE TABLE CREATE VIEW SELECT INSERT DELETE UPDATE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA Regras para Construção de Subconsultas A consulta interna tem que estar entre parênteses e sempre a mais interna é executada primeiro. Admite o aninhamento de n consultas internas ou em conjunto com operadores AND e OR Retorna uma ou várias linhas ou colunas Usualmente é usada na cláusula WHERE dos comandos SELECT, DELETE e UPDATE Pode ser usada na cláusula FROM do comando SELECT . Pode referenciar colunas da consulta mais externa Não pode conter a cláusula ORDER BY LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA Operador Descrição = Igual a <> Diferente > Maior que < Menor que >= Maior ou igual <= Menor ou igual Operadores de Comparação em Subconsultas Simples Os operadores abaixo podem ser usados em condições de comparação com subconsultas simples, pois manipulam o retorno de apenas uma linha de comparação com a consulta principal. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA EMPREGADOS DO DEPARTAMENTO DE VENDAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA SELECT * FROM EMPREGADO WHERE ID_DEPTO = 20 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA ESTE COMANDO PRODUZ O RESULTADO 20 QUE É UTILIZADO NO COMANDO EXTERNO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA EMPREGADOS QUE GANHAM MAIS QUE O SALARIO MEDIO DA EMPRESA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA SELECT * FROM EMPREGADO WHERE SALARIO > ( SELECT AVG (SALARIO) FROM EMPREGADO) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALARIO DIFERENTE DOS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILNHAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS Operador Descrição IN Igual a qualquer elemento de NOT IN Diferente que qualquer elemento de > ALL maior que todos os elementos da lista < ALL menor que todos <> ALL diferente de todos (o mesmo que NOT IN) = ANY igual a algum dos elementos da lista (o mesmo que IN) > ANY maior que algum dos elementos da lista < ANY menor que algum dos elementos <> ANY diferente de algum dos elementos da lista (falso se igual a todos) OPERADORES DE COMPARAÇÃO EM SUBCONSULTAS MULTI-LINHAS Existe um conjunto de operadores que podem ser utilizados em subconsultas que retornam mais de uma linhas, este operadores são LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILNHAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALARIO MAIORES QUE TODOS OS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS SELECT * FROM EMPREGADO WHERE SALARIO > ALL ( SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALARIO MAIORES QUE TODOS OS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS SELECT * FROM EMPREGADO WHERE SALARIO > ANY ( SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - SELECT SELECT ID, ULT_NOME, SALARIO , (SELECT AVG(SALARIO) FROM EMPREGADO) AS "SALARIO MEDIO" FROM EMPREGADO WHERE SALARIO < (SELECT AVG(SALARIO) FROM EMPREGADO) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - SELECT SELECT ID, ULT_NOME, SALARIO , (SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') AS "SALARIO VENDEDORES" FROM EMPREGADO WHERE SALARIO >ALL (SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') NO SELECT A SUBCONSULTA SOMENTE PODE RETORNAR UMA LINHA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - HAVING DEPARTAMENTOS COM MEDIA SALARIAL MAIOR QUE MEDIA SALARIAL DA EMPRESA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - HAVING SELECT ID_DEPTO, AVG(SALARIO) FROM EMPREGADO GROUP BY ID_DEPTO HAVING AVG(SALARIO) > ( SELECT AVG(SALARIO) FROM EMPREGADO) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - FROM ID, ULT_NOME, SALARIO E ID_DEPTO DO EMPREGADO E MEDIA SALARIAL DE SEU DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA – FROM SELECT E.ID, E.ULT_NOME, E.SALARIO, E.ID_DEPTO, RD.MEDIA FROM EMPREGADO E INNER JOIN (SELECT ID_DEPTO, AVG(SALARIO) AS MEDIA FROM EMPREGADO GROUP BY ID_DEPTO) RD ON E.ID_DEPTO = RD.ID_DEPTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - CORRELATA EMPREGADOS QUE GANHAM MAIS QUE A MEDIA SALARIAL DE SEU DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - CORRELATA SELECT ID, ULT_NOME, SALARIO, ID_DEPTO FROM EMPREGADO E WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPREGADO I WHERE I.ID_DEPTO = E.ID_DEPTO) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA – TESTE EXISTENCIA DEPARTAMENTOS QUE POSSUEM VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA – TESTE EXISTENCIA SELECT * FROM DEPARTAMENTO E WHERE EXISTS (SELECT * FROM EMPREGADO I WHERE E.ID = I.ID_DEPTO AND UPPER(I.CARGO) = 'VENDEDOR') LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO Trabalhando com Conjuntos Muitas vezes necessitamos que nossas consultas incluam, em uma mesma coluna, dados de mais de uma tabela. Para isto utilizamos os operadores de conjuntos UNION, UNION ALL, INTERSECT e MINUS. Regras para Utilização dos Operadores de Conjuntos Os comandos SELECT participantes têm que ter o mesmo número de colunas, As colunas correspondentes têm que ser do mesmo tipo de dado, Linhas duplicadas são automaticamente descartadas, exceto com UNION ALL, Os nomes das colunas resultantes são os da primeira consulta, ALIAS de colunas só tem efeito se utilizados na primeira consulta, A cláusula ORDER BY só pode ser utilizada ao final do comando, Os operadores de conjuntos podem ser utilizados em subconsultas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - UNION Resulta na combinação de todas as linhas de duas ou mais tabelas participantes do UNION, eliminando as linhas duplicadas resultantes. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - UNION 20 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - UNION SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) UNION SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL RESULTADO EQUIVALENTE AO FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR (+) = E.ID UNION OPERADOR DE CONJUNTO SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR = E.ID (+) COMANDO EQUIVALENTE À LEFT COMANDO EQUIVALENTE À RIGHT LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – UNION ALL Resulta na combinação de todas as linhas de duas ou mais tabelas participantes do UNION, mantendo todas as linhas duplicadas. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – UNION ALL SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) UNION ALL SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – INTERSECT Resulta na interseção entre todas as linhas de duas ou mais tabelas participantes do INTERSECT, ou seja, apenas as linhas comuns entre ela LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - INTERSECT 20 E LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – INTERSECT SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) INTERSECT SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - MINUS Resulta nas linhas existentes na primeira tabela, mas que não existem na segunda . As linhas comuns também não são resultantes. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - MINUS 20 E QUE NÃO SÃO VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – MINUS SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) MINUS SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR' LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO – ORDENAÇÃO SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) UNION ALL SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = VENDEDOR' ORDER BY ID DESC LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender a criar Visões, Indices e Sequences LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_08.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 8- Sql Parte 6 Conteúdo Programático desta aula Aprender a criar Visões, Indices e Sequences LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES Materializam o Esquema Externo de um banco de dados. é uma consulta previamente definida e que fica armazenada no dicionário de dados, podendo ser acessada de forma similar a uma tabela. Quando a visão é referenciada em um comando de SELECT suas linhas e colunas são determinadas dinamicamente, ou seja a consulta é executada e o resultado apresentado para o usuário, atuando como um verdadeira tabela virtual. Uma visão pode permitir, com restrições que os dados da tabela sejam manipulados em comando de INSERT, UPDATE e DELETE, porém, não armazena estes dados. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CRIAÇÃO CRIAR UMA VISÃO COM O ID, PRIMEIRO NOME, ULTIMO NOME E CARGO DO EMPREGADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CRIAÇÃO CREATE VIEW EMP_RESUMO AS SELECT ID, PRIM_NOME, ULT_NOME, CARGO FROM EMPREGADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA SELECT * FROM EMP_RESUMO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS Existem basicamente dois tipos de Views: Simples : composto por apenas um SELECT, utiliza apenas uma tabela, suas colunas são formadas por colunas da tabela original, sem cálculos ou funções Complexas: aquelas onde há um join entre tabelas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES – MANIPULANDO DADOS INSERT INTO EMP_RESUMO VALUES ( 10, ‘ALBERTO’,’RODRIGUES’, ‘ALMOXARIFE’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES – MANIPULANDO DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS Vamos agora criar uma visão complexas, desejamos criar um visão com o id, nome completo e cargo do empregado e nome do departamento onde ele trabalha LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS CREATE VIEW EMP_DEP AS SELECT E.ID , E.PRIM_NOME|| ' ' ||E.ULT_NOME AS "NOME EMPREGADO" , E.CARGO , D.NOME AS "NOME DEPARTAMENTO" FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.ID_DEPTO = D.ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS SELECT * FROM EMP_DEP USUARIO PENSA QUE É UMA TABELA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS INSERT INTO EMP_DEP VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - WITH READ ONLY LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA INSERT INTO EMP_RESUMO VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO DROP VIEW EMP_DEP LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES CREATE SEQUENCE ID_CLI_SEQ INCREMENT BY 3 START WITH 10 MAXVALUE 1000 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - NEXTVAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - CURRVAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES INSERT INTO CLIENTE VALUES (ID_CLI_SEQ.NEXTVAL , 'Casa Tombo', 6) VAI INSERIR 16 NO ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES A sequence é incrementada independente da transação ter sido efetivada (Commit) ou não (Rollback) o que pode gerar perda de valores. Não utilizar em aplicações que manipulam dados fiscais como emissão de Notas Fiscais. Da mesma forma que usuários acessam a mesma sequence, estes podem receber valores intercalados, visto que num dado momento a sequence poderá estar atendendo um número para cada um. Dois usuários jamais conseguirão gerar o mesmo número sobre uma mesma sequence. Os valores que estão no CACHE (memória) são perdidos caso o banco de dados sofra uma interrupção anormal. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES Regras para Utilização de NEXTVAL e CURRVAL NEXTVAL e CURRVAL podem ser usados: Numa cláusula SELECT em tabelas (exceto em Views) Na cláusula VALUES de um comando INSERT Na cláusula SET de um comando UPDATE No SELECT da query principal de uma construção com subqueries . LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES Restrições para Utilização de NEXTVAL e CURRVAL NEXTVAL e CURRVAL não podem ser usados: Dentro de uma lista de colunas de um comando SELECT de uma View Com as cláusulas ORDER BY, GROUP BY ou HAVING de um comando SELECT Com operadores de conjuntos UNION, INTERSECT e MINUS Dentro de uma subconsulta . LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO ALTER SEQUENCE <sequence_name> [INCREMENT BY n ] [MAXVALUE n I NOMAXVALUE] [MINVALUE n I NOMINVALUE] ........... Controles sobre Sequences Alteradas Serão afetados apenas os números a serem gerados. Algumas validações serão feitas como um novo valor MAXVALUE, não poderá ser definido se menor que o último número gerado. A cláusula START WITH, não poderá ser alterada, neste caso, a sequence deverá ser eliminada e recriada. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO Alter Sequence ID_CLI_SEQ INCREMENT BY 5 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ELIMANDO DROP SEQUENCE ID_CLI_SEQ LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - FUNDAMENTAÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - PRIMARIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES – CLUSTERING LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap Um índice bitmap atribui um “mapa de bits” (bitmap) para cada possível valor de um campo chave Uma matriz é criada com: uma linha para cada linha da tabela e uma coluna para cada valor distinto do atributo escolhido Cada bit no bitmap corresponde ao cruzamento entre um rowid e um valor do campo chave. Se o bit está setado (=1), significa que o registro com o rowid correspondente contém o valor do campo chave LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap Durante o processamento de consultas, o mapa de bits é transferido para a memória Consultas são transformadas para serem processadas por operações booleanas Maior eficiência Eficiência é ainda maior se a tabela consultada possuir múltiplos índices bitmap 1 para cada coluna acessada Cada lista de RowIDs é construída indepedentemente, utilizando os índices bitmap de cada coluna Rotina de merge compara as listas de RowIDs buscando interseções LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle Tipos de Índices Único - Garante a unicidade do valor. O Índice criado na Primary Key ou Unique Key, é único, porém podemos criar restrições de unicidade em outras colunas da tabela. Criado automaticamente em PK e UK Não_único - Índices criados apenas com o propósito de acelerar a pesquisa, como em Chaves Estrangeiras (Foreing Key), onde a unicidade não é requerida. Uma Coluna - Apenas uma coluna será indexada. Colunas Compostas ou Concatenadas - Até 255 colunas podem ser concatenadas para formar apenas um índice e não necessitam ser adjacentes. Função – É criado em função de um cálculo feito em uma ou mais colunas. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle CREATE INDEX IND_VEND ON CLIENTE(VENDEDOR) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender a controlar transações Acessar o dicionário de dados do Oracle. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Iplementação de banco de dados/Aula_09.ppt IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 9- Transações IMPLEMENTAÇÃO DE BANCO DE DADOS Conteúdo Programático desta aula Transações TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS TRANSAÇÕES Uma transação é uma unidade de execução de programa que acessa e, possivelmente, atualiza vários itens de dados. Uma transação, geralmente, é o resultado da execução de um programa de usuário escrito em uma linguagem de manipulação de dados, e é delimitada da forma: begin transaction ......... end transacion. A transação consiste de todas as operações ali executadas, entre o começo e o final da transação. Durante a execução de uma transação o banco de dados pode passar por estados de inconsistência por vários motivos como: Queda de energia, Falha física, Etc.. TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS TRANSAÇÃO INÍCIO DA TRANSAÇÃO FIM DA TRANSAÇÃO EXECUÇÃO DA TRANSAÇÃO BANCO DE DADOS EM ESTADO CONSISTENTE BANCO DE DADOS TEMPORARIAMENTE EM ESTADO INCONSISTENTE T1 T2 IMPLEMENTAÇÃO DE BANCO DE DADOS TRANSAÇÃO COMANDO UPDATE TABELA TODA TRANSAÇÃO TERMINA INSUCESSO (ROLLBACK) SUCESSO (COMMIT) IMAGEM ANTIGA NOVA IMAGEM IMPLEMENTAÇÃO DE BANCO DE DADOS 5 EXEMPLOS DE TRANSAÇÃO BEGIN_TRANSACTION UPDATE EMP SET SAL = SAL * 1.1 WHERE CODEPT = 10 COMMIT BEGIN_TRANSACTION UPDATE CONTA SET SALDO = SALDO - 200 WHERE NRCC = 1000 UPDATE CONTA SET SALDO = SALDO + 200 WHERE NRCC = 1002 COMMIT BEGIN_TRANSACTION UPDATE EMP SET SAL = SAL * 1.1 WHERE CODEPT = 10 ROLLBACK IMPLEMENTAÇÃO DE BANCO DE DADOS PROPRIEDADES DAS TRANSAÇÕES - ATOMICIDADE - CONSISTÊNCIA - ISOLAMENTO -DURABILIDADE A C I D IMPLEMENTAÇÃO DE BANCO DE DADOS ATOMICIDADE PROPRIEDADE DO TUDO OU NADA NRCC NOME CPF SALDO 1000 J SILVA 123 500,00 1001 A BARROS 143 500,00 1002 J SILVA 123 200,00 1003 S SALES 223 500,00 UPDATE CONTA SET SALDO = SALDO - 200 WHERE NRCC = 1000 300,00 400,00 UPDATE CONTA SET SALDO = SALDO + 200 WHERE NRCC = 1002 200,00 BEGIN_TRANSACTION COMMIT IMPLEMENTAÇÃO DE BANCO DE DADOS GRAUS DE CONSISTENCIA GRAU 3 - OUTRAS TRANSAÇÕES NÃO MODIFICAM QUALQUER DADOS DE T ANTES DE T TERMINAR GRAU 2 - T NÃO LE DADOS MODIFICADOS POR OUTRA TRANSAÇÃO GRAU 1 - T NÃO FAZ COMMIT DE DADOS ESCRITOS ANTES DO FIM DA TRANSAÇÃO GRAU 0 - T NÃO SOBRE-ESCREVE DADOS MODIFICADOS POR OUTRAS TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS ISOLAMENTO UPDATE EMP... EMP Imagem ao inicio do select Nova Imagem SELECT * FROM EMP IMPLEMENTAÇÃO DE BANCO DE DADOS 10 CONSISTÊNCIA/ISOLAMENTO NRCC NOME CPF SALDO 1000 J SILVA 123 500,00 1001 A BARROS 143 500,00 1002 J SILVA 123 200,00 1003 S SALES 223 500,00 AGENCIA R$ 300,00 ------------------ COMPENSAÇÃO 500,00 200,00 500,00 200,00 300,00 R$ 200,00 300,00 IMPLEMENTAÇÃO DE BANCO DE DADOS DURABILIDADE UPDATE EMP... EMP SELECT * FROM EMP Imagem Antiga COMMIT MECANISMO DE RECUPERAÇÃO IMPLEMENTAÇÃO DE BANCO DE DADOS 12 ESTADOS DA TRANSAÇÃO IMPLEMENTAÇÃO DE BANCO DE DADOS Execução concorrente Sejam T1 e T2 duas transações que transferem fundos de uma conta para outra. O saldo inicial de A é 100 e de B 200 A transação T1 transfere 50 reais da conta A para a conta B. A transação T2 transfere 10 por cento do saldo da conta A para a conta B. IMPLEMENTAÇÃO DE BANCO DE DADOS Execução concorrente T1: read(A); A := A – 50; write(A); read(B); B := B + 50; write(B); T2: read(A); temp := A * 0,1; A := A – temp; write(A); read(B); B := B + temp; write(B); IMPLEMENTAÇÃO DE BANCO DE DADOS Execução em seqüência T1 T2 T1 T2 read(A); A := A – 50; write(A); read(B); B := B + 50; write(B); read(A); temp := A * 0,1; A := A – temp; write(A); read(B); B := B + temp; write(B); read(A); A := A – 50; write(A); read(B); B := B + 50; write(B); read(A); temp := A * 0,1; A := A – temp; write(A); read(B); B := B + temp; write(B); Escalas de execução em seqüência: observe que o estado do BD é sempre consistente. IMPLEMENTAÇÃO DE BANCO DE DADOS Execução concorrente ... T1 T2 read(A); A := A – 50; write(A); read(B); B := B + temp; write(B); read(B); B := B + 50; write(B); read(A); temp := A * 0,1; A := A – temp; write(A); Correta T1 T2 read(A); A := A – 50; write(A); read(B); B := B + 50; write(B); read(A); temp := A * 0,1; A := A – temp; write(A); read(B); B := B + temp; write(B); Incorreta IMPLEMENTAÇÃO DE BANCO DE DADOS Serialização O sistema de banco de dados deve controlar a execução concorrente de transações para assegurar que o estado do banco de dados permaneça consistente. A consistência do banco de dados, sob execução concorrente, pode ser assegurada por meio da garantia que qualquer escala executada tenha o mesmo efeito de outra que tivesse sido executada sem qualquer concorrência. Isto é, uma escala de execução deve, de alguma forma, ser equivalente a uma escala seqüencial. IMPLEMENTAÇÃO DE BANCO DE DADOS Controle de Concorrência IMPLEMENTAÇÃO DE BANCO DE DADOS Protocolos com Base em Bloqueio (Métodos Pessimistas) Uma das formas de garantir que apenas escalonamentos serializáveis sejam produzidos é obrigar que o acesso aos itens de dados seja feito de maneira mutuamente exclusiva: Enquanto uma transação acessa um item de dados, nenhuma outra transação pode modificá-lo. Para implementar isso pode-se usar o método de bloqueio (lock). IMPLEMENTAÇÃO DE BANCO DE DADOS Bloqueios Bloqueio compartilhado: Se uma transação Ti obteve um bloqueio compartilhado (denotado por S) sobre o item de dado Q, então Ti pode ler, mas não escrever em Q. Bloqueio exclusivo: Se uma transação Ti obteve um bloqueio exclusivo (denotado por X) do item de dado Q, então Ti pode tanto ler como escrever em Q. Toda transação precisa solicitar o bloqueio apropriado antes de executar qualquer operação sobre Q. IMPLEMENTAÇÃO DE BANCO DE DADOS Bloqueios T1: lock-X(B); read(B); B := B – 50; write(B); unlock(B); lock-X(A); read(A); A := A + 50; write(A); unlock(A); T2: lock-S(A); read(A); unlock(A); lock-S(B); read(B); display (A + B); unlock(B); Se A = 100 e B = 200, o valor mostrado em T2 = 300. IMPLEMENTAÇÃO DE BANCO DE DADOS Ordenamento Timestamp (Método Otimista) Garante seriabilidade: Envolve o uso de timestamp para ordenar a execução das transações de forma que o escalonamento formado seja equivalente ao escalonamento serial. Timestamp: identificador único criado pelo SGBD para identificar uma transação. São associados na ordem em que as transações são submetidas ao sistema. TS(T) = timestamp da transação T No escalonamento as transações tomam a ordem de seus timestamps IMPLEMENTAÇÃO DE BANCO DE DADOS Algoritmo Básico Associa dois timestamps a cada item X: Read_TS(x): o timestamp de leitura de X é o maior entre todos os timestamps de transações que leram X com sucesso; Write_TS(x): o timestamp de escrita de X é o maior entre todos os timestamps de transações que escreveram X com sucesso; Esses timestamps são atualizados sempre que uma instrução read(x) ou write(x) é executada. Assegura que as operações de leitura e
Compartilhar