Banco de Dados II – Aula 02

LINHAS DUPLICADAS

  • Geralmente, o problema de linhas duplicadas (ou valores duplicados) no retorno da instrução SELECT deve-se à má modelagem de dados;
  • O ideal seria que não existissem valores duplicados em tabelas;
  • Podemos utilizar o commando DISTINCT para fazer a distinção desses valores;
  • Utilizamos quando temos valores repetidos entre as tuplas;
  • Não se coloca geralmente a chave primária na cláusula SELECT;
  • O DISTINCT é aplicado para todas as colunas na cláusula SELECT;
  • SINTAXE:
SELECT   DISTINC [NOME_COLUNA]
FROM   [NOME_TABELA]
  • EXEMPLO:
SELECT   DISTINCT DEPARTMENT_ID
FROM     employees

SELECT   DISTINCT DEPARTMENT_ID,   JOB_ID
FROM     employees
  • Aconselhado utilizar somente para análise de dados;
  • É um comando que consome muito processamento;
  • O uso intensivo pode causar degradação do processador;

RESTRINGINDO E CLASSIFICANDO DADOS

A CLÁUSULA WHERE SERVE PARA:

  • Limitar linhas recuperadas de uma consulta;
  • Aconselhado sempre utilizar o que for possível para se fazer os filtros de retorno de linhas;
  • É especificado após a cláusula FROM;
  • Suporta comparer colunas, literais, variáveis, expressões aritméticas ou funções;
  • É necessário ter: o nome_da_coluna, condição_de_comparação; Nome_da_coluna, constant ou lista de valores;
  • É opcional na SELECT, porém aconselhável utilizar;
  • Caso não seja utilizada, é tornado todas as linhas da tabela, podendo causar grande lentidão no retorno de dados;
  • EXEMPLO:
  • SELECT  * FROM  employees (será retornado todas linhas da tabela employees)
  • EXEMPLO:
  • SELECT  *FROM  employeesWHERE  department_id = 60;(será retornado somente as linhas que contém o department_id = 60)

CONDIÇÕES DE COMPARAÇÃO

  • Servem para fazer comparações de valores dentro da cláusula WHERE;
  • Os possíveis operadores que podem ser utilizados: =, >, =, <=, ou !=, BETWEEN AND, IN, LIKE, IS NULL
  • SINTAXE:Geralmente é utilizado:… WHERE [campo] [operador] [valor];
  • Podendo ser também:… WHERE [valor] [operador] [campo]; ou… WHERE [valor] [operador] [valor]; ou… WHERE [campo] [operador] [campo]; etc
  • EXEMPLOS:… WHERE job_id = ‘AD_VP’… WHERE1000 >= salary;… WHERE department_id != 80;… WHERE hire_date  < ’17-jun-03’;
  • BETWEEN
    • Serve para retornar linhas entre faixas de valores;
    • Os dados podem ser do tipo, numérico, data e caracteres;
    • Substitui as comparações “>= AND <=“
    • EXEMPLO:…WHERE employee_idBETWEEN 1 AND 200;seria o mesmo que:…WHERE employee_id >= 1AND employee_id <= 200;
    • EXEMPLO:…WHERE hire_date BETWEEN’15-JAN-03’ AND ’30-JAN-03’;… WHERE last_name BETWEEN‘A’ AND ‘E’;
  • CONDIÇÃO IN
    • Retorna os valores que estão dentro da lista do IN;
    • Pode ser usado por qualquer tipo de dado;
    • Substitui os comandos [CAMPO1] = [VALOR1] OR [CAMPO1] = [VALOR2] OR …;
    • EXEMPLO:SELECT  first_name, last_nameFROM   employeesWHERE   first_name IN (‘Steven’,’Neena’);
    • EXEMPLO:SELECT  first_name, last_name, employee_idFROM   employeesWHERE   employee_id IN (1, 100, 200, 300);
  • A CONDIÇÃO LIKE:
    • Serve para retornar linhas que sejam parecidas (fazendo parte) com a string desejada;
    • Geralmente usado quando não sabemos exatamente o que estamos procurando, mas sabemos pelo menos parte da string;
    • Possui 2 símbolos (coringas) que geralmente são utilizados em conjunto com o LIKE:
    • % –> representado por zero ou mais caracteres;
    • _ –> representado por um character;
    • Quando queremos procurar uma string que contenha um dos símbolos coringa, temos que utilizar a opção ESCAPE;
    • EXEMPLO:SELECT  first_name, last_nameFROM  employeesWHERE  first_name LIKE ‘A%’(retorna todos os first_name iniciados com A)
    • EXEMPLO:SELECT  first_name, last_nameFROM  employeesWHERE  last_name LIKE ‘%a’(retorna todos os last_name terminados com A)
    • EXEMPLO:SELECT  first_name, last_nameFROM  employeesWHERE  last_name LIKE ‘%th%’(retorna todos os last_name que tenham “th” em qualquer parte da string)
    • EXEMPLO:SELECT  first_name, last_nameFROM  employeesWHERE  first_name LIKE ‘_t%’(retorna todos os first_name que tenham qualquer character na primeira posição da string, contenham “t” na segunda posição da string e que terminem com qualquer caracter)
    • EXEMPLO:SELECT  first_name, last_name, job_idFROM  employeesWHERE  job_id LIKE ‘IT\_%’ ESCAPE ‘\’;(retorna todos os job_id tenham IT_ no inicio e terminem com qualquer/quaisquer character(es). O _ após o símbolo \ está sendo interpretado como um character comum, e não um character coringa)
  • CONDIÇÕES NULL
    • Não é possível utilizar = ou para se comparar NULL;
    • Utiliza-se IS NULL ou IS NOT NULL;
    • EXEMPLO:… WHERE commission_pct IS NOT NULL;… WHERE hire_date IS NULL;… WHERE phone_number IS NOT NULL;

OPERADORES LÓGICOS E REGRAS DE PRECEDÊNCIA

OPERADORES LÓGICOS

  • Combina duas ou mais condições na cláusula WHERE;
  • O retorno da SELECT será sempre o resultado verdadeiro;
  • São eles: AND, NOT e OR;

OPERADOR AND

  • Significa E;
  • Retornará linhas na SELECT se todas as condições forem verdadeiras;
  • Uma única condição falsa invalída esse operador;
  • EXEMPLO DE ANDSELECT   *FROM   employeesWHERE   salary >= 5000AND job_id = ‘AC_ACCOUNT’;

OPERADOR OR

  • Significa OU;
  • Retornará linhas na SELECT se todas ao menus uma condição for verdadeiras;
  • Uma única condição falsa talvez não invalíde esse operador;
  • EXEMPLO DE ANDSELECT   *FROM   employeesWHERE   salary >= 5000OR job_id = ‘AC_ACCOUNT’;

OPERADOR NOT

  • Significa NÃO;
  • Utiliza em conjunto com as condições de comparação BETWEEN, LIKE, IS NULL e IN;
  • O operador irá retornar o que NÃO for atendido pela condição dada na SELECT;
  • Pode ser interpretado como: o que não estiver em (IN), o que não estiver entre (BETWEEN), o que não for como (LIKE);
  • EXEMPLO DE NOTSELECT   *FROM   employeesWHERE   first_name NOT LIKE ‘Bruce’;SELECT   *FROM   employeesWHERE   job_id NOT IN   (‘IT_PROG’,’AD_VP’,’FI_ACCOUNT’);
  • EXEMPLO DE NOTSELECT   *FROM   employeesWHERE   salary NOT BETWEEN5000 AND 20000;
  • EXEMPLO DE NOTSELECT   *FROM   employeesWHERE   NOT salary  > 10000;

ORDEM DE PRECEDÊNCIA DE OPERADORES

  • Obedecem a sequencia na instrução SELECT que será resolvida as expressões;
  • Pode ser sobreposta a ordem com parenteses;
  • As expressões são resolvidas da esquerda para a direita;

ScreenHunter_316 Feb. 26 00.02

  • EXEMPLO DE ORDEM DE PRECEDÊNCIA:
  • SELECT   *FROM   employeesWHERE   salary  > 5000AND job_id = ‘IT_PROG’;
  • SELECT   *FROM   employeesWHERE   job_id = ‘IT_PROG’OR job_id = ‘SA_MAN’;
  • SELECT   *FROM   employeesWHERE   first_name = ‘Bruce’OR manager_id = 100AND job_id = ‘SA_MAN’;

CLÁUSULA ORDER BY

  • Serve para ordenar as linhas recuperadas;
  • O padrão é ordem crescente (ascendente);
  • A ordenação é a última cláusula de uma SELECT a ser executada;
  • Podem ser usados ASC (opcional), pois é o padrão, ou DESC (descendente) em conjunto com a cláusula ORDER BY;
  • Pode ser utilizado para ser ordenado mais de uma coluna, inclusive de diferente ordens na mesma instrução;
  • EXEMPLOS DE ORDER BY
  • SELECT   first_name,last_name,job_idFROM   employeesORDER BY   first_name;
  • SELECT   first_name,last_name,job_idFROM   employeesORDER BY   last_name DESC;
  • SELECT   first_name,last_name,job_idFROM   employeesORDER BY   first_name ASC,last_name DESC;

Vídeo 01

Video 02

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

learningdatabase.com.br

Tecnologias em Banco de Dados Relacionais, Modelagem de dados dimencionais, tecnologias SQL Servere e Oracle

Aprendendo Programação

Algorítmos, Linguagem C, C++,Pascal, Python, R

WikiDBA

by Virendra Yaduvanshi - Microsoft SQL Server Database Architect | Consultant | Blogger | Specialist | DBA | Speaker

Blog - Fabiano Neves Amorim

SELECT * FROM [Coisas Da Minha Cabeça] WHERE dbo.fn_TempoParaPost() < dbo.fn_TempoLivre()

ROMANO DBA

Administração de Bancos de Dados

Tércio Costa, Oracle Developer, OCE SQL, ACE Associate

Guia de estudos para certificação ORACLE SQL(1Z0-047, 1Z0-051, 1Z0-061 e 1Z0-071) e PL/SQL(1Z0-144, 1Z0-146 e 1Z0-148)

Strate SQL

Data Adventures with an Architect

%d blogueiros gostam disto: