Académique Documents
Professionnel Documents
Culture Documents
Instrues DML
Introduo
Oracle
aplicativos
Instrues SQL
SELECT
INSERT
UPDATE
DELETE
MERGE
Linguagem DML
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT
Linguagem DDL
GRANT
REVOKE
Linguagem DCL
COMMIT
ROLLBACK
SAVEPOINT
Controle de transao
SQL Developer
SQL*Plus
DEPARTMENTS
department_id
department_name
manager_id
location_id
LOCATION
location_id
street_address
postal_code
cidade
state_province
country_id
JOB_HISTORY
employee_id
start_date
end_date
job_id
department_id
JOBS
job_id
job_title
min_salary
max_salary
EMPLOYEES
employee_id
first_name
last_name
email
phone_number
hire_date
job_id
salrio
commission_pct
manager_id
department_id
COUNTRY
country_id
country_name
region_id
REGION
region_id
region_name
Recuperando
dados por meio
da instruo SQL
SELECT
Agenda de Lies
Projeo
Seleo
Tabela 1
Tabela 1
Join
Tabela 1
Tabela 2
SELECT *
FROM departments;
Agenda de Lies
Expresses aritmticas
Descrio
Adio
Subtrao
Multiplicao
Diviso
Precedncia de operadores
Agenda de Lies
Um apelido de coluna:
Renomeia um cabealho de coluna
til com clculos
Vem imediatamente aps o nome da coluna
(tambm pode existir uma palavra-chave opcional
AS entre o nome da coluna e o apelido).
Exige aspas duplas se contiver espaos ou
caracteres especiais, ou se fizer distino entre
maisculas e minsculas
Agenda de Lies
Operador de concatenao
Um operador de concatenao:
Vincula colunas ou strings de caracteres a outras
colunas
representado por duas barras verticais (||)
Cria uma coluna resultante que uma expresso de
caractere
SELECT
FROM
last_name||job_id AS "Employees"
employees;
Linhas duplicadas
2
SELECT DISTINCT department_id
FROM employees;
Agenda de Lies
DESCRIBE employees
Restringindo e
classificando
dados
Agenda de Lies
EMPLOYEES
recuperar todos os
funcionrios do
departamento 90
Operadores de comparao
Operador
Significado
Igual a
>
Maior que
>=
<
Menor que
<=
<>
Diferente de
BETWEEN
...AND...
IN(set)
LIKE
IS NULL
Limite superior
first_name
employees
first_name LIKE 'S%' ;
Operador
Significado
AND
OR
NOT
Usando o operador OR
Agenda de Lies
Regras de precedncia
Operador
Significado
Operadores aritmticos
Operador de concatenao
Condies de comparao
[NOT] BETWEEN
Diferente de
Condio lgica OR
Regras de precedncia
Agenda de Lies
Classificando
Classificando
Agenda de Lies
Usando funes
de uma nica
linha para
personalizar a
sada
Agenda de Lies
Funes SQL
Entrada
Sada
Funo
A funo executa a ao
arg 1
arg 2
Resultado
arg n
Funes
Funes de
funes
Funes de
funes
Retornam um resultado
por linha
Retornam um resultado
por um conjunto de linhas
Caracteres
Geral
Nmero
Funes
Converso
Data
Agenda de Lies
Funes de caracteres
Funes
Funes de
Converso
Funes de
Manipulao
LOWER
UPPER
INITCAP
CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
Resultado
LOWER('SQL Course')
sql course
UPPER('SQL Course')
SQL COURSE
INITCAP('SQL Course')
Sql Course
Resultado
CONCAT('Hello', 'World')
HelloWorld
SUBSTR('HelloWorld',1,5)
Hello
LENGTH('HelloWorld')
10
INSTR('HelloWorld', 'W')
LPAD(salary,10,'*')
*****24000
24000*****
REPLACE
('JACK and JUE','J','BL')
elloWorld
1
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),
INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'REP';
Agenda de Lies
Funes de nmeros
Resultado
ROUND(45.926, 2)
45.93
TRUNC(45.926, 2)
45.92
MOD(1600, 300)
100
Agenda de Lies
Formato de datas RR
Ano
atual
Ano
atual
1995
1995
2001
2001
Data especificada
27.10.95
27.10.17
27.10.17
27.10.95
Formato RR
1995
2017
2017
1995
Formato YY
1995
1917
2017
2095
Se dois
dgitos do
ano atual
forem:
049
A data de retorno
ser do sculo atual
5099
A data de retorno
ser do sculo
posterior ao atual
5099
A data de retorno
ser do sculo
anterior ao atual
A data de retorno
ser do sculo atual
Agenda de Lies
Funo
Resultado
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
ltimo dia do ms
ROUND
Arredonda data
TRUNC
Trunca data
Funo
Resultado
MONTHS_BETWEEN
('01-SET-95','11-JAN-94')
19.6774194
ADD_MONTHS (31-JAN-96',1)
'29-FEB-96'
NEXT_DAY
('01-SET-95','SEXTA-FEIRA')
'08-SET-95'
LAST_DAY
('01-FEV-95')
'28-FEV-95'
Resultado
ROUND(SYSDATE,'MS')
ROUND(SYSDATE ,'ANO')
TRUNC(SYSDATE ,'MS')
TRUNC(SYSDATE ,'ANO')
Resultado
ROUND(SYSDATE,'MS')
01-AGO-03
ROUND(SYSDATE ,'ANO')
01-JAN-04
TRUNC(SYSDATE ,'MS')
01-JUL-03
TRUNC(SYSDATE ,'ANO')
01-JAN-03
Usando as
funes de
converso e
expresses
condicionais
Agenda de Lies
NVL
NVL2
NULLIF
COALESCE
Expresses condicionais:
CASE
DECODE
Funes de converso
Tipo de dados
explcita de tipos de dados
Converso
explcita de tipos de dados
Converso
explcita de tipos de dados
Para
VARCHAR2 ou CHAR
NUMBER
VARCHAR2 ou CHAR
DATE
Para
NUMBER
VARCHAR2 ou CHAR
DATE
VARCHAR2 ou CHAR
TO_NUMBER
NUMBER
TO_DATE
CHARACTER
TO_CHAR
TO_CHAR
DATE
Agenda de Lies
NVL
NVL2
NULLIF
COALESCE
Expresses condicionais:
CASE
DECODE
TO_CHAR(date, 'format_model')
O modelo de formato:
Deve ser inserido entre aspas simples
Faz distino entre maisculas e minsculas
Pode incluir qualquer elemento de formato de
data vlido
Tem um elemento fm para remover espaos em
branco ou suprimir zeros esquerda
separado do valor da data por uma vrgula
Elemento
Resultado
YYYY
ANO
MM
MS
Nome inteiro do ms
MON
DY
DIA
DD
Dia numrico do ms
15:45:32 PM
12 of OCTOBER
fourteenth
SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM employees;
Resultado
Representa um nmero
Agenda de Lies
NVL
NVL2
NULLIF
COALESCE
Expresses condicionais:
CASE
DECODE
Aninhando funes
SELECT last_name,
UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
FROM employees
WHERE department_id =60;
SELECT
TO_CHAR(ROUND((salary/7), 2),'99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.'' ')
"Formatted Salary"
FROM employees;
Agenda de Lies
NVL
NVL2
NULLIF
COALESCE
Expresses condicionais:
CASE
DECODE
Funes gerais
Funo NVL
1
SELECT first_name, LENGTH(first_name) "expr1",
2
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;
Agenda de Lies
NVL
NVL2
NULLIF
COALESCE
Expresses condicionais:
CASE
DECODE
Expresses condicionais
Expresso CASE
Funo DECODE
Usando as
funes de
grupo
Agenda de Lies
Funes de grupo:
Tipos e sintaxe
Use AVG, SUM, MIN, MAX, COUNT
Use a palavra-chave DISTINCT nas funes de
grupo
Valores NULL em uma funo de grupo
Agrupando linhas:
Clusula GROUP BY
Clusula HAVING
Salrio mximo da
tabela EMPLOYEES
AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE
Group
funes
SELECT
group_function(column), ...
FROM
table
[WHERE
condition]
[ORDER BY column];
SELECT COUNT(*)
FROM employees
WHERE department_id =50;
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id =80;
SELECT AVG(commission_pct)
FROM employees;
Agenda de Lies
Funes de grupo:
Tipos e sintaxe
Use AVG, SUM, MIN, MAX, COUNT
Use a palavra-chave DISTINCT nas funes de
grupo
Valores NULL em uma funo de grupo
Agrupando linhas:
Clusula GROUP BY
Clusula HAVING
EMPLOYEES
4400
9500
3500
6400
10033
EMPLOYEES
SELECT
department_id, job_id, SUM(salary)
FROM employees
WHERE
department_id > 40
GROUP BY department_id, job_id
ORDER BY department_id;
No possvel
usar a clusula
WHERE para
restringir grupos
EMPLOYEES
SELECT
department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING
MAX(salary)>10000 ;
SELECT
job_id, SUM(salary) PAYROLL
FROM employees
WHERE
job_id NOT LIKE '%REP%'
GROUP BY job_id
HAVING
SUM(salary) > 13000
ORDER BY SUM(salary);
Agenda de Lies
Funes de grupo:
Tipos e sintaxe
Use AVG, SUM, MIN, MAX, COUNT
Use a palavra-chave DISTINCT nas funes de
grupo
Valores NULL em uma funo de grupo
Agrupando linhas:
Clusula GROUP BY
Clusula HAVING
Prtica
Crie um relatrio para exibir o nmero do gerente e quanto ganha o funcionrio com
o menor salrio que trabalha para esse gerente. Exclua todos os funcionrios cujo
gerente desconhecido. Exclua quaisquer grupos onde o salrio mnimo seja US$
6.000 ou menos. Organize os resultados por ordem decrescente de salrios.
Prtica
Crie um relatrio para exibir o nmero do gerente e quanto ganha o funcionrio com
o menor salrio que trabalha para esse gerente. Exclua todos os funcionrios cujo
gerente desconhecido. Exclua quaisquer grupos onde o salrio mnimo seja US$
6.000 ou menos. Organize os resultados por ordem decrescente de salrios.
Usando join
Agenda de Lies
Self-join
No-equijoins
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
EMPLOYEES
DEPARTMENTS
Tipos de Joins
OUTER joins:
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
Joins cruzadas
Agenda de Lies
Self-join
No-equijoins
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
SELECT
department_id, department_name,
location_id, city
FROM
departments
NATURAL JOIN locations ;
EMPLOYEES
DEPARTMENTS
Chave primria
Chave estrangeira
Ou
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON
(e.department_id = d.department_id)
WHERE
e.manager_id = 149 ;
Agenda de Lies
Self-join
No-equijoins
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
EMPLOYEES (WORKER)
EMPLOYEES (MANAGER)
Agenda de Lies
Self-join
No-equijoins
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
No-equijoins
EMPLOYEES
JOB_GRADES
Agenda de Lies
Self-join
No-equijoins
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
DEPARTMENTS
No h funcionrios no
departamento 190.
O funcionrio Grant
no recebeu uma ID
de departamento.
Agenda de Lies
Self-join
No-equiijoin
OUTER join:
LEFT OUTER join
RIGHT OUTER join
FULL OUTER join
Produto cartesiano
Join cruzada
Produtos Cartesianos
Produto
Cartesiano:
20 x 8 = 160 linhas
DEPARTMENTS (8 linhas)
Prtica
Prtica
Usando subconsulta
Agenda de Lies
Subconsulta:
Sintaxe de subconsulta
SELECT
FROM
WHERE
select_list
table
expr operator
(SELECT
FROM
select_list
table);
Tipos de subconsultas
Subconsulta
retorno
ST_CLERK
retornos
ST_CLERK
SA_MAN
Agenda de Lies
Operator
=
Significado
Igual a
>
Maior que
>=
<
Menor que
<=
<>
Diferente de
SELECT
employee_id, last_name
FROM employees
WHERE salary =
(SELECT
MIN(salary)
FROM employees
GROUP BY department_id);
Operador de uma
nica linha com
subconsulta de
vrias linhas
Agenda de Lies
Significado
IN
ANY
Deve ser precedido por =, !=, >, <, <=, >=. Compara um
valor para cada valor de uma lista ou retornado por uma
consulta. Avalia como FALSE, se a consulta no retornar
nenhuma linha.
Deve ser precedido por =, !=, >, <, <=, >=. Compara um
valor para todos os valores de uma lista ou retornados por
uma consulta. Avalia como TRUE, se a consulta no retornar
nenhuma linha.
ALL
Agenda de Lies
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM
employees mgr);
Usando os
operadores de
conjunto
Agenda de Lies
Operadores de conjunto
A
UNION/UNION ALL
INTERSECT
MINUS
Operador UNION
Agenda de Lies
Operador INTERSECT
Agenda de Lies
Operador MINUS
Agenda de Lies
Agenda de Lies
Manipulando
Dados
Agenda de Lies
DEPARTMENTS
New
Insero de uma nova
linha na tabela
DEPARTMENTS
departments (department_id,
department_name)
(30, 'Purchasing');
departments
(100, 'Finance', NULL, NULL);
Criando um script
(&department_id, '&department_name',&location);
Agenda de Lies
EMPLOYEES
table
column = value [, column = value, ...]
condition];
copy_emp
department_id = 110;
copy_emp
department_id
WHERE
job_id
(SELECT department_id
FROM employees
WHERE employee_id = 100)
(SELECT job_id
FROM employees
WHERE employee_id = 200);
Agenda de Lies
DEPARTMENTS
Instruo DELETE
table
condition];
Instruo TRUNCATE
Exemplo:
TRUNCATE TABLE copy_emp;
Agenda de Lies
Hora
COMMIT
Transao
DELETE
SAVEPOINT A
INSERT
UPDATE
SAVEPOINT B
INSERT
ROLLBACK
to SAVEPOINT B
ROLLBACK
to SAVEPOINT A
ROLLBACK
INSERT...
ROLLBACK TO update_done;
Faa as alteraes:
DELETE FROM employees
WHERE employee_id = 99999;
INSERT INTO departments
VALUES (290, 'Corporate Tax', NULL, 1700);
Agenda de Lies
Consistncia na leitura
Usurio A
UPDATE employees
SET
salary = 7000
WHERE last_name = 'Grant';
Blocos de
dados
Segmentos
de undo
SELECT *
FROM userA.employees;
Usurio B
Imagem
consistente
na leitura
Dados
alterados
e inalterados
Antes da
alterao
(dados
antigos)
Agenda de Lies
Questionrio
1. Verdadeiro
2. Falso
Criando
Outros
Objetos
Agenda de Lies
Tabela EMPLOYEES
Para restringir
acesso de dados
Para prover
independncia
de dados
Para simplificar
consultas complexas
Para apresentar
vises diferentes dos
mesmos dados
Recurso
Views simples
Views complexas
Nmero de tabelas
Uma
Uma ou mais
Contm funes
No
Sim
No
Sim
Sim
Nem sempre
SELECT *
FROM
salvu50;
Funes de grupo
Uma clusula GROUP BY
A palavra-chave DISTINCT
A palavra-chave ROWNUM da pseudocoluna
Funes de grupo
Uma clusula GROUP BY
A palavra-chave DISTINCT
A palavra-chave ROWNUM da pseudocoluna
Colunas definidas por expresses
Funes de grupo
Uma clusula GROUP BY
A palavra-chave DISTINCT
A palavra-chave ROWNUM da pseudocoluna
Colunas definidas por expresses
Colunas NOT NULL em tabelas base que no sejam
selecionadas pela view