SlideShare uma empresa Scribd logo
Criando Instruções SQL Básicas
Prof. Msc. Allan
Costa
Importanto e exportando SQL
• Importar
– Mysql –h localhost –u root –p database-name <
banco.sql
• Exportar
– Mysqldump –u root –p --opt database_name >
banco.sql
Catálogo
CATÁLOGO RELACIONAMENTOS E ATRIBUTOS
CATÁLOGO RELACIONAMENTOS E ATRIBUTOS
NOME_REL
NOME_REL NOME_ATR
NOME_ATR TIPO_ATR
TIPO_ATR MEMBRO_CP
MEMBRO_CP MEMBRO_CH_EST
MEMBRO_CH_EST REL_CH_EST
REL_CH_EST
EMPREGADO CPF VARCHAR(11) SIM NÃO
EMPREGADO NOME VARCHAR(50) NÃO NÃO
EMPREGADO DATA_NASC VARCHAR(6) NÃO NÃO
EMPREGADO ENDERECO VARCHAR(100) NÃO NÃO
EMPREGADO SEXO VARCHAR(1) NÃO NÃO
EMPREGADO SALARIO INT NÃO NÃO
EMPREGADO N_DEPART INT NÃO SIM DEPART
EMPREGADO CPF_SUPERV VARCHAR(11) NÃO SIM EMPREGADO
DEPART NUM_DEP INT SIM NÃO
DEPART NOME_DEP VARCHAR(50) NÃO NÃO
DEPART CPF_GER VARCHAR(11) NÃO SIM EMPREGADO
DEPART DATA_IN_GER VARCHAR(6) NÃO NÃO
PROJETO NUM_PROJ INT SIM NÃO
PROJETO NOME_PROJ VARCHAR(100) NÃO NÃO
PROJETO LOCALIZ VARCHAR(50) NÃO NÃO
PROJETO NUM_DEPART INT NÃO SIM DEPART
TRAB_PARA CPF_EMP VARCHAR(11) SIM SIM EMPREGADO
TRAB_PARA NUM_PROJ INT SIM SIM PROJETO
TRAB_PARA HORAS INT NÃO NÃO
DEPEND CPF_RESP VARCHAR(11) SIM SIM EMPREGADO
DEPEND NOME VARCHAR(50) SIM NÃO
DEPEND SEXO VARCHAR(1) NÃO NÃO
DEPEND DATA_NASC VARCHAR(6) NÃO NÃO
Aula 11 - Conceitos de SQL Básicos, uso constante
Recursos das Instruções SELECT SQL
Seleção
Projeção
Tabela 1 Tabela 2
Tabela 1
Tabela 1
Junção
Instrução SELECT Básica
SELECT *|{[DISTINCT] coluna|expressão [apelido],...}
FROM tabela;
• SELECT identifica quais colunas
• FROM identifica qual tabela
SELECT *
FROM departments;
Selecionando Todas as Colunas
Selecionando Colunas Específicas
SELECT department_id, location_id
FROM departments;
Criando Instruções SQL
• As instruções SQL não fazem distinção entre
maiúsculas e minúsculas.
• As instruções SQL podem estar em uma ou mais
linhas.
• As palavras-chave não podem ser abreviadas ou
dividas de uma linha para outra.
• Normalmente, as cláusulas são colocadas em linhas
separadas.
• Os recuos são usados para aperfeiçoar a legibilidade.
Manipulando Dados
DML (Data Manipulation Language)
• Uma instrução DML é executada quando você:
– Adiciona novas linhas a uma tabela
– Modifica linhas existentes em uma tabela
– Remove linhas existentes de uma tabela
Adicionando uma Nova Linha a uma Tabela
DEPARTMENTS
Nova
linha
…insira uma nova
linha na tabela
DEPARTMENTS…
A Sintaxe da Instrução INSERT
• Adicione novas linhas a uma tabela usando a
instrução INSERT.
• Somente uma linha é inserida por vez com esta
sintaxe.
INSERT INTO tabela [(coluna [, coluna...])]
VALUES (valor [, valor...]);
Inserindo Novas Linhas
• Insira uma nova linha contendo valores para cada
coluna.
• Liste valores na ordem default das colunas na
tabela.
• Opcionalmente, liste as colunas na cláusula
INSERT.
• Coloque os valores de data e de caractere entre
aspas simples.
INSERT INTO departments(department_id, department_name,
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.
INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.
1 row created.
INSERT INTO departments (department_id,
department_name )
VALUES (30, 'Purchasing');
1 row created.
1 row created.
Inserindo Linhas com Valores Nulos
• Método implícito: omite a coluna da lista de colunas.
• Método explícito: especifica a palavra-chave NULL na
cláusula VALUES.
Alterando os Dados em uma Tabela
EMPLOYEES
Atualize linhas na tabela EMPLOYEES.
A Sintaxe da Instrução UPDATE
• Modifique linhas existentes com a instrução UPDATE.
• Atualize mais de uma linha por vez, se necessário.
UPDATE tabela
SET coluna = valor [, coluna = valor, ...]
[WHERE condição];
• Uma ou mais linhas específicas serão modificadas
se você especificar a cláusula WHERE.
• Se você omitir a cláusula WHERE, todas as linhas
da tabela serão modificadas.
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
1 row updated.
1 row updated.
Atualizando Linhas em uma Tabela
UPDATE copy_emp
SET department_id = 110;
22 rows updated.
22 rows updated.
Delete uma linha da tabela DEPARTMENTS.
Removendo uma Linha de uma Tabela
DEPARTMENTS
A Instrução DELETE
Você pode remover linhas de uma tabela usando
a instrução DELETE.
DELETE [FROM] tabela
[WHERE condição];
• Se você especificar a cláusula WHERE, linhas
específicas serão deletadas.
• Se você omitir a cláusula WHERE, todas as linhas
da tabela serão deletadas.
Deletando Linhas de uma Tabela
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.
1 row deleted.
DELETE FROM copy_emp;
22 rows deleted.
22 rows deleted.
• Criando Instruções SQL Básicas - SELECT
Expressões Aritméticas
Crie expressões com dados numéricos e de datas usando
operadores aritméticos.
Operador
+
-
*
/
Descrição
Adicionar
Subtrair
Multiplicar
Dividir
Usando Operadores Aritméticos
SELECT last_name, salary, salary + 300
FROM employees;
…
Precedência de Operadores
• A multiplicação e a divisão têm prioridade sobre a
adição e a subtração.
• Os operadores com a mesma prioridade são avaliados
da esquerda para a direita.
• Os parênteses são usados para forçar a avaliação
priorizada e para esclarecer as instruções.
*
* /
/ +
+ _
_
Precedência de Operadores
SELECT last_name, salary, 12*salary+100
FROM employees;
…
Usando Parênteses
SELECT last_name, salary, 12*(salary+100)
FROM employees;
…
Definindo um Valor Nulo
• Nulo é um valor que não está disponível, não é
atribuído, é desconhecido ou não é aplicável.
• Um valor nulo não é o mesmo que um zero ou um
espaço em branco.
SELECT last_name, job_id, salary, commission_pct
FROM employees;
…
…
SELECT last_name, 12*salary*commission_pct
FROM employees;
Valores Nulos nas Expressões Aritméticas
As expressões aritméticas que contêm um valor nulo são
avaliadas como nulas.
…
…
Definindo um Apelido de Coluna
Um apelido de coluna:
• Renomeia um cabeçalho de coluna
• É útil para cálculos
• Segue imediatamente o nome da coluna. Também
pode haver a palavra-chave AS opcional entre o
nome da coluna e o apelido
• Necessita de aspas duplas caso contenha espaços
ou caracteres especiais ou faça distinção entre
maiúsculas e minúsculas
Usando Apelidos de Coluna
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;
SELECT last_name AS name, commission_pct comm
FROM employees;
…
…
Linhas Duplicadas
A exibição default das consultas é de todas as linhas,
incluindo linhas duplicadas.
SELECT department_id
FROM employees;
…
Eliminando Linhas Duplicadas
Elimine linhas duplicadas usando a palavra-chave
DISTINCT na cláusula SELECT.
SELECT DISTINCT department_id
FROM employees;
Exercício
• Faca uma consulta para exibir todos os dados da
tabela departamentos.
• Crie uma consulta para exibir as idades exclusivas
na tabela de empregados
• De um aumento de 50%(salario) a todos os
empregados, exiba um relatório com o nome do
empregado, salário antigo e o salário novo.
Renomei as colunas para salario_antigo e
salario_novo.
Respostas
• SELECT * FROM DEPARTAMENTOS;
• SELECT DISTINCT JOB_ID FROM EMPREGADOS;
• SELECT NOME , SALARIO AS “SALARIO_ANTIGO
”, SALARIO *1.5 AS “SALARIO_NOVO” FROM
EMPREGADOS;
Restringindo e Classificando Dados
Limitando Linhas Usando uma Seleção
"recuperar todos
os funcionários
do departamento 90"
EMPLOYEES
…
Limitando as Linhas Selecionadas
• Restrinja as linhas retornadas usando a cláusula WHERE.
• A cláusula WHERE segue a cláusula FROM.
SELECT *|{[DISTINCT] coluna|expressão [apelido],...}
FROM tabela
[WHERE condição(ões)];
Usando a Cláusula WHERE
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;
Strings de Caracteres e Datas
• As strings de caracteres e valores de data aparecem
entre aspas simples.
• Os valores de caractere fazem distinção entre
maiúsculas e minúsculas e os valores de data fazem
distinção entre formatos.
• O formato de data default é DD-MON-RR.
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen';
Condições de Comparação
Operador
=
>
>=
<
<=
<>
Significado
Igual a
Maior que
Maior que ou igual a
Menor que
Menor que ou igual a
Diferente de
SELECT last_name, salary
FROM employees
WHERE salary <= 3000;
Usando Condições de Comparação
Condições Lógicas
Operador
AND
OR
NOT
Significado
Retorna TRUE se ambas as condições
de componentes forem verdadeiras
Retorna TRUE se uma das condições
de componente for verdadeira
Retorna TRUE se a condição seguinte
for falsa
Usando o Operador AND
AND exige que ambas as condições sejam verdadeiras.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%';
Usando o Operador OR
OR exige que uma das condições seja verdadeira.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
Usando o Operador NOT
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date;
Cláusula ORDER BY
• Classifique linhas com a cláusula ORDER BY
– ASC: ordem crescente, default
– DESC: ordem decrescente
• A cláusula ORDER BY aparece por último na
instrução SELECT.
…
Classificando em Ordem Decrescente
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
…
• A ordem da lista ORDER BY é a ordem de
classificação.
• Você pode classificar por uma coluna que não esteja
na lista SELECT.
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
Classificando por Várias Colunas
…

Mais conteúdo relacionado

PPTX
BD I - Aula 10 A - Introducao a SQL
PDF
Aula7 sql basico_6por_pag
PDF
Um pouco sobre sql
DOCX
Sql - Comandos dml do mysql - parte 1
DOCX
Tutoriavapihwjejejjeekkekekekekekl_SQL.docx
PPTX
Aula 12 banco de dados
PDF
Introdução ao Banco de Dados, Introdução ao Banco de Dados,
PDF
Banco II - PostgreSQL - Filtros
BD I - Aula 10 A - Introducao a SQL
Aula7 sql basico_6por_pag
Um pouco sobre sql
Sql - Comandos dml do mysql - parte 1
Tutoriavapihwjejejjeekkekekekekekl_SQL.docx
Aula 12 banco de dados
Introdução ao Banco de Dados, Introdução ao Banco de Dados,
Banco II - PostgreSQL - Filtros

Semelhante a Aula 11 - Conceitos de SQL Básicos, uso constante (20)

DOCX
Sql linguagem
PDF
Curso de sql
PDF
Principais instruções em sql
PDF
Dicas oracle sql
ODP
Aprofundamento de DDL e DML
PPTX
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
PDF
Introdução a Banco de Dados (Parte 3)
PPTX
Basesdedados
DOCX
Apostila de sql
PDF
Apostila de sql
PDF
Apostila de sql oracle (pt br)
DOC
Apostila de sql
PDF
apostila-de-sql
PDF
Funções integradas no sql
PPTX
07 Consultando os dados de uma tabela
PPTX
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
PPT
CONCEITOS BASICOS DE BANCO DE DADOS COM SQL
PDF
apostila de sql - oracle
PDF
Apostila de sql oracle
Sql linguagem
Curso de sql
Principais instruções em sql
Dicas oracle sql
Aprofundamento de DDL e DML
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
Introdução a Banco de Dados (Parte 3)
Basesdedados
Apostila de sql
Apostila de sql
Apostila de sql oracle (pt br)
Apostila de sql
apostila-de-sql
Funções integradas no sql
07 Consultando os dados de uma tabela
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
CONCEITOS BASICOS DE BANCO DE DADOS COM SQL
apostila de sql - oracle
Apostila de sql oracle
Anúncio

Último (11)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Design - Introdução a Gestalt e teoria das formas
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Tipos de servidor em redes de computador.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Eng. Software - pontos essenciais para o início
Arquitetura de computadores - Memórias Secundárias
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Design - Introdução a Gestalt e teoria das formas
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Manejo integrado de pragas na cultura do algodão
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Anúncio

Aula 11 - Conceitos de SQL Básicos, uso constante

  • 1. Criando Instruções SQL Básicas Prof. Msc. Allan Costa
  • 2. Importanto e exportando SQL • Importar – Mysql –h localhost –u root –p database-name < banco.sql • Exportar – Mysqldump –u root –p --opt database_name > banco.sql
  • 3. Catálogo CATÁLOGO RELACIONAMENTOS E ATRIBUTOS CATÁLOGO RELACIONAMENTOS E ATRIBUTOS NOME_REL NOME_REL NOME_ATR NOME_ATR TIPO_ATR TIPO_ATR MEMBRO_CP MEMBRO_CP MEMBRO_CH_EST MEMBRO_CH_EST REL_CH_EST REL_CH_EST EMPREGADO CPF VARCHAR(11) SIM NÃO EMPREGADO NOME VARCHAR(50) NÃO NÃO EMPREGADO DATA_NASC VARCHAR(6) NÃO NÃO EMPREGADO ENDERECO VARCHAR(100) NÃO NÃO EMPREGADO SEXO VARCHAR(1) NÃO NÃO EMPREGADO SALARIO INT NÃO NÃO EMPREGADO N_DEPART INT NÃO SIM DEPART EMPREGADO CPF_SUPERV VARCHAR(11) NÃO SIM EMPREGADO DEPART NUM_DEP INT SIM NÃO DEPART NOME_DEP VARCHAR(50) NÃO NÃO DEPART CPF_GER VARCHAR(11) NÃO SIM EMPREGADO DEPART DATA_IN_GER VARCHAR(6) NÃO NÃO PROJETO NUM_PROJ INT SIM NÃO PROJETO NOME_PROJ VARCHAR(100) NÃO NÃO PROJETO LOCALIZ VARCHAR(50) NÃO NÃO PROJETO NUM_DEPART INT NÃO SIM DEPART TRAB_PARA CPF_EMP VARCHAR(11) SIM SIM EMPREGADO TRAB_PARA NUM_PROJ INT SIM SIM PROJETO TRAB_PARA HORAS INT NÃO NÃO DEPEND CPF_RESP VARCHAR(11) SIM SIM EMPREGADO DEPEND NOME VARCHAR(50) SIM NÃO DEPEND SEXO VARCHAR(1) NÃO NÃO DEPEND DATA_NASC VARCHAR(6) NÃO NÃO
  • 5. Recursos das Instruções SELECT SQL Seleção Projeção Tabela 1 Tabela 2 Tabela 1 Tabela 1 Junção
  • 6. Instrução SELECT Básica SELECT *|{[DISTINCT] coluna|expressão [apelido],...} FROM tabela; • SELECT identifica quais colunas • FROM identifica qual tabela
  • 8. Selecionando Colunas Específicas SELECT department_id, location_id FROM departments;
  • 9. Criando Instruções SQL • As instruções SQL não fazem distinção entre maiúsculas e minúsculas. • As instruções SQL podem estar em uma ou mais linhas. • As palavras-chave não podem ser abreviadas ou dividas de uma linha para outra. • Normalmente, as cláusulas são colocadas em linhas separadas. • Os recuos são usados para aperfeiçoar a legibilidade.
  • 11. DML (Data Manipulation Language) • Uma instrução DML é executada quando você: – Adiciona novas linhas a uma tabela – Modifica linhas existentes em uma tabela – Remove linhas existentes de uma tabela
  • 12. Adicionando uma Nova Linha a uma Tabela DEPARTMENTS Nova linha …insira uma nova linha na tabela DEPARTMENTS…
  • 13. A Sintaxe da Instrução INSERT • Adicione novas linhas a uma tabela usando a instrução INSERT. • Somente uma linha é inserida por vez com esta sintaxe. INSERT INTO tabela [(coluna [, coluna...])] VALUES (valor [, valor...]);
  • 14. Inserindo Novas Linhas • Insira uma nova linha contendo valores para cada coluna. • Liste valores na ordem default das colunas na tabela. • Opcionalmente, liste as colunas na cláusula INSERT. • Coloque os valores de data e de caractere entre aspas simples. INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700); 1 row created.
  • 15. INSERT INTO departments VALUES (100, 'Finance', NULL, NULL); 1 row created. 1 row created. INSERT INTO departments (department_id, department_name ) VALUES (30, 'Purchasing'); 1 row created. 1 row created. Inserindo Linhas com Valores Nulos • Método implícito: omite a coluna da lista de colunas. • Método explícito: especifica a palavra-chave NULL na cláusula VALUES.
  • 16. Alterando os Dados em uma Tabela EMPLOYEES Atualize linhas na tabela EMPLOYEES.
  • 17. A Sintaxe da Instrução UPDATE • Modifique linhas existentes com a instrução UPDATE. • Atualize mais de uma linha por vez, se necessário. UPDATE tabela SET coluna = valor [, coluna = valor, ...] [WHERE condição];
  • 18. • Uma ou mais linhas específicas serão modificadas se você especificar a cláusula WHERE. • Se você omitir a cláusula WHERE, todas as linhas da tabela serão modificadas. UPDATE employees SET department_id = 70 WHERE employee_id = 113; 1 row updated. 1 row updated. Atualizando Linhas em uma Tabela UPDATE copy_emp SET department_id = 110; 22 rows updated. 22 rows updated.
  • 19. Delete uma linha da tabela DEPARTMENTS. Removendo uma Linha de uma Tabela DEPARTMENTS
  • 20. A Instrução DELETE Você pode remover linhas de uma tabela usando a instrução DELETE. DELETE [FROM] tabela [WHERE condição];
  • 21. • Se você especificar a cláusula WHERE, linhas específicas serão deletadas. • Se você omitir a cláusula WHERE, todas as linhas da tabela serão deletadas. Deletando Linhas de uma Tabela DELETE FROM departments WHERE department_name = 'Finance'; 1 row deleted. 1 row deleted. DELETE FROM copy_emp; 22 rows deleted. 22 rows deleted.
  • 22. • Criando Instruções SQL Básicas - SELECT
  • 23. Expressões Aritméticas Crie expressões com dados numéricos e de datas usando operadores aritméticos. Operador + - * / Descrição Adicionar Subtrair Multiplicar Dividir
  • 24. Usando Operadores Aritméticos SELECT last_name, salary, salary + 300 FROM employees; …
  • 25. Precedência de Operadores • A multiplicação e a divisão têm prioridade sobre a adição e a subtração. • Os operadores com a mesma prioridade são avaliados da esquerda para a direita. • Os parênteses são usados para forçar a avaliação priorizada e para esclarecer as instruções. * * / / + + _ _
  • 26. Precedência de Operadores SELECT last_name, salary, 12*salary+100 FROM employees; …
  • 27. Usando Parênteses SELECT last_name, salary, 12*(salary+100) FROM employees; …
  • 28. Definindo um Valor Nulo • Nulo é um valor que não está disponível, não é atribuído, é desconhecido ou não é aplicável. • Um valor nulo não é o mesmo que um zero ou um espaço em branco. SELECT last_name, job_id, salary, commission_pct FROM employees; … …
  • 29. SELECT last_name, 12*salary*commission_pct FROM employees; Valores Nulos nas Expressões Aritméticas As expressões aritméticas que contêm um valor nulo são avaliadas como nulas. … …
  • 30. Definindo um Apelido de Coluna Um apelido de coluna: • Renomeia um cabeçalho de coluna • É útil para cálculos • Segue imediatamente o nome da coluna. Também pode haver a palavra-chave AS opcional entre o nome da coluna e o apelido • Necessita de aspas duplas caso contenha espaços ou caracteres especiais ou faça distinção entre maiúsculas e minúsculas
  • 31. Usando Apelidos de Coluna SELECT last_name "Name", salary*12 "Annual Salary" FROM employees; SELECT last_name AS name, commission_pct comm FROM employees; … …
  • 32. Linhas Duplicadas A exibição default das consultas é de todas as linhas, incluindo linhas duplicadas. SELECT department_id FROM employees; …
  • 33. Eliminando Linhas Duplicadas Elimine linhas duplicadas usando a palavra-chave DISTINCT na cláusula SELECT. SELECT DISTINCT department_id FROM employees;
  • 34. Exercício • Faca uma consulta para exibir todos os dados da tabela departamentos. • Crie uma consulta para exibir as idades exclusivas na tabela de empregados • De um aumento de 50%(salario) a todos os empregados, exiba um relatório com o nome do empregado, salário antigo e o salário novo. Renomei as colunas para salario_antigo e salario_novo.
  • 35. Respostas • SELECT * FROM DEPARTAMENTOS; • SELECT DISTINCT JOB_ID FROM EMPREGADOS; • SELECT NOME , SALARIO AS “SALARIO_ANTIGO ”, SALARIO *1.5 AS “SALARIO_NOVO” FROM EMPREGADOS;
  • 37. Limitando Linhas Usando uma Seleção "recuperar todos os funcionários do departamento 90" EMPLOYEES …
  • 38. Limitando as Linhas Selecionadas • Restrinja as linhas retornadas usando a cláusula WHERE. • A cláusula WHERE segue a cláusula FROM. SELECT *|{[DISTINCT] coluna|expressão [apelido],...} FROM tabela [WHERE condição(ões)];
  • 39. Usando a Cláusula WHERE SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90;
  • 40. Strings de Caracteres e Datas • As strings de caracteres e valores de data aparecem entre aspas simples. • Os valores de caractere fazem distinção entre maiúsculas e minúsculas e os valores de data fazem distinção entre formatos. • O formato de data default é DD-MON-RR. SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen';
  • 41. Condições de Comparação Operador = > >= < <= <> Significado Igual a Maior que Maior que ou igual a Menor que Menor que ou igual a Diferente de
  • 42. SELECT last_name, salary FROM employees WHERE salary <= 3000; Usando Condições de Comparação
  • 43. Condições Lógicas Operador AND OR NOT Significado Retorna TRUE se ambas as condições de componentes forem verdadeiras Retorna TRUE se uma das condições de componente for verdadeira Retorna TRUE se a condição seguinte for falsa
  • 44. Usando o Operador AND AND exige que ambas as condições sejam verdadeiras. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 AND job_id LIKE '%MAN%';
  • 45. Usando o Operador OR OR exige que uma das condições seja verdadeira. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%';
  • 46. SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP'); Usando o Operador NOT
  • 47. SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date; Cláusula ORDER BY • Classifique linhas com a cláusula ORDER BY – ASC: ordem crescente, default – DESC: ordem decrescente • A cláusula ORDER BY aparece por último na instrução SELECT. …
  • 48. Classificando em Ordem Decrescente SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ; …
  • 49. • A ordem da lista ORDER BY é a ordem de classificação. • Você pode classificar por uma coluna que não esteja na lista SELECT. SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC; Classificando por Várias Colunas …

Notas do Editor

  • #5: Recursos das Instruções SELECT SQL A instrução SELECT recupera informações do banco de dados. Com uma instrução SELECT, você pode fazer o seguinte: Projeção: você pode usar o recurso de projeção da linguagem SQL para escolher as colunas de uma tabela que devem ser retornadas por uma consulta. É possível escolher o número de colunas que for necessário da tabela. Seleção: você pode usar o recurso de seleção da linguagem SQL para escolher as linhas de uma tabela que devem ser retornadas por uma consulta e pode usar vários critérios para restringir as linhas exibidas. Junção: você pode usar o recurso de junção da linguagem SQL para reunir dados armazenados em diferentes tabelas, criando um vínculo entre eles. Você aprenderá mais sobre junções em uma lição posterior.
  • #6: Instrução SELECT Básica Na forma mais simples, uma instrução SELECT deve incluir o seguinte: Uma cláusula SELECT, que especifica as colunas a serem exibidas Uma cláusula FROM, que especifica a tabela que contém as colunas listadas na cláusula SELECT Na sintaxe: SELECT é uma lista de uma ou mais colunas * seleciona todas as colunas DISTINCT suprime os itens duplicados coluna|expressão seleciona a coluna nomeada ou a expressão apelido fornece cabeçalhos diferentes às colunas selecionadas Tabela FROM especifica a tabela que contém as colunas
  • #7: Selecionando Todas as Colunas de Todas as Linhas Você pode exibir todas as colunas de dados em uma tabela colocando um asterisco (*) após a palavra-chave SELECT. No exemplo do slide, a tabela do departamento contém quatro colunas: DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID e LOCATION_ID. A tabela contém oito linhas, uma para cada departamento. Também é possível exibir todas as colunas na tabela listando todas elas após a palavra-chave SELECT. Por exemplo, a instrução SQL a seguir, como no exemplo do slide, exibe todas as colunas e linhas da tabela DEPARTMENTS: SELECT department_id, department_name, manager_id, location_id FROM departments;
  • #8: Selecionando Colunas Específicas de Todas as Linhas Você pode usar a instrução SELECT para exibir colunas específicas da tabela especificando os nomes das colunas, separados por vírgulas. O exemplo do slide exibe todos os números dos departamentos e locais na tabela DEPARTMENTS. Na cláusula SELECT, especifique as colunas desejadas, na ordem em que devem aparecer na saída. Por exemplo, para exibir o local antes do número do departamento da esquerda para a direita, use a seguinte instrução: SELECT location_id, department_id FROM departments;
  • #9: Criando Instruções SQL Usando as seguintes diretrizes e regras simples, você pode construir instruções válidas fáceis de ler e editar: • As instruções SQL não fazem distinção entre maiúsculas de minúsculas, a menos que indicado. As instruções SQL podem ser informadas em uma ou mais linhas. • As palavras-chave não podem ser divididas de uma linha para outra nem abreviadas. As cláusulas são em geral colocadas em linhas separadas para melhor legibilidade e facilidade de edição. • Os recuos podem ser usados para tornar o código mais legível. Em geral, as palavras-chave são informadas em letras maiúsculas; todas as outras palavras, como nomes de tabelas e colunas, são informadas em minúsculas. Executando Instruções SQL Usando o iSQL*Plus, clique no botão Execute (Executar) para executar o(s) comando(s) na janela de edição.
  • #11: DML (Data Manipulation Language) A DML é uma parte essencial do SQL. Quando você desejar adicionar, atualizar ou deletar dados no banco de dados, execute uma instrução DML. Um conjunto de instruções DML que formam uma unidade lógica de trabalho é denominado transação. Considere um banco de dados bancário. Quando o cliente de um banco transfere dinheiro de uma conta de poupança para uma conta corrente, a transação consiste em três operações separadas: diminuir a conta de poupança, aumentar a conta corrente e registrar a transação no lançamento da transação. O servidor Oracle deve garantir que todas as três instruções SQL sejam executadas para manter as contas com um saldo apropriado. Quando algo impedir que uma das instruções da transação seja executada, as outras instruções da transação deverão ser desfeitas.
  • #12: Adicionando uma Nova Linha a uma Tabela A ilustração do slide adiciona um novo departamento à tabela DEPARTMENTS.
  • #13: Adicionando uma Nova Linha a uma Tabela (continuação) Você pode adicionar novas linhas a uma tabela emitindo a instrução INSERT. Na sintaxe: tabela é o nome da tabela coluna é o nome da coluna da tabela a ser preenchida valor é o valor correspondente para a coluna Observação: essa instrução com a cláusula VALUES adiciona somente uma linha por vez a uma tabela.
  • #14: Adicionando uma Nova Linha a uma Tabela (continuação) Como você pode inserir uma nova linha que contenha valores para cada coluna, a lista de colunas não é necessária na cláusula INSERT. Entretanto, se você não usar a lista de colunas, os valores deverão ser listados de acordo com a ordem default das colunas na tabela, além disso deverá ser fornecido um valor para cada coluna. DESCRIBE departments Para fins de clareza, use a lista de colunas na cláusula INSERT. Coloque os valores de data e de caractere entre aspas simples; não é recomendável colocar valores numéricos entre aspas simples. Os valores numéricos não devem ser colocados entre aspas simples, porque, se forem incluídas aspas simples, poderá ocorrer a conversão implícita dos valores numéricos atribuídos às colunas do tipo de dados NUMBER.
  • #15: Métodos para Inserir Valores Nulos Certifique-se de que é possível usar valores nulos na coluna de destino verificando o status Null? com o comando DESCRIBE do iSQL*Plus. O Oracle Server impõe automaticamente todas as restrições de integridade de dados, tipos de dados e faixas de dados. As colunas que não estiverem listadas explicitamente obterão um valor nulo na nova linha. Erros comuns que podem ocorrer durante a entrada do usuário: Valor obrigatório ausente em uma coluna NOT NULL Valor duplicado que viola a restrição de exclusividade Restrição de chave estrangeira violada Restrição CHECK violada Tipo de dados sem correspondência Valor muito grande para se ajustar à coluna
  • #16: Alterando os Dados em uma Tabela A ilustração do slide exibe a alteração do número do departamento referente aos funcionários do departamento 60, que passaram para o departamento 30.
  • #17: Atualizando Linhas Você pode modificar linhas existentes usando a instrução UPDATE. Na sintaxe: tabela é o nome da tabela coluna é o nome da coluna da tabela a ser preenchida valor é o valor correspondente ou a subconsulta para a coluna condição identifica as linhas a serem atualizadas e é composta de nomes de colunas, expressões, constantes, subconsultas e operadores de comparação Confirme a operação de atualização consultando a tabela para exibir as linhas atualizadas. Para obter mais informações, consulte o Oracle9i SQL Reference, "UPDATE". Observação: em geral, use a chave primária para identificar uma única linha. Várias linhas poderão ser atualizadas inesperadamente se outras colunas forem usadas. Por exemplo, identificar uma única linha na tabela EMPLOYEES pelo nome é arriscado, porque mais de um funcionário pode ter o mesmo nome.
  • #18: Atualizando Linhas (continuação) A instrução UPDATE modificará linhas específicas se a cláusula WHERE for especificada. O exemplo do slide transfere o funcionário 113 (Popp) para o departamento 70. Se você omitir a cláusula WHERE, todas as linhas da tabela serão modificadas. SELECT last_name, department_id FROM copy_emp; Observação: a tabela COPY_EMP tem os mesmos dados que a tabela EMPLOYEES.
  • #19: Removendo uma Linha de uma Tabela A ilustração do slide remove o departamento Finance da tabela DEPARTMENTS (pressupondo que não haja restrições definidas nessa tabela).
  • #20: Deletando Linhas Você pode remover linhas existentes usando a instrução DELETE. Na sintaxe: tabela é o nome da tabela condição identifica as linhas a serem deletadas e é composta de nomes de coluna, expressões, constantes, subconsultas e operadores de comparação Observação: se nenhuma linha for deletada, uma mensagem "0 rows deleted" ("0 linhas deletadas") será retornada. Para obter mais informações, consulte o Oracle9i SQL Reference, "DELETE".
  • #21: Deletando Linhas (continuação) Você pode deletar determinadas linhas especificando a cláusula WHERE na instrução DELETE. O exemplo do slide deleta o departamento Finance da tabela DEPARTMENTS. Você pode confirmar essa operação exibindo as linhas deletadas usando a instrução SELECT. SELECT * FROM departments WHERE department_name = 'Finance'; no rows selected. Se você omitir a cláusula WHERE, todas as linhas da tabela serão deletadas. O segundo exemplo do slide deleta todas as linhas da tabela COPY_EMP, porque nenhuma cláusula WHERE foi especificada.
  • #23: Expressões Aritméticas Você poderá precisar modificar a maneira como os dados são exibidos, efetuar cálculos ou consultar análises de hipóteses (what-if). Tudo isso é possível com o uso de expressões aritméticas. Uma expressão aritmética pode conter nomes de colunas, valores numéricos constantes e operadores aritméticos. Operadores Aritméticos O slide lista os operadores aritméticos disponíveis em SQL. Você pode usar operadores aritméticos em qualquer cláusula de uma instrução SQL, exceto na cláusula FROM.
  • #24: Usando Operadores Aritméticos O exemplo no slide usa o operador de adição para calcular um aumento de salário de US$ 300 para todos os funcionários e exibe uma nova coluna SALARY+300 na saída. Observe que a coluna SALARY+300 resultante do cálculo não é uma nova coluna na tabela EMPLOYEES; ela é somente para exibição. Por default, o nome de uma nova coluna surge do cálculo que a gerou (neste caso, salary+300). Observação: o servidor Oracle9i ignora espaços em branco antes e depois do operador aritmético.
  • #25: Precedência de Operadores Se uma expressão aritmética tiver mais de um operador, a multiplicação e a divisão serão avaliadas primeiro. Se os operadores dentro uma expressão tiverem a mesma prioridade, então a avaliação será realizada da esquerda para a direita. Você pode usar os parênteses para forçar a avaliação da expressão entre parênteses primeiro.
  • #26: Precedência de Operadores (continuação) O exemplo no slide exibe o sobrenome, o salário e a remuneração anual dos funcionários. Ele calcula a remuneração anual como 12 multiplicado pelo salário mensal, mais um bônus de US$ 100. Observe que a multiplicação é realizada antes da adição. Observação: use parênteses para reforçar a ordem de precedência padrão e aumentar a compreensão. Por exemplo, a expressão no slide pode ser criada como (12*salary)+100, sem que haja alteração no resultado.
  • #27: Usando Parênteses Você pode sobrepor as regras de precedência usando parênteses para especificar a ordem de execução dos operadores. O exemplo no slide exibe o sobrenome, o salário e a remuneração anual dos funcionários. Ele calcula a remuneração anual como o salário mensal mais um bônus mensal de US$ 100, multiplicados por 12. Devido aos parênteses, a adição tem prioridade sobre a multiplicação.
  • #28: Valores Nulos Se faltar o valor de dados na linha de uma coluna específica, esse valor será denominado nulo ou conterá nulo. Nulo é um valor que não está disponível, não é atribuído, é desconhecido ou não é aplicável. Um valor nulo não é o mesmo que um zero ou um espaço. O zero é um número e o espaço é um caractere. As colunas de qualquer tipo de dados podem conter nulos. Entretanto, algumas restrições, NOT NULL e PRIMARY KEY, impedem que sejam usados nulos na coluna. Na coluna COMMISSION_PCT da tabela EMPLOYEES, observe que somente um gerente de vendas ou vendedor pode ganhar comissão. Outros funcionários não têm direito a comissões. Um valor nulo representa esse fato.
  • #29: Valores Nulos (continuação) Se qualquer valor da coluna em uma expressão aritmética for nulo, o resultado será nulo. Por exemplo, se você tentar executar uma divisão com zero, obterá um erro. No entanto, se dividir um número por nulo, o resultado será nulo ou desconhecido. No exemplo do slide, o funcionário King não recebe nenhuma comissão. Como a coluna COMMISSION_PCT na expressão aritmética é nula, o resultado é nulo. Para obter mais informações, consulte Oracle9i SQL Reference, "Basic Elements of SQL".
  • #30: Apelidos de Coluna Ao exibir o resultado de uma consulta, o iSQL*Plus normalmente usa o nome da coluna selecionada como seu cabeçalho. Este pode não ser descritivo e, portanto, talvez seja difícil compreendê-lo. É possível alterar um cabeçalho de coluna usando um apelido de coluna. Especifique o apelido após a coluna na lista SELECT usando um espaço como separador. Por default, os cabeçalhos de apelidos aparecem em letras maiúsculas. Se o apelido contiver espaços ou caracteres especiais (como # ou $), ou fizer distinção entre maiúsculas e minúsculas, coloque o apelido entre aspas duplas (" ").
  • #31: Apelidos de Coluna (continuação) O primeiro exemplo exibe os nomes e os percentuais de comissão de todos os funcionários. Observe que a palavra-chave AS opcional foi usada antes do apelido de coluna. O resultado da consulta será o mesmo se a palavra-chave AS for usada ou não. Observe também que a instrução SQL tem os apelidos de coluna name e comm em minúsculas, enquanto o resultado da consulta exibe os cabeçalhos de coluna em maiúsculas. Conforme mencionado em um slide anterior, os cabeçalhos de coluna aparecem, por default, em maiúsculas. O segundo exemplo exibe os sobrenomes e os salários anuais de todos os funcionários. Como Annual Salary contém um espaço, ele foi colocado entre aspas duplas. Observe que o cabeçalho da coluna na saída é exatamente o mesmo do apelido da coluna.
  • #32: Linhas Duplicadas Exceto se indicado o contrário, o iSQL*Plus exibe os resultados de uma consulta sem eliminar as linhas duplicadas. O exemplo do slide exibe todos os números de departamento da tabela EMPLOYEES. Observe que os números de departamento estão repetidos.
  • #33: Linhas Duplicadas (continuação) Para eliminar linhas duplicadas do resultado, inclua a palavra-chave DISTINCT na cláusula SELECT logo após a palavra-chave SELECT. No exemplo do slide, a tabela EMPLOYEES contém, na verdade, 20 linhas, mas há somente sete números de departamento exclusivos na tabela. Você pode especificar várias colunas após o qualificador DISTINCT, o qual afeta todas as colunas selecionadas e o resultado representa todas as combinações distintas das colunas. SELECT DISTINCT department_id, job_id FROM employees;
  • #37: Limitando Linhas Usando uma Seleção No exemplo do slide, suponha que você deseje exibir todos os funcionários do departamento 90. As linhas com o valor 90 na coluna DEPARTMENT_ID são as únicas retornadas. Esse método de restrição é a base da cláusula WHERE em SQL.
  • #38: Limitando as Linhas Selecionadas É possível restringir as linhas retornadas da consulta utilizando a cláusula WHERE. Uma cláusula WHERE contém uma condição que deve ser atendida e segue diretamente a cláusula FROM. Se a condição for verdadeira, a linha que atender à condição será retornada. Na sintaxe: WHERE restringe a consulta às linhas que atendem a uma condição condição é composta de nomes de colunas, expressões, constantes e um operador de comparação A cláusula WHERE pode comparar valores em colunas, valores literais, expressões aritméticas ou funções. Ela consiste em três elementos: Nome de coluna Condição de comparação Nome da coluna, constante ou lista de valores
  • #39: Usando a Cláusula WHERE No exemplo, a instrução SELECT recupera o nome, o ID do cargo e o número do departamento de todos os funcionários cujo ID do cargo seja SA_REP. Observe que o cargo SA_REP foi especificado em letras maiúsculas para garantir que corresponda à coluna do ID do cargo na tabela EMPLOYEES. As strings de caracteres fazem distinção entre maiúsculas e minúsculas.
  • #40: Strings de Caracteres e Datas As strings de caracteres e datas na cláusula WHERE devem ser colocadas entre aspas simples (''). As constantes de número, no entanto, não precisam. Todas as pesquisas de caracteres fazem distinção entre maiúsculas e minúsculas. No exemplo abaixo, nenhuma linha é retornada porque a tabela EMPLOYEES armazena todos os sobrenomes em letras maiúsculas e minúsculas: SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'WHALEN'; Os bancos de dados Oracle armazenam datas em um formato numérico interno, representando o século, o ano, o mês, o dia, as horas, os minutos e os segundos. A exibição de data default é DD-MON-RR. Observação: a alteração do formato de data default é abordada em uma lição subseqüente.
  • #41: Condições de Comparação Os operadores de comparação são usados em condições que comparam uma expressão a outro valor ou expressão. São usados na cláusula WHERE no seguinte formato: Sintaxe ... WHERE expr valor_do_operador Por Exemplo ... WHERE hire_date='01-JAN-95' ... WHERE salary>=6000 ... WHERE last_name='Smith' Não é possível usar um apelido na cláusula WHERE. Observação: os símbolos != e ^= também podem representar a condição diferente de.
  • #42: Usando as Condições de Comparação No exemplo, a instrução SELECT recupera o sobrenome e o salário da tabela EMPLOYEES, em que o salário do funcionário é menor ou igual a 3.000. Observe que há um valor explícito fornecido para a cláusula WHERE. O valor explícito de 3.000 é comparado ao valor do salário na coluna SALARY da tabela EMPLOYEES.
  • #43: Condições Lógicas Uma condição lógica combina o resultado de duas condições de componente para produzir um único resultado baseado nelas ou inverte o resultado de uma única condição. Uma linha só será retornada se o resultado global da condição for verdadeiro. Há operadores lógicos disponíveis em SQL: AND OU NOT Todos os exemplos até aqui especificaram somente uma condição na cláusula WHERE. Você pode usar várias condições em uma cláusula WHERE usando operadores AND e OR.
  • #44: O Operador AND No exemplo, as duas condições devem ser verdadeiras para que qualquer registro seja selecionado. Portanto, somente os funcionários que tenham um cargo contendo a string MAN e recebam US$ 10.000 ou mais serão selecionados. Todas as pesquisas de caractere fazem distinção entre maiúsculas e minúsculas. Nenhuma linha será retornada se MAN não estiver em maiúsculas. As strings de caracteres devem ser colocadas entre aspas. Tabela de Verdade AND A seguinte tabela mostra os resultados da combinação de duas expressões com AND:
  • #45: O Operador OR No exemplo, uma das condições pode ser verdadeira para que qualquer registro seja selecionado. Portanto, qualquer funcionário que tenha um ID do cargo contendo MAN ou receba US$ 10.000 ou mais será selecionado. A Tabela de Verdade OR A seguinte tabela mostra os resultados da combinação de duas expressões com OR:
  • #46: O Operador NOT O exemplo do slide exibe o sobrenome e o ID do cargo de todos os funcionários cujo ID do cargo não seja IT_PROG, ST_CLERK ou SA_REP. A Tabela de Verdade NOT A seguinte tabela mostra o resultado da aplicação do operador NOT a uma condição: Observação: o operador NOT também pode ser utilizado com outros operadores SQL, como BETWEEN, LIKE e NULL. ... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP') ... WHERE salary NOT BETWEEN 10000 AND 15000 ... WHERE last_name NOT LIKE '%A%' ... WHERE commission_pct IS NOT NULL
  • #47: A Cláusula ORDER BY A ordem das linhas retornadas em um resultado de consulta é indefinida. A cláusula ORDER BY pode ser usada para classificar as linhas. Se você usar a cláusula ORDER BY, deverá colocá-la por último na instrução SQL. É possível especificar uma expressão, ou um apelido, ou posição de coluna como a condição de classificação. Sintaxe SELECT expr FROM tabela [WHERE condição(ões)] [ORDER BY {coluna, expr} [ASC|DESC]]; Na sintaxe: ORDER BY especifica a ordem em que as linhas recuperadas são exibidas ASC ordena as linhas em ordem crescente (essa é a ordem default) DESC ordena as linhas em ordem decrescente Se a cláusula ORDER BY não for usada, a ordem de classificação será indefinida e o servidor Oracle talvez não extraia as linhas na mesma ordem ao realizar a mesma consulta duas vezes. Use a cláusula ORDER BY para exibir as linhas em uma ordem específica.
  • #48: Ordenação de Dados Default A ordem de classificação default é crescente: Os valores numéricos são exibidos primeiro com os valores mais baixos. Por exemplo: 1–999. Os valores de datas são exibidos primeiro com os valores mais antigos por exemplo, 01-JAN-92 antes de 01-JAN-95. Os valores de caracteres são exibidos em ordem alfabética. Por exemplo: o A primeiro e o Z por último. Os valores nulos são exibidos por último em seqüências crescentes e primeiro em seqüências decrescentes. Invertendo a Ordem Default Para reverter a ordem de exibição das linhas, especifique a palavra-chave DESC após o nome da coluna na cláusula ORDER BY. O exemplo do slide classifica o resultado pelo funcionário contratado mais recentemente.
  • #49: Classificando por Várias Colunas Você pode classificar os resultados da consulta por mais de uma coluna. O limite de classificação é o número de colunas de uma determinada tabela. Na cláusula ORDER BY, especifique as colunas e separe seus nomes usando vírgulas. Se desejar reverter a ordem de uma coluna, especifique DESC após o nome dela. Também é possível ordenar por colunas que não estejam incluídas na cláusula SELECT. Exemplo Exiba os sobrenomes e os salários de todos os funcionários. Ordene o resultado por número de departamento e, em seguida, em ordem decrescente de salário. SELECT last_name, salary FROM employees ORDER BY department_id, salary DESC;