Consultas SQL no Corpore RM: Curso Básico
Consultas SQL no Corpore RM: Curso Básico
03 -------------------------------------------------------------------------------------INDICE
INDICE.......................................................................................................................................................... 1 APRESENTAO............................................................................................................................................ 2 OBJETIVOS DO CURSO.................................................................................................................................... 2 CONTEDO PROGRAMTICO:........................................................................................................................... 2 EXPECTATIVAS DO CURSO............................................................................................................................... 2 BANCOS DE DADOS E SGBDS.................................................................................................................... 2 TABELAS........................................................................................................................................................ 3 CHAVES PRIMRIAS........................................................................................................................................ 4 CHAVES ESTRANGEIRAS................................................................................................................................. 4 SISTEMAS GERENCIADORES DE BANCOS DE DADOS UTILIZADOS ATUALMENTE NA RM (RELACIONAIS E TECNOLOGIA CLIENTE/SERVIDOR).......................................................................................... 5 BANCOS DE DADOS CLIENTE/SERVIDOR.......................................................................................................... 5 DISTRIBUIO DOS SOFWARES NA REDE ( CORPORERM )................................................................................6 NOMENCLATURA DAS TABELAS DO CORPORE RM.......................................................................................... 6 TIPOS DE DADOS............................................................................................................................................ 7 RELACIONAMENTO ENTRE AS TABELAS DO CORPORE RM ............................................................................7 MANIPULAO DOS BANCOS DE DADOS - PADRO SQL (STRUCTURED QUERY LANGUAGE)........9 FAMLIAS DE COMANDOS SQL........................................................................................................................ 9 O COMANDO SELECT ................................................................................................................................... 9 EXERCCIOS DIVERSOS - PARTE I.................................................................................................................. 17 CONSULTAS COM JUNO ( DUAS OU MAIS TABELAS INNER JOIN, LIGAO )..............................................20 EXERCCIOS - PARTE II.................................................................................................................................. 21 OUTER JOINS............................................................................................................................................... 25 EXERCCIOS - PARTE III................................................................................................................................. 26 EXERCCIO 1................................................................................................................................................. 27 EXERCCIO 2................................................................................................................................................. 28 EXERCCIO 3................................................................................................................................................. 29 EXERCCIO 4................................................................................................................................................. 30 PARMETROS DO RM BIS............................................................................................................................ 33 CUBO DE DECISO........................................................................................................................................ 33 ASSISTENTE DE CRIACAO DE CUBOS DO RM BIS...........................................................................................37
Contedo programtico:
- Conceito de Banco de Dados Relacional - O ambiente Cliente/Servidor (Redes X Bancos de Dados) - Diagrama de entidades e relacionamentos - Relacionamento entre tabelas - A distribuio dos aplicativos CorporeRM na rede. - Comandos de Manipulao de Dados ( A famlia de comandos ) SQL Bsico - O comando Select ( Consultas Simples e com Juno ) - Exerccios
Expectativas do Curso
Ao final do curso, espera-se que o participante esteja apto a executar consultas com a utilizao principalmente da clusula SELECT, configurar o BDE para utilizao com os aplicativos do Corpore RM.
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Um Sistema de Gerenciador de Banco de Dados (SGBD) consiste numa coleo de dados interrelacionados e um conjunto de programas para acessar esses dados. A coleo de dados que geralmente referenciada como o banco de dados. O principal objetivo de um SGBD proporcionar um ambiente, conveniente e eficiente, para retirar e armazenar informaes no banco de dados. O gerenciador de banco de dados o mdulo de programa que prov a interface entre os dados armazenados no banco de dados e os programas de aplicao e consultas submetidas ao sistema. O gerenciador responsvel pela interao com o sistema operacional para gerenciamento do acesso aos arquivos, para garantia de integridade e segurana, pelo backup e recuperao, e pelo controle de concorrncia. Existem diversos modelos de banco de dados, entre eles podemos citar: modelo de rede modelo hierrquico modelo relacional modelo orientado a objetos Entre este modelos vamos destacar o modelo relacional, que envolve o conceito de armazenar dados em um nico objeto centralizador, estruturado internamente em tabelas e colunas que se relacionam entre si atravs de chaves primrias e estrangeiras, que so as colunas (campos) em comum entre as tabelas. Citemos alguns Sistemas Gerenciadores de Banco de Dados Relacionais (SGBDR) existentes no mercado: MS-SQL Server, Oracle, Sybase, Informix, Progress, DB2, etc.; os quais podem gerenciar todas as suas informaes a partir de um nico arquivo de banco de dados.
Tabelas
Unidade bsica de armazenamento em um banco de dados relacional. Uma tabela composta de linhas e colunas. Tabelas tm nomes nicos So compostas por linhas e colunas Linhas e colunas podem estar em qualquer ordem Preferencialmente devem possuir um identificador nico: chave primria (Primary Key)
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Colunas: so tambm chamadas atributos
Funcionrios
chapa nome endereo telefone ...
. . .. .. ... .
Exemplos de tabelas : gcoligada (armazena informaes referentes s empresas coligadas) gfilial (armazena informaes referentes s filiais das empresas coligadas) psecao (armazena informaes referentes s sees das filiais das empresas coligadas) pfunc (armazena informaes referentes aos funcionrios das empresas )
Chaves Primrias
Uma chave primria (primary key) um campo ou conjunto de campos que identifica de forma nica um registro de uma tabela. Ou seja, se um campo chave primria de uma tabela, cada registro deve possuir um valor diferente para este campo. Normalmente, usamos como chave primria campos de identificadores, como cdigo da coligada (codcoligada), cdigo da filial (codfilial), etc. As chaves primrias podem ser compostas por mais de uma coluna.
Chaves Estrangeiras
Uma chave estrangeira (foreign key) um campo ou conjunto de campos que correspondem a chave primria de uma outra tabela. A chave estrangeira usada principalmente para relacionamento entre tabelas. Podemos dizer: O conjunto das colunas codcoligada, nomefantasia e nome formam a tabela gcoligada. O conjunto das tabelas gcoligada, gfilial, psecao, pfunc, pcargo, pfuncao, pcodsituacao, psindic e gbanco formam um Banco de Dados Relacional. O conjunto de todas as tabelas utilizadas por todos os nossos aplicativos for windows formam o banco de dados CorporeRM.
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Sistemas Gerenciadores de Bancos de Dados utilizados atualmente na RM (Relacionais e Tecnologia Cliente/Servidor)
MS SQL SERVER 6.5/7.0/2000 ORACLE 7.3/8.0/8i MSDE
Apesar do aparente aumento de produtividade, a centralizao dos bancos de dados nos servidores trouxe inmeros problemas, entre eles o crescimento no trfego da rede. Isto porque, quando determinada mquina queria realizar uma pesquisa em uma tabela de um banco de dados, toda a tabela era transferida para a mquina cliente, e l a pesquisa era feita. Isto piorava enormemente a performance da rede, principalmente quando a consulta ao banco de dados era feita por varias mquinas simultaneamente.
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Com a difuso dos bancos de dados cliente/servidor, este problema foi superado. Isto porque ao realizar um pesquisa em uma tabela de um banco de dados cliente/servidor, apenas o resultado da pesquisa transferido para a mquina cliente, o que reduz o trfego na rede. Comandos so enviados ao servidor de banco de dados e resultados so retornados estao/cliente. Os nossos aplicativos do CorporeRM acessam o servidor atravs do BDE , que retorna apenas a consulta ou o resultado final para as estaes cliente.
Servidor SGDBR, Base de Dados, BDE e Aplicativos Obs: obrigatrio a instalao do Client para o MS SQL Server e do Service Pack 5 do SQL e tambm o client do Oracle No Ambiente Local: Estao Local - Instala-se o SGBDR, a Base de Dados, o BDE e os Aplicativos
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------U xxxxx Classis Escola Faculdade - Gesto Escolar
Tipos de Dados
Os tipos de dados abaixo relacionados so tipos de dados suportados pelos bancos de dados relacionais, geralmente usados no sistema: Char (n) : Armazena at 255 caracteres. O parmetro n define o nmero de caracteres a serem alocados. Este nmero de caracteres ser sempre usado independente do tamanho dos dados entrados. Varchar (n) : Armazena at 255 caracteres. Ao contrrio de CHAR, o tipo de dado VARCHAR s armazena os dados efetivamente entrados, utilizando, portanto, menor espao em disco. Datetime : Armazena datas. O padro MM-DD-YYYY HH:MMAM. Para entrar somente horas, o valor precisa conter um sinal de dois pontos(:) ou a expresso AM ou PM. Sempre coloque valores deste tipo entre aspas simples. Numeric(p,s): Armazena nmeros exatos entre 1038 1 a 1038 1. Os parmetros p e s definem a preciso. Int: Armazena nmeros inteiros, que podem variar de [Link] a [Link]. Smallint: Armazena nmeros com valores inteiros, que podem variar de 32.768 a 32.767. Text : Tipo de dado de comprimento varivel, que armazena caracteres. Deve ser utilizado entre aspas simples. Suporta uma grande quantidade de armazenamento de textos. Image: Tipo de dado de comprimento varivel, que armazena dados de tipo binrio. Deve ser precedido de 0x. Ex.: Fotos, mapas, imagens digitalizadas. Obs: Campos date e texto ( char, varchar, etc ) devem sempre aparecer entre aspas simples em expresses.
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------7) [Link] 8) [Link] [Link] [Link] [Link] [Link] [Link] [Link] [Link]
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------MANIPULAO DOS BANCOS DE DADOS - PADRO SQL (Structured Query Language).
SQL - linguagem estruturada de consulta e manipulao dos elementos no banco de dados, um padro internacional inicialmente desenvolvido pela IBM, agora coordenado pela ANSI-standard, sendo que sua ltima publicao foi em 1992. Caractersticas importantes: Padronizada para os bancos de dados relacionais. Cada comando uma descrio do que se deseja obter; quem executa o comando o gerenciador do banco de dados.
A famlia de comandos DML est associada diretamente ao dia-a-dia do Tcnico de Suporte, principalmente, o comando select. Tendo em vista que os aplicativos do CorporeRM tm a funo de inserir dados (insert), deletar dados (delete) e modificar dados (update), no aconselhvel executarmos tais procedimentos atravs do software do banco de dados. No entanto, temos total liberdade e dever de aprofundarmos na explorao dos recursos que o comando select nos oferece para extrao de dados, convertendo-os em uma rica fonte de consulta.
O comando SELECT
Seleciona linhas e colunas de uma tabela Estrutura do comando SELECT, cada parte do comando chamado de Clusula, assim aprenderemos a utilizar os recursos de cada uma: Clusula SELECT :Lista de colunas para visualizao Clusula FROM : Tabela(s) de procura Clusula WHERE : Lista de condies Clusula GROUP BY : Colunas para serem agregadas Clusula HAVING : Especifica as Condies com uso de agrupamento (funes) Clusula ORDER BY : Lista de coluna(s) para ordenao [ASC (ascendente)| DESC (descendente)
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Para efeitos didticos iremos dividir o comando select em dois tipos de consultas : 1) Consultas simples ( em uma nica tabela ). 2) Consultas com juno ( em duas ou mais tabelas ).
Clusula SELECT
Sintaxe: SELECT Lista de Colunas Lista de Colunas: a lista de colunas (Campos) a ser selecionada na tabela separado por vrgula. Caso voc deseje ver todos os campos da tabelas use *. Argumentos: DISTINCT : Define que sero vistos somentes os campos com valores distintos, ou seja sem repetio. ALL - Define que todos os registros sero selecionados, este argumento o default, assim sendo no necessrio escrever. Clusula FROM : Tabela(s) com os dados a serem pesquisados
Lista de Tabelas: a lista de tabelas cujos registros sero selecionados. Se quiser selecionar mais de uma tabela ou mais de um campo, separe-os por vrgula. Exemplos: SELECT NOME, SALARIO FROM PFUNC
nome salario ----------------------------------------------------------------------------ITAMAR MENDES DA SILVEIRA JOAO DA SILVA JORDAM MARIA CONCEICAO DE ASSIS ADALBERTO DE JESUS LIMA ALESSANDRA LOPES DE ABREU 1200.00 500.00 1939.08 580.00 686.60
10
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Algumas sentenas sero muito utilizadas para localizao das tabelas, colunas do CorporeRM. Exemplos: SELECT NOMESISTEMA, CODSISTEMA FROM GSISTEMA SELECT * FROM GCAMPOS Lista todas as tabelas, colunas e descrio de cada uma. SELECT * FROM GCAMPOS WHERE DESCRICAO = FUNCIONARIOS SELECT * FROM GCAMPOS WHERE TABELA = PFUNC AND DESCRICAO = SALARIO SELECT * FROM GLINKSREL Lista todos os relacionamentos das tabelas nos relatrios. SP_HELP PFUNC Lista todas as informaes da tabela pfunc. O nome das colunas, quais so as chaves primrias, chaves estrangeiras, tipos de dados, ndices. Exemplos de diversas consultas retirando resultados do aplicativo RM Labore. SELECT CODSITUACAO FROM PFUNC Lista todos cdigos de situao existentes por funcionrio (com repetio) SELECT ALL CODSITUACAO FROM PFUNC Lista todos cdigos de situao existentes por funcionrio (com repetio) SELECT DISTINCT CODSITUACAO FROM PFUNC Lista todos cdigos de situao existentes, por codsituacao ( sem repetio ). SELECT * FROM PFUNC Lista todos os registros e colunas da tabela pfunc (funcionrios) SELECT NOME, SALARIO FROM PFUNC Lista todos os registros da tabela pfunc e somente as colunas com os nomes e salrios dos funcionrios. SELECT NOME, DATADEMISSAO FROM PFUNC WHERE DATADEMISSAO IS NOT NULL Lista todos os nomes de funcionrios que tenha data de demisso diferente de nula (preenchida).
Funes que retornam resultados baseados em grupos de linhas. Por padro todas as linhas de uma tabela so tratadas como um grupo. Com exceo da funo COUNT todas ignoram valores nulos, at o COUNT ignora em algumas formas de aplicao, as funes que veremos so :
Treinamento RM: Caminho certo para o sucesso profissional. Reproduo Proibida
11
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------1. COUNT 3. MAX 5. SUM 2. AVG 4. MIN
OBS:. Usando o DISTINCT, a funo s atua nos valores diferentes. 1. COUNT: Retorna o nmero de itens de um grupo; Ex.: SELECT COUNT(*) FROM PFUNC Lista a quantidade de registros (qtde de funcionrios) existentes na tabela. Ex.: SELECT COUNT(distinct salario ) FROM PFUNC Lista a quantidade de funcionrios da tabela PFUNC que no possuem salrios iguais. 2. SUM: Soma todos os valores da coluna selecionada, os valores nulos so ignorados. Ex: SELECT SUM(SALARIO) FROM PFUNC Lista o total (soma) de salrios de todos os funcionrios da tabela. Ex: SELECT SUM(DISTINCT SALARIO) FROM PFUNC Lista o total (soma) de salrios no repetidos de todos os funcionrios da tabela. 3. AVG: Calcula a mdia aritmtica dos valores de uma coluna, os valores nulos so ignorados Ex.: SELECT AVG(SALARIO) FROM PFUNC Lista a mdia de salrios. Primeiramente ele soma os salrios de cada funcionrio e depois divide o total encontrado pela quantidade de registros. Ex.: SELECT AVG(DISTINCT SALARIO) FROM PFUNC Lista a mdia dos salrios no repetidos da tabela. 4. MAX: Lista o maior valor de uma coluna. Ex: SELECT MAX(SALARIO) FROM PFUNC Lista o maior salrio da tabela. 5. MIN: Lista o menor valor de uma coluna, valor Nulo ignorado. Ex: SELECT MIN(SALARIO) FROM PFUNC Lista o menor salrio da tabela.
12
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 ------------------------------------------------------------------------------------- Clusula WHERE
WHERE: Determina uma condio em que os registros devem satisfazer para serem selecionadas em uma ou mais tabelas. Ex.: SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO <=500.00 Lista todos os nomes e salrios de funcionrios com salrio menor ou igual 500,00 reais
Operadores
H diversos tipos de operadores. Quanto mais de um tipo de operador est presente em uma expresso, eles so avaliados segundo uma ordem de precedncia, descrita na lista a seguir: 1. 2. 3. 4. 5. 6. 7. (+) Positivo, - Negativo, ~ NOT (*)Multiplicao, ( / ) Diviso, (%) Mdulo (+) ADD e Concatenao, (-) Subtrao = , <, >, =>, <=,!=, !>,!< (Comparao) NOT AND ALL, ANY, BETWEEN, IN, LIKE, OR SOME
Alguns exemplos: 1. (+) ADD: Ex. SELECT NOME, SALARIO + 400 FROM PFUNC Seleciona o nome dos funcionrios, adicionando 400 reais no salrio de todos. 2. CONCATENAO: Ex. SELECT NOME, RUA+ ','+ NUMERO FROM PPESSOA Seleciona o nome dos funcionrios, unindo as colunas Rua e Nmero. 3. DIVISO Ex. SELECT NOME, SALARIO / 20 FROM PFUNC Seleciona o nome e o salrio dos funcionrios dividido por 20.
13
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------A Tabela abaixo mostra os operadores de aceitos em comparao: Igualdade Desigualdade Maior que Menor que Maior ou igual a Menor ou igual a No menor que No maior que No igual a COMPARAO = <> > < >= <= !> !< !=
Igual a = SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO = 580 Lista todos os nomes e salrios de funcionrios com salrio igual a 580,00 Reais Diferente de <> SELECT NOME, CODSECAO FROM PFUNC WHERE CODSECAO <> 01.01 Lista todos os nomes e cdigos de seo dos funcionrios exceto da seo 01.01 Maior que > SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO >500 Lista todos os nomes e salrios de funcionrios com salrio maior que R$ 500,00. Maior ou igual a >= SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO >=500 Lista todos os nomes e salrios de funcionrios com salrio maior ou igual a 500,00 Reais Menor que < SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO <500 Lista todos os nomes e salrios de funcionrios com salrio menor que R$ 500,00. Menor ou igual a <= SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO <=500 Lista todos os nomes e salrios de funcionrios com salrio menor ou igual a 500,00 Reais IN : Compara um valor com uma lista de valores. SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO IN (500, 700, 800, 900) Lista todos os nomes e salrios de funcionrios com salrios iguais a 500, 700, 800 e 900 Reais. LIKE : Permite procurar strings que atendam determinado padro de pesquisa. %(Percentual) Substitui por um ou mais caracteres. _(Underscore) Substitui por um nico caracter. SELECT NOME FROM PFUNC WHERE NOME LIKE M% Lista todos os nomes de funcionrios iniciados com a letra M. SELECT NOME FROM PFUNC WHERE NOME LIKE %O
Treinamento RM: Caminho certo para o sucesso profissional. Reproduo Proibida
14
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Lista todos os nomes de funcionrios terminados com a letra O. SELECT NOME FROM PFUNC WHERE NOME LIKE J_A% Lista todos os nomes de funcionrios iniciados com a letra J, 1 caracter qualquer letra A e terminados com quaisquer combinaes de nomes. SELECT NOME FROM PFUNC WHERE NOME NOT LIKE MARIA_% Lista todos os nomes de funcionrios exceto as MARIAS. IS NULL : Testa valores que so nulos. seguido da
SELECT NOME, DATADEMISSAO FROM PFUNC WHERE DATADEMISSAO IS NULL Lista os nomes de funcionrios que tenham data de demisso nula (sem dado). NOT : Inverte o resultado de uma condio.
SELECT NOME, DATADEMISSAO FROM PFUNC WHERE DATADEMISSAO IS NOT NULL Podemos negar expresses com os seguintes operadores : <>, NOT , NOT BETWEEN, IS NOT NULL, NOT EXISTS, NOT LIKE, NOT IN.
Clusula GROUP BY :
GROUP BY: Agrupa linhas de uma tabela dentro de grupos menores. utilizada em conjunto com as funes de grupo. Ex.: SELECT CODSECAO, AVG(SALARIO) FROM PFUNC GROUP BY CODSECAO Lista a mdia salarial agrupadas por seo.
Clusula ORDER BY :
ORDER BY: Define a ordem das linhas do resultado de uma pesquisa definida. Deve ser a ltima da clusula SELECT. Utiliza-se ASC (ordem crescente- default) e DESC (ordem decrescente). O padro e ASC.
15
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Ordem default: 1) Valores numricos menores 2) Valores de datas mais antigas 3) Caracteres em ordem alfabtica Para alterar a ordem default: Colocar DESC depois do nome da coluna na clusula ORDER BY. OBS: Os valores nulos so mostrados por ltimo para seqncias ascendentes. Ex: SELECT NOME, SALARIO FROM PFUNC ORDER BY NOME ASC Lista todos os registros da tabela pfunc e somente as colunas com os nomes (em ordem alfabtica) e salrios dos funcionrios. Ex.: SELECT NOME, SALARIO FROM PFUNC ORDER BY NOME DESC Lista todos os registros da tabela pfunc e somente as colunas com os nomes (em ordem decrescente) e salrios dos funcionrios.
Clusula HAVING :
HAVING: Usada para selecionar os grupos que sero mostrados com base nas informaes das funes de grupo. Ex: SELECT [Link],SUM(SALARIO),MAX(SALARIO), COUNT(CHAPA) FROM PSECAO,PFUNC WHERE [Link]=[Link] GROUP BY [Link] HAVING MIN(SALARIO)>1000 Mostra o cdigo da seo, a soma dos salrios, o maior salrio e o nmero de funcionrios onde o menor salrio seja superior a 1000.
Clusula UNION:
UNION: Usada para unir duas ou mais consultas (select). Ex.: SELECT CHAPA, NOME, LOCALNASCIMENTO FROM PFDEPEND WHERE LOCALNASCIMENTO='BETIM' UNION SELECT CHAPA, NOME, LOCALNASCIMENTO FROM PFDEPEND WHERE LOCALNASCIMENTO='SALVADOR' Lista o nome de todos os dependentes dos funcionrios que nasceram em Betim e todos os nascidos em Salvador. Ex. SELECT CHAPA, NOME, LOCALNASCIMENTO FROM PFDEPEND WHERE LOCALNASCIMENTO='BETIM' OR LOCALNASCIMENTO='SALVADOR' Essa sentena tambm ir trazer o mesmo resultado, porm utilizando a opo: OR.
16
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 ------------------------------------------------------------------------------------- Alias de Coluna (Apelidos)
O Alias de coluna serve para nomear (apelidar) uma coluna em uma determinada consulta. muito til para utilizao de nomes mais sujestivos no momento da visualizao da consulta. Ex: SELECT NOME, DATAADMISSAO ADMISSAO FROM PFUNC
Passagem de Parmetros
Permite ao usurio informar o valor de uma condio no momento da execuo da consulta, sem que se altere a consulta. Ex: SELECT CHAPA, NOME , DATAADMISSAO FROM PFUNC WHERE CHAPA =:CHAPA O parmetro poder ser utilizado nos relatrios, juntamente com a insero da opo Parmetros ou Frmula.
2) Selecione os nomes e salrios (estes em ordem decrescente) dos funcionrios cujos salrios no estejam entre 400,00 e 500,00 Reais, que foram admitidos em Janeiro(jan), que trabalham na filial 2 e que possui a funo 00012.
17
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------4) Liste os nomes e os salrios dos funcionrios da coligada 1, cujo nome contenha a letra M, o salrio seja superior a 500.
5) Selecione os nomes, as chapas, os salrios e a data de admisso dos funcionrios que no ganham entre 400,00 e 500,00 Reais, que foram admitidos em Junho(jun) e que trabalham na filial 1.
8) Mostre os cdigos das sees e a mdia salarial das mesmas, mas somente das que possuem a mdia salarial maior que 500.
10) Informe a filial,o nmero de funcionrios de cada filial, a soma dos salrios, o maior salrio, o menor [Link] as colunas: Filial, Total,Maior e Menor.
18
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------11) Quantos funcionrios existem para cada sindicato na empresa.
12) Selecione o cdigo da seo do funcionrio que possuam mais de 02 funcionrios o cdigo da situao seja A.
13) Informe os nomes dos funcionrios que trabalham na seo 01.01, que possui a funo 00011 ou 00012 e que ganham salrio maior que 100 em ordem decrescente.
14) Selecione o nome e o cdigo da coligada dos funcionrios que foram admitidos em janeiro ou que o nome comea com a letra J.
19
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Consultas com juno ( duas ou mais tabelas Inner Join, ligao )
A sintaxe praticamente a mesma. A diferena est na utilizao da clusula WHERE necessria para se fazer a ligao entre as tabelas. imprensidvel que as colunas de ligao sejam realmente idnticas (contedo). na juno de tabelas em que a teoria dos bancos de dados relacionais se apoiam para se diferenciar dos no-relacionais. A ligao entre tabelas necessria sempre for preciso selecionar um valor de uma coluna, ou de uma tabela Pai ou de uma tabela filha em relao a tabela principal de sua sentena SQL. Exemplo: SELECT [Link], [Link] FROM GFILIAL, PFUNC WHERE [Link]=[Link] AND [Link]=[Link] Neste exemplo, a tabela principal a PFUNC (funcionrios da empresa) e no temos o nome da filial fazendo parte de sua estrutura. O nome da filial est na tabela GFILIAL ( Filiais da empresa ).Sendo assim, ligamos as colunas em que os contedos sejam idnticos sendo que sempre fazem parte das chaves primrias e estrangeiras das tabelas envolvidas. A tabela PFUNC filha da tabela GFILIAL pois, a coluna CODFILIAL chave primria em GFILIAL e, consequentemente, chave estrangeira em PFUNC. Exemplos: SELECT [Link], [Link], [Link] FROM GCOLIGADA, PFUNC WHERE [Link]=[Link] Lista o nome da coligada e as chapas dos funcionrios. SELECT [Link], [Link], [Link] FROM PSECAO, PFUNC WHERE [Link]=[Link] AND [Link]=[Link] Lista a descrio da seo e as chapas dos funcionrios. SELECT [Link], [Link], [Link] FROM GBANCO, PFUNC WHERE [Link]=[Link] Lista o nome do banco de pagamento e as chapas dos funcionrios. SELECT [Link], [Link], [Link] FROM GBANCO, PFUNC WHERE [Link]=[Link] Lista o nome do banco de FGTS e as chapas dos funcionrios
20
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------SELECT [Link], [Link], [Link] FROM PCODSITUACAO, PFUNC WHERE [Link]=[Link] AND [Link] LIKE 'AF%' Lista o nome da situao ( somente as que contem a descrio afastamento ) e as chapas dos funcionrios. SELECT [Link], [Link], [Link] FROM PFUNCAO, PFUNC WHERE [Link]=[Link] AND [Link]=[Link] Lista o nome da funo e as chapas dos funcionrios SELECT [Link], [Link], [Link] FROM PCARGO, PFUNC, PFUNCAO WHERE [Link]=[Link] AND [Link]=[Link] AND [Link]=[Link] AND [Link]=[Link] Lista o nome do cargo e as chapas dos funcionrios. Observe que no existe ligao direta da tabela pcargo com pfunc. Foi necessrio utilizarmos a tabela pfuncao para compor o resultado.
O Alias de tabela serve para nomear (apelidar) uma tabela em uma determinada consulta. Ex: SELECT [Link], [Link] FROM PFUNC P, GFILIAL G WHERE [Link]=[Link] AND [Link]=[Link]
Exerccios - Parte II
1) Selecione os nomes dos funcionrios com o nome das sees que eles trabalham em ordem alfabtica das sees e ordem decrescente dos nomes.
2) Selecione os nomes e descrio da situao de todos os funcionrios que esto de frias sem repetio.
3) Selecione o nome da seo em ordem alfabtica e o nome dos funcionrios em ordem decrescente.
4) Selecione a chapa, o nome dos funcionrios e o nome das funes exercidas por cada um, em ordem crescente de nome da funo.
Treinamento RM: Caminho certo para o sucesso profissional. Reproduo Proibida
21
5) Liste o nome das sees que a mdia salarial seja maior ou igual a 1000 reais, e mostre qual essa mdia.
6) Selecione os nomes dos funcionrios os cargos deles, os nomes das sees da filial 1 em ordem de nome dos funcionrios.
7) Liste os cargos que possuem salrios mdia salarial entre 500 e 1500 reais, e mostre as mdias dos mesmos .
9) Mostre os Sindicatos, cuja a mdia salarial dos funcionrios seja maior que 500.
10) Mostre os nomes e o salrio dos funcionrios que trabalham na coligada RM SISTEMAS LTDA e que tenham um salrio maior que 1.000 em ordem decrescente de salrio.
11) Quais os nomes dos bancos de pagamento utilizados pelos funcionrios que possuem o cargo de Gerencia, sem repetio..
12) Selecione o cdigo da filial, a quantidade de funcionrios e a mdia salarial dos funcionrios que tem a funo Analista de Sistemas.
Treinamento RM: Caminho certo para o sucesso profissional. Reproduo Proibida
22
13) Mostre o nome e a data de admisso de todos os funcionrios que possuem o cargo Auxiliar ou que trabalham na seo PDE - Depto Pesquisa e Desenvolvimento.
14) Mostre o total gasto em salrio pela empresa por filial, alm da mdia salarial de cada filial.
15)Selecione o nome dos funcionrios que tem o salrio superior a todos os funcionrios da seo COM Depto Comercial.
23
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------16) Encontre todos os nome dos funcionrios que comecem com a letra A mas que no trabalham na seo DST Suporte Tcnico.
17) Encontre todos os funcionrios que possuem o cargo Tcnico e que foram ganham mais que os funcionrios da filial 'RM Sistemas - Filial RJ'.
18) Mostre o cdigo da seo, a soma dos salrios, o maior salrio, o nmero de funcionrios e a mdia salarial onde o maior salrio seja inferior que a soma dos salrios da seo.
19) Informe quais so as sees que possuem 2 ou mais funcionrios em uma determinada funo em ordem decrescente de nome das sees..
24
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------20)Desafio: Selecione todas colunas de nomes/descries de origem relacionados com as colunas (foreign keys) da tabela pfunc (descritos no D.E.R exemplo) .
Outer Joins
As consultas feitas anteriormente so feitas com base em INNER JOINs, essas consultas desprezam, ou melhor, no listam as linhas que no tenham um dado correspondente na outra tabela, assim se eu vou relacionar a tabela de bancos e funcionrios, s viram os funcionrios que tenham pelo menos um banco cadastrado e os nomes dos bancos que tenham pelo menos um funcionrio cadastrado. A consultas com OUTER JOINS produzem resultados contendo as colunas selecionadas de cada linha em uma tabela mesmo que esta no tenha relao com um subconjunto de linhas de uma outra tabela. A sintaxe para uma consulta com OUTER JOIN : SELECT lista_colunas FROM <tabela_esquerda> { LEFT | RIGHT | FULL } [OUTER] JOIN <tabela_direita> [ ON <condies>] [WHERE <condies>] Assim, se eu utilizar o OUTER JOIN no exemplo acima, ele listar os bancos e os funcionrios independente de terem relao. A clusula LEFT, RIGHT e FULL determinar se qual tabelas ser listada na integra, ou se ambas no caso do FULL. necessrio especificar o tipo de juno (JOIN) a ser executado. Existem trs possibilidades: Um LEFT OUTER JOIN ou LEFT JOIN recupera todas as linhas da tabela esquerda da juno e recupera aquelas linhas da tabela direita que satisfazem as condies especificados na clusula ON. Um RIGHT OUTER JOIN ou RIGHT JOIN recupera todas as linhas da tabela direita da juno e recupera aquelas linhas da tabela esquerda que satisfazem as condies especificados na clusula ON. Um FULL OUTER JOIN ou FULL JOIN recupera todas as linhas de ambas as tabelas independentemente das condies especificadas na clusula ON. A utilizao de consultas com OUTER JOINS til quando queremos comparar todos os dados de uma tabela com o subconjunto dos dados relacionados na outra tabela. Exemplos: 1) SELECT [Link],[Link] FROM PFUNC P LEFT OUTER JOIN GBANCO B ON [Link]=[Link] Lista todos os nomes dos funcionrios e os nomes dos bancos de depsito de pagamento somente para aqueles que possuem contas de pagamento cadastradas.
25
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Nos SGBDs do ORACLE e SQL SERVER, temos outras maneiras de especificarmos um outer join na clusula WHERE, que utilizando o (+) e o * respectivamente. Vejamos como ficariam o exemplo um desta nova maneira: 1) SELECT [Link],[Link] FROM PFUNC P LEFT OUTER JOIN GBANCO B ON [Link]=[Link] Em Oracle: SELECT [Link],[Link] FROM PFUNC , GBANCO WHERE [Link] (+)= [Link] Em SQL Server SELECT [Link],[Link] FROM PFUNC , GBANCO WHERE [Link] *= [Link]
2) Listar os nomes dos funcionrios e os nomes de todos os sindicatos independente dele possuir funcionrio filiado ou no.
26
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------3) Liste os nomes, as chapas e os salrios dos funcionrios e a descrio da situao de todos os funcionrios.
4)Liste os nomes de todas as funes, e naquelas que possuem funcionrios, mostre o total de salrio gasto com cada uma em ordem salarial do maior para o menor.
EXERCCIOS GERAIS
Exerccio 1
1) O que um SGDB?
27
28
b) Listar o Nome dos funcionrios que possui o menor salrio e o nome do funcionrio que possui o maior salrio.
c) Listar o nome dos funcionrio que trabalham na seo que possui o maior salrio.
d) Listar o nome dos funcionrio que trabalham na seo que possui o menor salrio.
e) Listar o nome dos funcionrios da filial 1 ou 2 que possuem mdia salarial superior 500
2. Marque V ou F nas questes abaixo: a) Select * from pfunc ( ) esta consulta me mostra todos os funcionrios da tabela PFUNC, exclusivamente pelo uso do *. ( ) esta consulta me traz todos os campos da tabela pfunc exclusivamente pelo uso do *. ( ) esta consulta esta complemente errada no pode usar * sem a clusula HAVING. b) Select codsecao From Pfunc Where codcoligada = 1 and salario > 100 Group by codsecao Having max(salario) < 10000 and min(salario) >=200 Order by min(salario) ( ) Esta consulta est errada, porque no pode Ter a Clusula HAVING antes do GROUP BY. ( ) Esta consulta est errada , porque no se pode fazer mais de uma comparao na clusula HAVING. ( ) Esta consulta est certa e muito bem escrita, principalmente na parte que envolve a SubQuery . ( ) Esta consulta esta correta, o Having pede um GROUP BY, o mesmo est trazendo o campo certo agrupamento. 3. A consulta abaixo est correta? Se no por favor conserta-la no espao abaixo e indicar onde foram o (s) erros.
Treinamento RM: Caminho certo para o sucesso profissional. Reproduo Proibida
29
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------SELECT avg(salario), nome FROM pfunc, gfilial GROUP BY nome HAVING avg(salario)>1000
4. A consulta abaixo est correta? Se no por favor conserta-la no espao abaixo e indicar onde foram o (s) erros. SELECT count([Link]),[Link] FROM pfunc p ,pfuncao f WHERE [Link]=[Link] and [Link]=[Link] GROUP BY [Link] HAVING chapa like 0001% ORDER BY [Link]
Exerccio 4
1) Selecione os nomes dos funcionrios cujo nome da filial comece com a letra F.
2) Selecione os distintos cdigos dos cargos e a chapa dos funcionrios da coligada RM Sistemas.
4) Quais so os nomes das funces que possue a secao COM - Depto Comercial?
30
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------6) Selecione todos os nomes dos funcionrios exceto os que tm o nome comeando com a letra A.
N GFILIAL *Codcoligada -Smallint *Codfilial - Smallint Nome - Varchar (40) Nomefantasia - Varchar (35) 1
N PSECAO *Codcoligada - Smallint *Codigo - Varchar (35) #Codfilial - Smallint Descricao - Varchar (60) PCARGO *Codcoligada - Smallint *Codigo - Varchar (16) Nome - Varchar (40) 1 PSINDIC 1
1 *Codcoligada - Smallint * Chapa - Varchar (16) N #Codfilial - Smallint #Codsecao - Varchar (35) Treinamento RM: Caminho certo para o sucesso profissional. #CodFuncao - Varchar (10) Reproduo PFDEPEND Varchar (10) N #Codsindicato - Proibida #Codsituacao - char (1) *Codcoligada - Smallint N #Codbancofgts - Varchar (3) #Codbancopagto - Varchar (3) #Chapa - Varchar (16) Nome - Varchar (45) *Nro Depend - Smallint Nome - Varchar (30) Salario Dataadmissao - Datetime (8) Sexo- Varchar (1) N Datademissao - Datetime (8)
32
Cubo de Deciso
Nesta pasta ser feita a anlise dos dados registrados no banco de dados CORPORE RM, a funo dos Cubos de deciso trazer informaes atualizadas e confiveis para tomada de decises estratgicas dentro de uma empresa, onde o usurio poder dimensionar o cubo da maneira necessria para a sua consulta.
cones do Cubo
Os cones apresentados so: Abrir Cubo Abre uma caixa de dilogo onde outro cubo poder ser selecionado para a abertura. Observao: Ao abrir um outro cubo, voc estar automaticamente fechando o cubo visualizado. Salvar Cubo Salva as alteraes feitas na configurao do cubo. Uma caixa de dilogo ser apresentada para que um nome de arquivo seja informado. Observao: Para preservar a antiga configurao do cubo, informe outro nome no campo Nome do Arquivo. Para gravar a nova configurao por cima da antiga configurao do cubo, preserve o nome do cubo e apenas pressione o boto OK.
33
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Atualizar Informaes Atualiza as informaes da base de dados. Visualizar/Imprimir Cubo Visualiza a impresso do cubo, caso a pasta Cubo esteja marcada. e, caso a pasta Grfico esteja marcada, imprime o grfico.
Exportar para o Excel Para exportar o cubo para o MS Excel, clique no cone e informe um nome para o arquivo .XLS.
Exportar para Arquivo Para Exportar um Cubo para o formato CSV (Comma Separated Values) Observao: Arquivos com a extenso .csv podem ser importados em planilhas eletrnicas ou gerenciadores de bancos de dados.
Visualizar Sentenca SQL Para visualizar a Sentena SQL que gerou o cubo, clique no cone da barra de ferramentas. Observao: A sentena SQL no poder ser alterada.
34
35
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 ------------------------------------------------------------------------------------- Para Remover uma Dimenso da rea de consulta
Na rea de Consulta, posicione o mouse sobre a dimenso que deseja remover e, arraste-a para uma posio na rea de Dimenses.
Observao:
Para Selecionar / deselecionar todos os registros de uma dimenso, mantenha pressionada a tecla CTRL e clique em qualquer registro.
Grfico
Nesta pasta ser visualizado o grfico referente aos valores selecionados na pasta Cubo de Deciso.
Esta pasta possui dois campos: Tipo do Grfico - Determina qual ser o tipo de grfico a ser apresentado: barras, linhas, pontos, rea, pizza e linhas finas.
Observao:
Devido a prpria caracterstica do grfico de pizza, deve-se selecionar apenas uma coluna ou uma linha para esse tipo de grfico. 3D - Determina se o o grfico ir ser apresentado no formato tridimensional () ou no. Para visualizar o grfico, siga os passos abaixo: Na pasta Cubo de Deciso, selecione, com o mouse, os valores desejados. Depois, clique na pasta Grfico.
36
37
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Etapa 1 - Sentena SQL
Todo cubo baseado no resultado da execuo de uma sentena SQL e, atravs deste resultado que so formadas as dimenses do cubo e organizada toda informao nele contida. Nesta etapa, informe a sentena SQL em que se baseia o cubo a ser criado. Dica: Voc pode, acessando a janela de execuo de cubos (Relatrios | Cubos (EIS) | *) visualizar as sentenas SQL dos cubos que so distribudos junto com RM Bis.
38
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Etapa 2 - Organizao das Dimenses
Nesta etapa organize as colunas criadas atravs da execuo da sentena SQL em dimenses do cubo. Para criar as dimenses basta arrastar os campos para cada uma das quatro caixas disponveis: rea de Consulta, Linhas de Consulta, Colunas de Consulta e rea de Dados. Quando o cubo for executado pela primeira vez os dados sero apresentados da seguinte forma, de acordo com a localizao de cada dimenso:
Observao:
Pelo menos deve existir uma dimenso criada na rea de dados e nas linhas de consulta.
39
Consultas SQL base CORPORE RM / RM Bis Verso: 4.03 -------------------------------------------------------------------------------------Etapa 3 - Formatao do Cubo
Nesta etapa configure o texto a ser apresentado em cada dimenso, e no caso das dimenses das reas de dados, configure a mscara dos valores a serem apresentados.
40
Nesta ltima etapa informe a localizao e o nome do arquivo de cubo a ser criado.
41