Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 01 - Modelo Relacional Sidney Venturi sidney.filho@estacio.br 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; Dados X Informação Dados Informação fatos em sua forma primária Conhecimento produzido 2 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Importância dos Banco de Dados 3 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS O que é um banco de dados? 4 LINGUAGEM SQL 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 - “minimundo” e qualquer alteração efetuada neste minimundo é automaticamente refletida no banco de dados. 5 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS EVOLUÇÃO DOS SISTEMAS Sistemas Tradicionais Sistemas de Banco de Dados Baseados em Arquivos Baseados em SGBD 6 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Sistemas Tradicionais 7 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Sistemas de Banco de Dados 8 LINGUAGEM SQL 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 9 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados Bancos de Dados Centralizados 10 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados Bancos de Dados Cliente – Servidor (com servidor de Banco de Dados) 11 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados 12 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados 13 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Evolução dos Bancos de Dados 14 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Estrutura Geral de um Sistema de Banco de Dados Meta dados SQL Conjunto de valores armazenados pelo Banco de Dados em seus arquivos Informações referentes ao tipo e organização dos dados do banco Módulo do SGBD responsável pelo controle do acesso físico aos dados. Módulo do SGBD responsável por determinar a forma de executar a consulta solicitada pelo usuário, via aplicação. Realiza a interpretação do comando (análise sintática, léxica e semântica) e elabora o plano de execução do comando, estabelecendo a forma de acessar fisicamente os dados. Linguagem Estruturada de Consultas 15 LINGUAGEM SQL 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 16 LINGUAGEM SQL 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 17 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Arquitetura 3 Esquemas DBA Desenvolvedor 18 LINGUAGEM SQL 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. 19 LINGUAGEM SQL 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. 20 LINGUAGEM SQL 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 21 LINGUAGEM SQL 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 22 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Ferramentas de Projeto 23 LINGUAGEM SQL 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 24 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Relação = Tabela 25 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Atributo = Coluna 26 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Valores dos Atributos = Domínio Domínio: Conjunto de valores válidos. Tipo: domínio mais amplo (Data, Alfanumérico, Números...) 27 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conjunto de Atributo = Esquema 28 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Tupla = Linha 3 atributos, 4 Tuplas 29 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conjunto de Tuplas = Instância 30 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Campo = Encontro de Linha e Coluna Operações => Valor do Campo Nome na segunda Tupla 31 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Conteúdo do Campo = Valor 32 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Campos sem Conteúdo = Nulo 33 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria 34 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Único Integridade de Chave Primária 35 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Único Não há Integridade de Chave Primária 36 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Obrigatório Integridade de Entidade 37 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria = Atributo Obrigatório Não há Integridade de Entidade 38 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria Simples 39 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Primaria Composta 40 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Candidata 41 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Estrangeira 42 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Componente do Modelo Relacional Chave Estrangeira -> Integridade Referencial Chave Estrangeira 43 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 02 - Álgebra Relacional 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 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 estrangeira: atributo de uma relação que é chave primária de outra relação. 45 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Conceitos Envolvidos 46 LINGUAGEM SQL 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 47 LINGUAGEM SQL 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, Interseção, Diferença) Divisão 48 LINGUAGEM SQL 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. 49 LINGUAGEM SQL 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. 50 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10: 51 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A expressão que atende ao pedido é: id_Depto = 10 (Empregado) 52 LINGUAGEM SQL 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. : 53 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Seleção A expressão que atende ao pedido é: id_Depto = 10 E Salario > 1500 (Empregado) 54 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção A operação Projeção seleciona um conjunto determinado de colunas de uma relação. 55 LINGUAGEM SQL 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. 56 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO: 57 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Projeção A expressão que atende ao pedido é: Id, Nome, Salario (Empregado) 58 LINGUAGEM SQL 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. 59 LINGUAGEM SQL 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 60 LINGUAGEM SQL 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: 61 LINGUAGEM SQL 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 62 LINGUAGEM SQL 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 63 LINGUAGEM SQL 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 64 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Sequencialidade de Operações Sempre na ordem Seleção -> Projeção? Id_Depto = 10 ( Id,Nome, Salario (Empregado)) 65 LINGUAGEM SQL 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 66 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas. 67 LINGUAGEM SQL 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. 68 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano - Exemplo Departamento X Região A operação irá justapor as colunas e combinar todas as linhas. 69 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Produto Cartesiano 70 LINGUAGEM SQL 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. 71 LINGUAGEM SQL 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. 72 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção - Exemplo Departamento ⋈ Id_Regiao = Id Região 73 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção - Exemplo Departamento ⋈ Id_Regiao = Id Região A operação irá justapor as colunas e combinar as linhas que se relacionam. 74 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Junção Exemplo 75 LINGUAGEM SQL 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 76 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Redundância de Tupla 77 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Compatibilidade quanto a União É preciso que os tipos das colunas coincidam. 78 LINGUAGEM SQL 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 . 79 LINGUAGEM SQL 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 80 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS União - Exemplo Empregado U Acionista 81 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS União - Exemplo Empregado U Acionista 82 LINGUAGEM SQL 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 . 83 LINGUAGEM SQL 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 84 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção - Exemplo Empregado ∩ Acionista 85 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Interseção - Exemplo Empregado ∩ Acionista 86 LINGUAGEM SQL 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 existem na outra 87 LINGUAGEM SQL 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 88 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença - Exemplo Empregado – Acionista ou Acionista – Empregado 89 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Diferença - Exemplo – Empregado – Acionista ou Acionista – Empregado 90 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 1 – T1 = Id,Nome ( Id_Depto = 10 (Empregado)) 91 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 1 – T1 = Id,Nome ( Id_Depto = 10 (Empregado)) 92 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 2 – T2 = Id,Nome ( Salario >= 1500 (Empregado)) 93 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 2 – T2 = Id,Nome ( Salario >= 1500 (Empregado)) 94 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Operações de Conjunto em consultas - 3 – T1 U T2 95 LINGUAGEM SQL 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. 96 LINGUAGEM SQL 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. 97 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão - Exemplo ID dos Funcionários que Trabalham em todos os Projetos 98 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão - Exemplo ID dos Funcionários que Trabalham em todos os Projetos 99 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão – Exemplo – Passo 1 – T1 = Id_Proj (Projeto) 100 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Divisão – Exemplo – Passo 2 – Funcionario_Projeto / T1 101 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 03 - SQL Parte 1 Conhecer a Linguagem SQL Instalar e Configurar um SGBD. Criar Tabelas. Manipular 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 103 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle 104 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle 105 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Download Oracle 106 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 107 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 108 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 109 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 110 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 111 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 112 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 113 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 114 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 115 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Instalação Oracle 116 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle 117 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle 118 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle 119 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando 120 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando 121 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Comando 122 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 123 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface 124 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface 125 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface 126 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface 127 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Criando Usuário – Via Interface 128 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Desconectando de System 129 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 130 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle 131 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Testando o Oracle 132 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 BD. DRL -Select: É o comando mais comum do SQL. Utilizado amplamente para recuperação dos dados de uma base. (mexe no Esquema) 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. (mexe na Instância) DCL - Grant, Revoke: São utilizados para atribuir ou remover direitos de acesso (controle) a objetos do banco de dados e suas estruturas. 133 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) 134 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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: DDL – CRIAÇÃO DE TABELAS 135 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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] ); DDL – CRIAÇÃO DE TABELAS 136 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS 137 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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)) DDL – CRIAÇÃO DE TABELAS FK FK da própria tabela: AUTORRELACIONAMENTO 138 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS 139 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DDL – CRIAÇÃO DE TABELAS 140 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); 141 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT SEM REFERENCIAR COLUNAS INSERT INTO DEPARTAMENTO VALUES ( 10, ‘Financeiro’) 142 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT REFERECIANDO COLUNAS INSERT INTO DEPARTAMENTO (ID,NOME) VALUES ( 20, ‘Vendas’) 143 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Conferindo Inserção SELECT * FROM DEPARTAMENTO 144 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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 DML 145 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM DEPARTAMENTO UPDATE SOMAR 100 AO ID DOS DEPARTAMENTOS 146 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UPDATE DEPARTAMENTO SET ID = ID + 100 Clique executar UPDATE 147 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO UPDATE ALTEROU OS ID DOS DEPARTAMENTOS SELECT * FROM DEPARTAMENTO 148 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UPDATE COM CONDIÇÃO UPDATE DEPARTAMENTO SET ID = ID + 1000 WHERE ID = 110 149 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO UPDATE ALTEROU O ID DE 110 PARA 1110 SELECT * FROM DEPARTAMENTO 150 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 151 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE APAGAR A LINHA DO DEPARTAMENTO DE ID 120 DESMARCAR COMMIT AUTOMATICO 152 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE DELETE DEPARTAMENTO COMMIT DESMARCADO SEM FROM, NO ORACLE FROM É OPCIONAL APAGOU AS 2 LINHAS???? 153 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE SELECT * FROM DEPARTAMENTO DELETE SEM WHERE APAGA TODAS AS LINHAS E AGORA? 154 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE ROLLBACK COMMIT DESMARCADO CANCELA A TRANSAÇÃO 155 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE VOLTARAM AS LINHAS SELECT * FROM DEPARTAMENTO 156 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? 157 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS DELETE COMMIT FECHOU A TRANSAÇÃO IMPORTANTE DEPOIS DO COMMIT NÃO ADIANTA DAR ROLLBACK 158 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONFERINDO DELETE LINHA DE ID 120 FOI APAGADA SELECT * FROM DEPARTAMENTO 159 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. Não aceita ROLL BACK no Oracle 160 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMANDO TABELAS DROP TABLE EMPREGADO 161 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 04 - SQL Parte 2 Conhecer o comando Select Executar um script no Oracle. Recuperar dados de uma tabela. Rodando Script 163 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script 164 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script Digitar @ e arrastar o script para a janela. 165 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script 166 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Rodando Script 167 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados 168 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; 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)); 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; 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; 169 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 às restrições impostas. 170 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 ; 171 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS 172 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS 173 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES 174 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES 175 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ALIAS 176 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 177 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE 178 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT * FROM EMPREGADO SELECIONAR O EMPREGADO DE NOME Ugarte 179 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' UGARTE' 180 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' Ugarte' 181 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATAS SELECT * FROM EMPREGADO SELECIONAR O EMPREGADO CONTRATADO EM 07/04/10 182 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – DATA SELECT ULT_NOME, DT_ADMISSAO FROM EMPREGADO WHERE DT_ADMISSAO = '7/4/2010'; 183 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' 184 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 185 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS 186 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 187 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 188 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN 189 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN 190 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – NOT IN 191 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN 192 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN 193 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – NOT BETWEEN 194 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN 195 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN 196 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 197 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 198 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 199 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 200 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 201 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 202 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 203 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE nome com 5 letras: ‘_____’ (5 underlines) 204 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 205 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 206 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 207 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL 208 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL 209 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NOT NULL 210 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 05- Sql Parte 3 Aprender a ordenar o resultado de uma consulta Aprender funções de grupo Recuperar dados agregados de uma tabela Rodando Script 212 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 ; 213 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CONSULTANDO TABELAS 214 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESCREVENDO EXPRESSÕES 215 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ALIAS 216 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE 217 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS UTILIZANDO WHERE – CASE SENSITIVE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' Ugarte' 218 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' 219 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES LOGICOS 220 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS - IN 221 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – BETWEEN 222 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – LIKE 223 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES RELACIONAIS – IS NULL 224 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados 225 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; default. DESC ordena as linhas de forma descendente. 226 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS 227 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS 228 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS 229 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENANDO RESULTADOS 230 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO MULTIPLA 231 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO MULTIPLA 232 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO PELA POSIÇÃO 233 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ORDENAÇÃO PELA POSIÇÃO 234 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMINANDO DUPLICADOS 235 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ELIMINANDO DUPLICADOS 236 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. 237 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. 238 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. 239 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 240 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 241 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 242 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 243 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 244 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO 245 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO - DISTINCT LISTAR A QUANTIDADE DE CARGOS E DE ID_DEPTOS DIFERENTES 246 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FUNÇÕES DE GRUPO - DISTINCT 247 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. 248 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS 249 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS 250 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS 251 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 252 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS GRUPOS EM GRUPOS 253 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS - WHERE 254 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CRIANDO GRUPOS - WHERE 255 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING 256 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING 257 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS FILTRANDO GRUPOS - HAVING 258 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 06- Sql Parte 4 Aprender os comandos de junção Conhecer as diferentes sintaxes de junção 260 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 261 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INNER JOIN Syntax SELECT Ped.PedID, Cli.CliName, Env.EnvName FROM ((Ped INNER JOIN Cli ON Ped.CliID = Cli.CliID) INNER JOIN Env ON Ped.EnvID = Env.EnvID); LEFT JOIN Syntax SELECT col_name(s) FROM T1 LEFT JOIN T2 ON T1.col_name = T2.coL_name; RIGHT JOIN Syntax SELECT col_name(s) FROM T1 RIGHT JOIN T2 ON T1.col_name = T2.col_name; FULL OUTER JOIN Syntax SELECT col_name(s) FROM T1 FULL OUTER JOIN T2 ON T1.col_name = T2.colname; SELECT col_name(s) FROM T1 INNER JOIN T2 ON T1.col_name = T2.col_name; 262 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados 263 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Configurando Oracle 264 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 264 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 265 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; 266 A tabela Empregado possui 6 linhas e a tabela Departamento 3 linhas , o resultado final será 18 linhas que é 6 * 3 = 18 linhas, formadas por todas as combinações possíveis de empregado e departamento. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA 267 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA 268 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, JUNÇÃO CRUZADA 269 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA 270 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>; 271 Uma junção interior é chamada de equijoin quando as colunas são comparadas usando o =, e as duas colunas aparecem no resultado, mostrando dados redundantes, já que elas têm o mesmo valor. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Dados do Empregado e do Departamento onde esta alocado JUNÇÃO INTERIOR 272 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 273 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 274 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM EMPREGADO , DEPARTAMENTO WHERE ID_DEPTO = DEPARTAMENTO.ID JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 275 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 276 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 277 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Projetando Colunas JUNÇÃO INTERIOR – SINTAXE TRADICIONAL 278 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI 279 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS JUNÇÃO INTERIOR – SINTAXE ANSI 280 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS JUNÇÃO INTERIOR – SINTAXE ANSI 281 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS 282 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE ANSI 283 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE TRADICIONAL REPARE AND LIGANDO FILTRAGEM E JUNÇÃO 284 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO QUERO JUNÇÃO PARA EMPREGADOS COM SALARIO < 10000 OU ID < 3 285 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO QUERO JUNÇÃO PARA EMPREGADOS COM SALARIO < 10000 OU ID < 3 Erro por falta dos parêntesis. Gera produto cartesiano. 286 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO Parêntesis 287 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR (início da explicação) 288 Uma junção exterior [outer join] mostra todas as linhas de uma tabela, mesmo quando elas não satisfazem a condição de junção. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 289 JUNÇÃO INTERIOR – Quero os dados não relacionados. Próx. slide LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI 290 Agora retornaram os dados não relacionados. (Todos os dados da tabela à ESQUERDA :EMPREGADO) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI 291 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI 292 Agora a tabela LEFT é CLIENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL 293 (+) – Operador de ALTER JOIN do ORACLE. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL 294 O resultado não é pela ordem, mas por onde foi colocado o (+) [acrescenta linhas à tabela ‘marcada’] LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR – ANSI – FULL JOIN 295 Funciona como LEFT e Right Join 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 (+) 296 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 297 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR PROJETANDO TODAS AS COLUNAS DE CLIENTE 298 CLIENTE à ESQUERDA e EMPREGADO à DIREITA. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO 299 Uma auto-junção [self join] é uma junção da tabela com ela mesma. Na tabela Empregado, por exemplo, cada empregado está subordinado a outro. A coluna 'id_gerente' indica o código do gerente do empregado. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO 300 Precisa citar a mesma tabela 2 vezes mas isso gera erro. Então coloca-se ALIAS. S- subordinado, G - Gerente FK PK LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO 301 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE 302 AUTO JUNÇÃO 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 303 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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 304 AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE, NÃO PRECISA RESOLVER POR OUTER JOIN 305 AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT ID, ULT_NOME, CARGO FROM EMPREGADO WHERE ID_GERENTE IS NULL 306 AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES 307 AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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 308 QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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 309 QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G , EMPREGADO S WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL 310 AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 07- Sql Parte 5 Aprender os como construir subconsulta Conhecer os operadores de conjunto Modelo de Dados 312 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 313 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, 314 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL Projetando Colunas 315 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI 316 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI 317 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL 318 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO 319 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO 320 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 321 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 322 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 (só em consulta externa) 323 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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. 324 SUBCONSULTA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS EMPREGADOS DO DEPARTAMENTO DE VENDAS 325 SUBCONSULTA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 326 SUBCONSULTA EMPREGADOS DO DEPARTAMENTO DE VENDAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM EMPREGADO WHERE ID_DEPTO = 20 327 SUBCONSULTA EMPREGADOS DO DEPARTAMENTO DE VENDAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS ESTE COMANDO PRODUZ O RESULTADO 20 QUE É UTILIZADO NO COMANDO EXTERNO 328 SUBCONSULTA IMPORTANTE: Parêntesis () . LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS EMPREGADOS QUE GANHAM MAIS QUE O SALÁRIO MÉDIO DA EMPRESA 329 SUBCONSULTA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 330 SUBCONSULTA SALÁRIO MÉDIO DA EMPRESA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM EMPREGADO WHERE SALARIO > ( SELECT AVG (SALARIO) FROM EMPREGADO) 331 SUBCONSULTA EMPREGADOS QUE GANHAM MAIS QUE O SALÁRIO MÉDIO DA EMPRESA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALÁRIO DIFERENTE DOS VENDEDORES 332 Uma subconsulta multilinhas é aquela que pode retornar à consulta principal mais que uma linha de dados para efeito de substituição. Isto, por conseguinte, implica numa construção ligeiramente diferente a nível de operadores, pois estes têm que ser capazes de manipular um conjunto (lista) com mais de um elemento. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS 333 SALÁRIO DOS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILNHAS 334 EMPREGADOS QUE GANHAM SALÁRIO DIFERENTE DOS VENDEDORES 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 335 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILNHAS 336 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALARIO MAIORES QUE TODOS OS VENDEDORES 337 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS 338 SALARIO DOS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS SELECT * FROM EMPREGADO WHERE SALARIO > ALL ( SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') 339 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS EMPREGADOS QUE GANHAM SALARIO MAIORES QUE ALGUM VENDEDOR 340 Ou seja, maior do que o VENDEDOR que ganha menos LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS 341 SALARIO DOS VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - MULTILINHAS SELECT * FROM EMPREGADO WHERE SALARIO > ANY ( SELECT SALARIO FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR') 342 EMPREGADOS QUE GANHAM SALARIO MAIORES QUE ALGUM 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) 343 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 344 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - HAVING DEPARTAMENTOS COM MEDIA SALARIAL MAIOR QUE MEDIA SALARIAL DA EMPRESA 345 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) 346 DEPARTAMENTOS COM MEDIA SALARIAL MAIOR QUE MEDIA SALARIAL DA EMPRESA 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 347 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 348 ID, ULT_NOME, SALARIO E ID_DEPTO DO EMPREGADO E MEDIA SALARIAL DE SEU DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - CORRELATA As subconsultas que foram vistas até agora nos exemplos podem ser avaliadas uma vez só e depois substituídas no corpo da consulta principal. Já uma subconsulta correlata [correlated subquery] depende dos valores da consulta principal onde ela está alinhada, por isso deve ser avaliada uma vez para cada linha do resultado externo. Por exemplo, desejamos saber quais empregados ganham mais que a média salarial de seu departamento. A consulta abaixo nos dá este resultado: SELECT * FROM EMPREGADO E WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPREGADO I WHERE ID_DEPTO = E.ID_DEPTO) 349 Essa é uma subconsulta correlata porque ela faz referência a uma tabela da consulta mais externa. A subconsulta é avaliada repetidas vezes, uma para cada linha da retornada pela consulta externa. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA - CORRELATA EMPREGADOS QUE GANHAM MAIS QUE A MEDIA SALARIAL DE SEU DEPARTAMENTO 350 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) 351 EMPREGADOS QUE GANHAM MAIS QUE A MEDIA SALARIAL DE SEU DEPARTAMENTO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA – TESTE EXISTENCIA 352 Um teste de existência é uma condição que envolve a palavra EXISTS e uma subconsulta. A condição é verdadeira se a subconsulta retorna alguma linha e é falsa se ela retorna zero linha. Por exemplo, para saber quais os departamentos que possuem funcionários cujo cargo é igual a ‘Vendedor’ execute o seguinte comando: SELECT * FROM DEPARTAMENTO E WHERE EXISTS (SELECT * FROM EMPREGADO I WHERE E.ID = I.ID_DEPTO AND UPPER(I.CARGO) = 'VENDEDOR') O resultado da subconsulta não importa, pois está apenas sendo testada a existência de um resultado. Nesse caso, a lista de colunas é sempre um asterisco (*). LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SUBCONSULTA – TESTE EXISTENCIA DEPARTAMENTOS QUE POSSUEM VENDEDORES 353 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM DEPARTAMENTO E WHERE EXISTS (SELECT * FROM EMPREGADO I WHERE E.ID = I.ID_DEPTO AND UPPER(I.CARGO) = 'VENDEDOR') 354 SUBCONSULTA – TESTE EXISTENCIA DEPARTAMENTOS QUE POSSUEM VENDEDORES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO 355 Há também o UNION ALL No Oracle. Em outros é EXCEPT. 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 356 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. 357 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' 358 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL RESULTADO EQUIVALENTE A FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN COMANDO EQUIVALENTE A LEFT 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 A RIGHT 359 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. 360 SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20) UNION ALL SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR' 5 e 6 se repetem. Diferente do UNION, onde repetições são eliminadas. 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 elas. 361 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS OPERADORES DE CONJUNTO - INTERSECT 20 E 362 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. 363 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' 364 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 365 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 08 - Sql Parte 6 Aprender a criar Visões, Indices e Sequences Modelo de Dados 367 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES (VIEWS) 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. 368 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 369 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 370 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CREATE VIEW EMP_RESUMO AS SELECT ID, PRIM_NOME, ULT_NOME, CARGO FROM EMPREGADO 371 VISÕES - CRIAÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA SELECT * FROM EMP_RESUMO 372 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 373 • Com uma VIEW simples será possível executarmos comandos INSERT, UPDATE e DELETE (além do SELECT). • A manipulação dos dados através de uma VIEW não desabilita as constraints das tabelas as quais os mesmos se referem. • Cada coluna definida para VIEWs deve ter um nome de coluna válido. • Caso seja uma fórmula, deve possuir um alias. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES – MANIPULANDO DADOS INSERT INTO EMP_RESUMO VALUES ( 10, ‘ALBERTO’,’RODRIGUES’, ‘ALMOXARIFE’) 374 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 375 VISÕES – MANIPULANDO DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Vamos agora criar uma visão complexa, desejamos criar um visão com o id, nome completo e cargo do empregado e nome do departamento onde ele trabalha 376 VISÕES - TIPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 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 377 VISÕES - TIPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SELECT * FROM EMP_DEP USUARIO PENSA QUE É UMA TABELA 378 VISÕES - TIPOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT INTO EMP_DEP VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) 379 VISÕES - TIPOS Não é permitido SELECT, INSERT ou DELETE em VISÕES COMPLEXAS. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - WITH READ ONLY 380 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA INSERT INTO EMP_RESUMO VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) 381 Não é permitido SELECT, INSERT ou DELETE em VISÕES COM READ ONLY. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO 382 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO DROP VIEW EMP_DEP 383 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES 384 O Oracle possui internamente uma máquina geradora de números seqüenciais que pode perfeitamente ser usado para produzir números únicos, consecutivos e incrementados conforme determinado. A esses números chamamos de Sequences e são muito utilizados para fazer o papel de Chaves Primárias em tabelas onde não existe uma coluna mais apropriada, ou qualquer outra aplicação que haja necessidade de números únicos. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 385 SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS CREATE SEQUENCE ID_CLI_SEQ INCREMENT BY 3 START WITH 10 MAXVALUE 1000 386 SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - NEXTVAL 387 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - CURRVAL 388 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INSERT INTO CLIENTE VALUES (ID_CLI_SEQ.NEXTVAL , 'Casa Tombo', 6) VAI INSERIR 16 NO ID 389 SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 390 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. 391 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 . 392 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 . 393 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. 394 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO Alter Sequence ID_CLI_SEQ INCREMENT BY 5 395 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO 396 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ELIMANDO DROP SEQUENCE ID_CLI_SEQ 397 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES – FUNDAMENTAÇÃO (pág 106 do livro) 398 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - FUNDAMENTAÇÃO 399 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - PRIMARIO 400 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES – CLUSTERING 401 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO 402 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO 403 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster 404 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster 405 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 406 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 407 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso 408 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso 409 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS 410 Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível 411 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível 412 80 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 413 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap 414 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 415 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap 416 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. 417 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle 418 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle CREATE INDEX IND_VEND ON CLIENTE(VENDEDOR) 419 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle 420 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices – Oracle - DROP 421 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle 422 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 09 - Transações 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.. 424 LINGUAGEM SQL 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 TRANSAÇÃO COMANDO UPDATE TABELA TODA TRANSAÇÃO TERMINA INSUCESSO (ROLLBACK) SUCESSO (COMMIT) IMAGEM ANTIGA NOVA IMAGEM 21 de novembro de 2017 MODELO RELACIONAL 426 Com commit ou rollback. 426 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 427 PROPRIEDADES DAS TRANSAÇÕES - ATOMICIDADE - CONSISTÊNCIA - ISOLAMENTO -DURABILIDADE A C I D 20 de novembro de 2017 MODELO RELACIONAL 428 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 20 de novembro de 2017 MODELO RELACIONAL 429 GRAUS DE CONSISTENCIA GRAU 3 - OUTRAS
Compartilhar