Buscar

Linguagem SQL em Ambiente Oracle SQL Plus

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

�PAGE �19�
LINGUAGEM SQL EM AMBIENTE ORACLE SQL*Plus
2LINGUAGEM SQL	
BENEFÍCIOS	2
AMBIENTE SQL	2
COMO ENTRAR NO AMBIENTE?	2
LINGUAGEM DE DEFINIÇÃO DE DADOS (DDL)	3
LINGUAGEM DE MANIPULAÇÃO DE DADOS (DML)	3
OPERAÇÕES DE RECUPERAÇÃO: QUERY	4
RECUPERAÇÃO SIMPLES	4
A) RECUPERAÇÃO USANDO EXPRESSÕES ARITMÉTICAS	5
B) APELIDOS DE COLUNAS	6
C) OPERADOR DE CONCATENAÇÃO	6
D) MANUSEIO DE VALORES NULOS	7
CLÁUSULA DISTINCT	8
CLÁUSULA ORDER BY	9
CLÁUSULA WHERE	11
OPERADORES SQL	14
FUNÇÕES INTEGRADAS NO SQL	16
A) FUNÇÕES PARA MANIPULAR CARACTERES	16
B) FUNÇÕES PARA MANIPULAR NÚMEROS	17
C) FUNÇÕES PARA MANIPULAR DATAS	18
D) FUNÇÕES DE CONVERSÃO	20
E) FUNÇÕES PARA MANIPULAR GRUPOS	22
CLÁUSULA GROUP BY	24
CLÁUSULA HAVING	25
SUBQUERIES (SUBCONSULTAS)	25
A) SUBQUERY DE UMA LINHA	26
B) SUBQUERIES QUE RETORNAM MAIS DE UMA LINHA DA TABELA	26
C) CLÁUSULA HAVING COM SUBQUERIES ANINHADAS	28
EXTRAIR DADOS DE MAIS DE UMA TABELA	29
JOIN-EQUI-JOIN (SIMÉTRICO)	29
OPERADORES DE CONJUNTOS (SET OPERATORS)	30
REGRAS PARA UTILIZAR UNION, INTERSECT e MINUS	31
LINGUAGEM DE DEFINIÇÃO DE DADOS (DDL)	31
CRIAR UMA TABELA	31
CRIAR UMA TABELA UTILIZANDO A ESTRUTURA DE OUTRA	32
DATA MANIPULATION LANGUAGE – DML	33
A) INSERIR LINHAS NA TABELA	33
A.1) UTILIZANDO SUBSTITUIÇÃO DE VARIÁVEIS	33
A.2) COPIAR LINHAS (ROWS) DE OUTRA TABELA	33
B) ALTERAR LINHAS DA TABELA - SINTAXE	34
C) EXCLUIR LINHAS DA TABELA - SINTAXE	34
�
LINGUAGEM SQL
A linguagem SQL é própria para a realização de operações como recuperar dados (QUERY), atualizar ou eliminar dados, alterar colunas de tabelas, criar e eliminar tabelas e qualquer outras modificações que se deseje fazer em um banco de dados relacional.
Os comandos SQL podem ser divididos em quatro grupos de comandos:
Query;
Definição de dados;
Manipulação de dados;
Controle de dados;
Em 1986 a ANSI adotou o SQL como uma linguagem padrão para banco de dados relacional - RDBMS.
BENEFÍCIOS
É uma linguagem não procedural;
Permite trabalhar com várias tabelas;
Permite utilizar o resultado de uma instrução SQL em outra instrução SQL (sub-queries);
Não necessita especificar o método de acesso ao dado;
É uma linguagem para vários usuários como:
A) Administrador do sistema;
B) Administrador do banco de dados (DBA);
C) Programadores de aplicações;
D) Pessoal de gerência e tomada de decisão;
É de fácil aprendizado;
Permite a utilização dentro de uma linguagem procedural como C, COBOL, FORTRAN, Pascal, Java – através de SQL embutida.
LINGUAGEM DE DEFINIÇÃO DE DADOS (DDL)
Um banco de dados projetado através do modelo ER, deve ser mapeado para um esquema relacional através de uma linguagem de definição de dados (DDL). A linguagem que será utilizada neste contexto será SQL padrão ANSI/ISO.
COMANDOS
CREATE TABLE
Cria uma tabela e define suas colunas e outras propriedades.
CREATE VIEW
Define uma visão sobre uma ou mais tabelas e /ou sobre outras visões.
CREATE INDEX
Cria índice para uma tabela.
ALTER TABLE
Inclui ou redefine uma coluna numa tabela existente (não consta no padrão ANSI).
DROP TABLE
Exclui uma tabela.
DROP VIEW
Exclui uma visão.
DROP INDEX
Exclui um índice.
LINGUAGEM DE MANIPULAÇÃO DE DADOS (DML)
A manipulação do banco de dados é feita através de uma ou mais linguagens comerciais, que devem respeitar as restrições de integridade do banco de dados. A linguagem utilizada neste contexto será o SQL.
COMANDOS
SELECT
Seleciona linhas e colunas de uma ou mais tabelas.
INSERT
Inclui linhas numa tabela ou visão.
UPDATE
Muda o valor de uma ou mais campos de uma tabela.
DELETE
Exclui linhas de uma tabela.
OPERAÇÕES DE RECUPERAÇÃO: QUERY
A estrutura básica para a recuperação de informações do banco de dados, consiste de 2 cláusulas:
FORMATO: 
SELECT coluna1, coluna2, ..., colunan 
FROM nome-da-tabela;
A cláusula SELECT relaciona as colunas que se quer presentes no resultado da recuperação.
A cláusula FROM relaciona a tabela ou tabelas que devem ser pesquisadas na execução da query.
O SELECT e o FROM são necessários em todas as consultas e sempre devem aparecer antes de qualquer outra cláusula.
O resultado de uma recuperação SQL é sempre uma tabela.
Para recuperar todos os valores de todas as colunas da tabela, usa-se o asterisco (*) após a palavra SELECT.
RECUPERAÇÃO SIMPLES
SELECT * FROM emp;
ou
SELECT empno, ename, job, mgr, hiredate, sal, comm, depto 
FROM emp;
	EMPNO
	ENAME
	JOB
	MGR
	HIREDATE
	SAL
	COMM
	DEPTO
	----------
	-----------
	--------------
	------
	--------------
	-------
	---------
	---------
	7369
	SMITH
	CLERK
	7902
	17-DEC-80
	800
	
	20
	7499
	ALLEN
	SALESMAN
	7698
	20-FEB-81
	1600
	300
	30
	7521
	WARD
	SALESMAN
	7696
	22-FEB-81
	1250
	500
	30
	7566
	JONES
	MANAGER
	7839
	02-APR-81
	2975
	
	20
	7654
	MARTIN
	SALESMAN
	7698
	28-SEP-81
	1250
	1400
	30
	7698
	BLAKE
	MANAGER
	7839
	01-MAI-81
	2850
	
	30
	7782
	CLARK
	MANAGER
	7839
	09-JUN-81
	2450
	
	10
	7782
	SCOTT
	ANALYST
	7566
	09-DEC-82
	3000
	
	20
	7839
	KING
	PRESIDENT
	
	17-NOV-81
	5000
	
	10
	7844
	TURNER
	SALESMAN
	7698
	08-SEP-81
	1500
	500
	30
	7876
	ADAMS
	CLERK
	7788
	12-JAN-83
	1100
	
	20
	7900
	JAMES
	CLERK
	7698
	03-DEC-91
	950
	
	30
	7902
	FORD
	ANALYST
	7566
	03-DEC-81
	3000
	
	20
	7934
	MILLER
	CLERK
	7782
	23-JAN-82
	1300
	
	10
14 rows selected.
A linguagem SQL suporta as seguintes expressões simples:
ADIÇÃO 		( + )
SUBTRAÇÃO		( - )
MULTIPLICAÇÃO	( * )
DIVISÃO		( / )
Observação:
Caso a expressão aritmética contenha mais de um operador, a prioridade é *, / e depois +, -, sempre da esquerda para a direita quando existir vários operadores com a mesma prioridade.
Também podem ser utilizados parênteses para especificar a ordem de execução dos operadores.
A) RECUPERAÇÃO USANDO EXPRESSÕES ARITMÉTICAS
Recuperar os números dos empregados, salários e salário anual.
		SQL> SELECT empno, sal, sal*12 FROM emp;
	EMPNO 
	SAL
	 SAL*12
	---------- 
	-------
	-----------
	7369
	800
	9600
	7499
	1600
	19200
	7521
	1250
	15000
	7566
	2975
	35700
	7654
	1250
	15000
	7698
	2850
	34200
	7782
	2450
	29400
	7788
	3000
	36000
	7839
	5000
	60000
	7844
	1500
	18000
	7876
	1100
	13200
	7900
	950
	11400
	7902
	3000
	36000
	7934
	1300
	15600
14 rows selected
B) APELIDOS DE COLUNAS
Para criar um apelido para uma coluna, entre com o apelido depois do nome da coluna no comando SELECT.
SQL> SELECT ename, sal * 12 SAL_ANUAL, comm FROM emp;
	ENAME
	SAL_ANUAL
	COM
	-----------
	------------------
	----------
	SMITH
	9600
	
	ALLEN
	19200
	300
	WARD
	15000
	500
	JONES
	35700
	
	MARTIN
	15000
	1400
	.
	.
	.
	.
	.
	.
	.
	.
	.
	MILLER
	15600
	
C) OPERADOR DE CONCATENAÇÃO
O operador de concatenação permite ligar uma coluna a outra.
SQL> SELECT empno||ename EMPREGADO FROM emp;
	EMPREGADO
	--------------------------
	7369SMITH
	7499ALLEN
	7521WARD
	7566JONES
	.
	.
	.
	7934MILLER
D) MANUSEIO DE VALORES NULOS
Sempre que existir um valor nulo na tabela, este deve ser tratado, pois toda expressão feita com valor nulo o resultado é nulo.
Um valor nulo é diferente de zero.
A função NVL converte um valor nulo para outro valor numérico.
		SQL> SELECT ename, sal, sal * 12 + comm SAL_ANUAL FROM emp;
	ENAME
	SAL
	SAL_ANUAL
	-----------
	---------
	---------------
	SMITH
	800
	
	ALLEN
	1600
	19500
	WARD
	1250
	15500
	JONES
	2975
	
	MARTIN
	1250
	16400
	.
	.
	.
	.
	.
	.
	.
	.
	.
	MILLER
	1300
	
SQL> SELECT ename, sal, sal * 12 + NVL(comm,0) SAL_ANUAL FROM emp;
	ENAME
	SAL
	SAL_ANUAL
	--------------------
	---------------
	SMITH
	800
	9600
	ALLEN
	1600
	19500
	WARD
	1250
	15500
	JONES
	2975
	35700
	.
	.
	.
	.
	.
	.
	.
	.
	.
	MILLER
	1300
	15600
A função NVL (comm, 0) substitui por 0 os valores nulos, para que não afetem a soma. Na multiplicação utiliza-se 1 no lugar de um valor nulo para não afete a multiplicação.
CLÁUSULA DISTINCT
A cláusula distinct é utilizada para eliminar os valores duplicados na saída (no resultado).
A) Recuperação não utilizando a cláusula DISTINCT:
Obtenha todos os números dos departamentos da tabela EMP.
SQL> SELECT deptno FROM emp;
	DEPTNO
	--------------
	20
	30
	30
	20
	30
	30
	10
	20
	10
	30
	20
	30
	20
	10
14 rows selected.
A) Recuperação utilizando a cláusula DISTINCT:
Obtenha todos os números dos departamentos da tabela EMP.
SQL> SELECT DISTINCT deptno FROM emp;
	DEPTNO
	-----------
		10
		20
		30
DISTINCT pode ser utilizado para múltiplas colunas.
SQL> SELECT DISTINCT deptno, job FROM emp;
	DEPTNO
	JOB
	-----------
	---------------
	10
	CLERK
	10
	MANAGER
	10
	PRESIDENT
	20
	ANALYST
	20
	CLERK
	20
	MANGER
	30
	SALESMAN
7 rows selected.
CLÁUSULA ORDER BY
A cláusula ORDER BY é utilizada para ordenar (classificar) as linhas da tabela .
A ordem do resultado pode aparecer em ordem decrescente (DESC) ou ascendente (ASC) que é default.
A cláusula order by sempre deve aparecer por último no comando select.
A) Obtenha o nome, a profissão, o solário de todos os empregados em ordem ascendente de nome do empregado.
SQL> SELECT ename, job, sal FROM emp ORDER BY ename;
	ENAME
	JOB
	SAL
	-----------
	------------------
	--------
	ADAMS
	CLERK
	1100
	ALLEN
	SALESMAN
	1600
	BLAKE
	MANAGER
	2850
	CLARK
	MANAGER
	2450
	FORD
	ANALYST
	3000
	JAMES
	CLERK
	950
	JONES
	MANAGER
	2975
	KING
	PRESIDENT
	5000
	MARTIN
	SALESMAN
	1250
	MILLER
	CLERK
	1300
	SCOTT
	ANALYST
	3000
	SMITH
	CLERK
	800
	TURNER
	SALESMAN
	1500
	WARD
	SALESMAN
	1250
14 rows selected.
B) Obtenha o nome, a profissão e o salário de todos os empregados em ordem decrescente de nome do empregado.
SQL> SELECT ename, job, sal FROM emp ORDER BY ename DESC;
	ENAME
	JOB
	SAL
	-----------
	--------------
	---------
	WARD
	SALESMAN
	1250
	TURNER
	SALESMAN
	1500
	SMITH
	CLERK
	800
	SCOTT
	ANALYST
	3000
	MILLER
	CLERK
	1300
	MARTIN
	SALESMAN
	1250
	KING
	PRESIDENT
	5000
	JONES
	MANAGER
	2975
	JAMES
	CLERK
	950
	FORD
	ANALYST
	3000
	CLARK
	MANAGER
	2450
	BLAKE
	MANAGER
	2850
	ALLEN
	SALESMAN
	1600
	ADAMS
	CLERK
	1100
14 rows selected.
C) Obtenha o nome, a profissão e o salário de todos os empregados em ordem decrescente de profissão e crescente de salário.
SQL> SELECT ename, job, sal FROM emp ORDER BY job DESC, SAL
	ENAME
	JOB
	SAL
	-----------
	---------------
	---------
	WARD
	SALESMAN
	1250
	MARTIN
	SALESMAN
	1500
	TURNER
	SALESMAN
	1500
	ALLEN
	SALESMAN
	1600
	KING
	PRESIDENT
	5000
	CLARK
	MANEGER
	2450
	BLAKE
	MANAGER
	2850
	JONES
	MANAGER
	2975
	ADAMS
	CLERK
	1100
	MILLER
	CLERK
	1300
	SCOTT
	ANALYST
	3000
	FORD
	ANALYST
	3000
14 rows selected.
D) Obtenha o nome, a profissão e o salário de todos os empregados em ordem decrescente de profissão e salário.
SQL> SELECT ename, job, sal FROM emp ORDER BY job DESC, sal DESC;
	ENAME
	JOB
	SAL
	--------------
	----------------
	-------
	ALLEN
	SALESMAN
	1600
	TURNER
	SALESMAN
	1500
	WARD
	SALESMAN
	1250
	MARTIN
	SALESMAN
	1250
	KING
	PRESIDENT
	5000
	JONES
	MANAGER
	2975
	BLAKE
	MANEGER
	2850
	CLARK
	MANAGER
	2450
	MILLER
	CLERK
	1300
	ADAMS
	CLERK
	1100
	JAMES
	CLERK
	950
	SMITH
	CLERK
	800
	SCOTT
	ANALYST
	3000
	FORD
	ANALYST
	3000
14 rows selected.
CLÁUSULA WHERE
A cláusula WHERE é utilizada para especificar a condição ou condições que as linhas selecionadas devem satisfazer.
As condições da cláusula WHERE podem ser valores de colunas, valores literais (seqüência de caracteres), expressões aritméticas ou funções.
Seqüência de caracteres e datas devem ser englobadas entre aspas simples.
WHERE especifica a condição desejada, que pode assumir os operadores =, !=, >, >=, <, <=; operadores booleanos AND, OR e NOT; e parênteses para indicar uma ordem desejada.
OPERADORES LÓGICOS
A cláusula WHERE pode assumir os seguintes operadores lógicos:
	Igual
	( = )
	Maior
	( > )
	Maior ou Igual
	( >= )
	Menor 
	( < )
	Menor ou Igual 
	( <= )
SQL> SELECT ename, sal, FROM emp WHERE deptno = 10;
	ENAME
	SAL
	--------------
	-------
	CLARK
	2450
	KING
	5000
	MILLER
	1300
SQL> SELECT ename, sal, FROM emp WHERE sal > 2000;
	ENAME
	SAL
	-----------
	------
	JONES
	2975
	BLAKE
	2850
	CLARK
	2450
	SCOTT
	3000
	KING
	5000
	FORD
	3000
6 rows selected.
OPERADORES BOOLEANOS
A cláusula WHERE pode assumir os seguintes operadores booleanos:
AND;
OR;
NOT.
AND - As duas condições devem ser satisfeitas para que a consulta retorne uma ou mais linhas da tabela.
Sintaxe:
SELECT colunas FROM nome-da-tabela WHERE condição1 AND condição2;
Recuperação Qualificada: 
Obtenha os números dos empregados do departamento 20 com salário maior que 1500.
SQL> SELECT ename, sal, depto FROM emp WHERE deptno = 20 AND sal > 1500;
	ENAME
	SAL
	DEPTNO
	-----------
	------
	-----------
	JONES
	2975
	20
	SCOTT
	3000
	20
	FORD
	3000
	20
OR - Quando uma ou ambas as condições forem satisfeitas.
Sintaxe:
SELECT colunas FROM nome-da-tabela WHERE condição1 OR condição2;
Obtenha os números dos empregados do departamento 20 ou que possuem salário maior que 1500.
SQL> SELECT ename, sal, depto FROM emp WHERE deptno = 20 OR sal > 1500;
	ENAME
	SAL
	DEPTNO
	-----------
	---------
	-----------
	SMITH
	800
	20
	ALLEN
	1600
	30
	JONES
	2975
	20
	BLAKE
	2850
	30
	CLARK
	2450
	10
	SCOTT
	3000
	20
	KING
	5000
	10
	ADAMS
	1100
	20
	FORD
	3000
	20
9 rows selected.
USANDO AND E OR NA MESMA CONSULTA
Ao usar AND e OR na mesma consulta, você geralmente deve usar parêntese para tornar a consulta mais clara. A colocação dos parênteses pode alterar completamente o resultado.
SQL> SELECT ename, job, hiredate, sal, deptno 
FROM emp 
WHERE sal > 500 AND job ='CLERK' AND 
(hiredate='03-DEC-81' OR hiredate='17-DEC-80);
	ENAME
	 JOB
	HIREDATE 
	SAL 
	DEPTNO
	----------
	---------
	--------------
	------
	-----------
	SMITH
	CLERK
	17-DEC-80
	800
	20
	JAMES
	CLERK
	03-DEC-81
	950
	30
2 rows selected.
SQL> SELECT ename, job, hiredate, sal, deptno 
FROM emp
WHERE sal > 500
AND job = 'CLERK'
OR (hiredate = '03-DEC-81' AND hiredate = '17-DEC-80');
	ENAME
	 JOB
	HIREDATE 
	SAL 
	DEPTNO
	----------
	---------
	-------------
	------
	-----------
	SMITH
	CLERK
	17-DEC-80
	800
	20
	ADAMS
	CLERK
	12-JAN-83
	1100
	20
	JAMES
	CLERK
	03-DEC-81
	950
	30
	MILLER
	CLERK
	23-JAN-82
	1300
	10
OPERADORES SQL
A) Operador BETWEEN ...AND ...
O operador BETWEEN..AND... testa os valores da coluna, e recupera os valores que estão entre um valor mínimo e um valor máximo inclusive especificados no BETWEEN.
Obtenha os nomes e salários dos empregados que possuírem salários entre os valores 1000 e 2000.
SQL> SELECT ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 2000;
	ENAME 
	SAL
	-----------
	-------
	ALLEN
	1600
	WARD
	1250
	MARTIN
	1250
	TURNER
	1500
	ADAMS
	1100
	MILLER
	1300
6 rows selected.
B) Operador INO operador IN testa os valores da coluna, e recupera somente os valores que estão na lista de valores especificados pelo operador IN.
Obtenha os números, os salários e os gerentes dos empregados que possuírem os gerentes com os números 7902, 7566, 7788.
SQL> SELECT empno, sal, mgr
FROM emp
WHERE mgr in (7902, 7566, 7788);
		EMPNO
	SAL
	MGR
	----------
	------
	-------
	7369
	800
	7902
	7788
	3000
	7566
	7876
	1100
	7788
	7902
	3000
	7566
4 rows selected.
Observação
Caso sejam usados caracteres ou data na lista, especificá-los entre aspas simples.
C) Operador LIKE
O operador LIKE permite recuperar linha da tabela sem saber exatamente o valor que está sendo procurado, utilizando para isso os símbolos (%) e ( _ ).
O símbolo de sublinhado ( _ ) é usado para representar um único caractere.
O símbolo de percentagem (%) é usado para representar uma cadeia de caracteres de qualquer tamanho (inclusive zero).
Obtenha os nomes dos empregados que iniciam seu nome com S.
SQL> SELECT ename
FROM emp
WHERE ename LIKE 'S%';
	ENAME
	------------------------------
	SMITH
	SCOTT
2 rows selected.
Observação
O LIKE só pode ser usado com cadeia de caracteres ou com dados gráficos, e não com dados numéricos.
D) Operador IS NULL
O operador IS NULL testa os valores da coluna, e recupera somente as linhas da tabela que possuírem o valor null.
Obtenha os números dos empregados que não possuírem gerente, ou seja o campo número do gerente (mgr) é igual a nulo.
SQL> SELECT ename, mgr
FROM emp
WHERE mgr IS NULL;
	ENAME
	MGR
	--------------
	-------
	KING
	
E) Utilizando a negação (NOT)
Os operadores BETWEEN...AND..., IN, LIKE, e IS NULL podem ser combinados com o operador de negação NOT.
Operador			Significado
NOT BETWEEN		NÃO ENTRE DOIS VALORES ESPECIFICADOS
NOT IN				NÃO ENTRE UMA LISTA DE VALORES
NOT LIKE			NÃO ENTRE UM PADRÃO ESPECIFICADO
IS NOT NULL			NÃO IGUAL AO VALOR NULL
FUNÇÕES INTEGRADAS NO SQL
As funções são utilizadas para manipular campos (itens de dados). Estas funções utilizam um ou mais argumentos, retornando um valor.
Um argumento pode ser uma constante, variável ou uma coluna.
FORMATO
function_name(argumento1, argumento2, ...)
A) FUNÇÕES PARA MANIPULAR CARACTERES
a.1) LOWER
Converte em letras minúsculas.
Exemplo:
Obtenha o nome de todos os departamentos em letras minúsculas.
SQL> SELECT LOWER(dname) 
FROM dept;
a.2) UPPER
Converte em letras maiúsculas.
Exemplo:
Obtenha o nome de todos os departamentos em letras maiúsculas.
SQL> SELECT UPPER(dname)
FROM dept;
a.3) INITCAP
Converte a primeira letra de cada palavra para maiúscula.
Exempo:
Obtenha o nome e a localização de todos os departamentos, mostrando a primeira letra do nome e localização em maiúscula.
SQL> SELECT INITCAP(dname), INITCAP(LOC)
FROM dept;
a.4) LENGTH
Retorna o número de caracteres ou dígitos de uma coluna ou de uma cadeia de caracteres (literal).
Exemplo
Obtenha o número de caracteres do literal 'SQL COURSE', das colunas deptno e dname.
SQL> SELECT LENGTH('SQL COURSE'), LENGTH(deptno), LENGTH(dname)
FROM dept;
B) FUNÇÕES PARA MANIPULAR NÚMEROS
b.1) ROUND
Retorna o arredondamento de colunas, expressões ou valores para n casas decimais. Se n é omitido, nenhuma casa decimal é colocada.
Exemplo:
SQL> SELECT ROUND(45.923,1), ROUND(45.923), ROUND(SAL/32,2)
FROM emp
WHERE deptno = 10;
SQL>SELECT ROUND(45.473), ROUND(45.4634,2)
FROM dual;
b.2) TRUNC
Retorna o truncamento de colunas, expressões ou valores em n casas decimais. Se n é omitido nenhuma casa decimal é truncada.
Exemplo:
SQL> SELECT TRUNC(45.923, 1), TRUNC(45.923), TRUNC(45.452), TRUNC(SAL/32,2)
FROM emp
WHERE deptno = 10;
b.3) SQRT
Retorna a raiz quadrada de uma coluna ou valor. Se a coluna ou valor forem menores que zero, então retorna um valor nulo.
Exemplo:
SQL> SELECT sal, SQRT(sal), comm, SQRT(comm), SQRT(144)
FROM emp
WHERE comm > 0;
b.4) SIGN
Retorna -1 se a coluna, ou expressão, ou valor forem negativos;
Retorna 0 se a coluna, ou expressão, ou valor forem zero;
Retorna 1 se a coluna, ou expressão, ou valor forem positivos;
Exemplo:
SQL> SELECT sal - comm, sign(sal - comm), comm - sal, sign(comm - sal)
FROM emp
WHERE deptno = 30;
b.5) ABS
Retorna o valor absoluto de uma coluna ou valor.
Exemplo:
SQL> SELECT sal, comm, comm-sal, ABS(com-sal), ABS(-35)
FROM emp
WHERE comm > 0;
b.6) MOD (valor1, valor2)
Retorna o resto da divisão do valor1, dividido pelo valor2.
Exemplo:
SQL> SELECT sal, comm, MOD(sal, comm), MOD(100,40)
FROM emp
WHERE deptno=30
ORDER BY comm;
C) FUNÇÕES PARA MANIPULAR DATAS
c.1) SYSDATE
Retorna a data e hora corrente.
Exemplo:
Obtenha a data corrente:
SQL> SELECT SYSDATE 
FROM dual;
OPERAÇÕES ARITMÉTICAS
É possível adicionar e subtrair números constantes de datas.
DATA + Número de dias
DATA - Número de dias
DATA - DATA
DATA + Número/24
Exemplo:
SQL> SELECT hiredate, hiredate+7, hiredate -7, sysdate - hiredate
FROM emp
WHERE hiredate 
LIKE '%JUN%';
SQL> SELECT ename, hiredate 
FROM emp
WHERE ename='TURNER';
SQL> SELECT SYSDATE - hiredate 
FROM emp
WHERE ename='TURNER'; 
c.2) MONTHS_BETWEEN
Retorna o número de meses entre duas datas.
Exemplo:
SQL> SELECT MONTHS_BETWEEN (SYSDATE, hiredate)
MONTHS_BETWEEN('01-JAN-84','05-NOV-88')
FROM emp
WHERE MONTHS_BETWEEN (SYSDATE, hiredate) > 160;
SQL> SELECT MONTHS_BETWEEN('26-AUG-94','26-AUG-94')
FROM dual;
c.3) ADD_MONTHS
Adiciona n número de meses na data, onde n deve ser um inteiro e pode ser negativo.
Exemplo:
SQL> SELECT hiredate ADD_MONTHS(hiredate,3), ADD_MONTHS(hiredate,-3)
FROM emp
WHERE deptno = 20;
c.4) NEXT_DAY
Retorna a data do próximo dia da semana informado.
Exemplo:
SQL> SELECT hiredate, NEXT_DAY(hiredate, 'FRIDAY'), NEXT_DAY(hiredate, 6)
FROM emp
WHERE deptno = 10;
c.5) LAST_DAY
Retorna a data do último dia do mês.
Exemplo:
SQL> SELECT SYSDATE, LAST_DAY(SYSDATE), hiredate, LAST_DAY(hiredate)
FROM emp
WHERE deptno = 20;
D) FUNÇÕES DE CONVERSÃO
d.1) TO_CHAR
Converte um formato de data default para um formato alternativo especificado.
TO_CHAR(date, 'date picture')
default format date = DD-MON-YY
Formatos de datas (date picture)
	Date picture
	Significado
	YYYY
	Ano
	Y, YYY
	Ano com vírgula
	MM
	Mês
	MONTH
	Nome do mês
	MON
	Nome do mês com abreviação
	WW ou W
	Mês do ano ou mês
	DDD ou DD ou D
	Dia do ano, mês ou semana
	DAY
	Nome do dia da semana
	HH ou HH12
	Hora do dia (1 - 12)
	HH24
	Hora do dia (0 - 23)
	MI
	Minuto
	SS
	Segundos
Sufixos
	TH
	Número
	DDTH
	14TH
Exemplo:
SQL> SELECT SYSDATE
FROM dual;
TO_CHAR também é utilizado para converter tipo de dado NUMBER para tipo de dado CHAR (novo formato).
TO_CHAR (number, 'number picture')
FORMATO DE NÚMEROS (Number picture)
	Number Picture
	Significado
	Exemplo
	9
	Numérico (o número de 9's determina o tamanho)
	999999 = 1234
	0
	Mostra zero à esquerda
	099999 = 001234
	$
	Sinal de Dólar
	$999999 = $1234
	.(ponto)
	Especifica posição do ponto decimal
	999999.99 = 1234.00
	, (vírgula)
	Especifica posição da vírgula
	999,999 = 1,234
d.2) TO_NUMBER
Converte o número armazenado para um tipo de dado NUMBER.
Exemplo:
SQL> SELECT ename, job, sal 
FROM emp
WHERE sal > TO_NUMBER('1500');
d.3) TO_DATE
Permite formatar para outros formatos de datas.
Exemplo:
SQL> SELECT ename, hiredate 
FROM emp
WHERE hiredate = TO_DATE('JUNE 9, 1981', 'MONTH DD, YYYY');
Obs.: O formato default da data é: DD-MON-YY
Exemplo: hiredate = 09-JUN-81.
d.4) NVL
Converte um valor nulo para umvalor especificado.
Exemplo:
SQL> SELECT ename, sal comm, sal * 12 + NVL(comm, 0), NVL(comm, 1000)
FROM emp
WHERE deptno = 30;
d.5) GREATEST
Retorna o maior valor de uma lista de valores.
Exemplo:
SQL> SELECT ename, sal, comm, GREATEST(sal, comm), GREATEST(1000,2000)
FROM emp
WHERE deptno = 30;
d.6) LEAST
Retorna o menor valor de uma lista de valores.
Exemplo
SQL> SELECT ename, sal, comm, LEAST(sal, comm), LEAST(1000, 2000)
FROM emp
WHERE deptno = 30;
d.7) VSIZE
Retorna o número de bytes que são utilizados para armazenar internamente os dados (colunas ou valores)
Exemplo:
SQL> SELECT hiredate, VSIZE(hiredate), sal, VSIZE(sal), ename, VSIZE(ename)
FROM emp
WHERE deptno = 30;
E) FUNÇÕES PARA MANIPULAR GRUPOS
As funções de grupos servem para manipular um conjunto de linhas (ROWS) da tabela.
Retornam um resultado baseado num grupo de linhas (ROWS).
Por default todas as linhas (ROWS) da tabela são tratadas com um grupo.
A cláusula GROUP BY é usada para dividir as linhas da tabela em grupos menores.
FUNÇÕES DE GRUPO
e.1) AVG
Retorna a média dos valores da coluna, ignorando valores nulos.
Exemplo:
Obtenha a média de salários de todos os empregados.
SQL> SELECT ename, sal, AVG(sal) 
FROM emp;
SQL> SELECT AVG(sal )
FROM emp;
e.2) COUNT
Retorna o número de ocorrências da expressão, ou coluna. Usando *, retorna todas as ocorrências das linhas incluindo, duplicadas e nulas.
Exemplo:
Obtenha o número de empregados da empresa
SQL> SELCT COUNT(*)
FROM emp;
Exemplo:
Obtenha o número de empregados do departamento 10
SQL> SELECT COUNT(*) 
WHERE deptno = 10;
e.3) SUM
Retorna a soma dos valores da coluna, ignorando valores nulos.
Exemplo:
Obtenha a soma de todos os salários dos empregados.
SQL> SELECT SUM(sal) 
FROM emp;
Exemplo:
Obtenha a soma de todos os salários do departamento 10.
SQL> SELECT SUM(sal) 
FROM emp
WHERE deptno = 10;
e.4) MAX
Retorna o valor máximo de uma coluna.
Exemplo:
Obtenha o maior salário dos empregados.
SQL> SELECT MAX(sal) 
FROM emp;
Exemplo:
Obtenha o maior salário do departamento 20.
SQL> SELECT MAX(sal)
FROM emp
WHERE deptno = 20;
e.5) MIN
Retorna o valor mínimo de uma coluna.
Exemplo:
Obtenha o menor salário dos empregados.
SQL> SELECT MIN(sal) 
FROM emp;
Exemplo:
Obtenha o menor salário do departamento 10.
SQL> SELECT MIN(sal)
FROM emp
WHERE deptno = 10;
CLÁUSULA GROUP BY
A cláusula GROUP BY referencia uma coluna especificada da tabela relacionada na cláusula FROM e agrupa as linhas com base nos valores iguais dessa coluna.
O resultado da cláusula GROUP BY particiona a tabela em um conjunto de grupos, não efetuando qualquer tipo de ordenação.
Exemplo:
Obtenha o maior salário de cada profissão.
SQL> SELECT job, MAX(sal )
FROM emp
GROUP BY job;
Exemplo:
Obtenha o menor salário de cada profissão.
SQL> SELECT job, MIN(sal)
FROM emp
GROUP BY job;
Exemplo:
Obtenha o maior salário da profissão CLERK.
SQL> SELECT MAX(sal)
WHERE job = 'CLERK'
GROUP BY job;
Exemplo:
Obtenha o menor salário da profissão CLERK.
SQL> SELECT MIN(sal)
WHERE job = 'CLERK'
GROUP BY job;
Exemplo:
Obtenha a média salarial por departamento.
SQL> SELECT deptno, AVG(sal)
FROM emp
GROUP BY deptno;
Observação: a cláusula WHERE só pode ser usada em funções de grupos em casos especiais
CLÁUSULA HAVING
A cláusula HAVING especifica uma restrição sobre a tabela agrupada que resultou de uma cláusula GROUP BY anterior e elimina os grupos que não satisfazem a condição estabelecida.
A cláusula HAVING é usada para especificar a qualidade que um grupo deve ter para ser incluído no resultado. Ela efetua para os grupos a mesma função que a cláusula WHERE efetua para as linhas.
A cláusula HAVING é sempre utilizada junto com a cláusula GROUP BY, sendo que o HAVING é especificado sempre após o GROUP BY.
Exemplo:
Obtenha a média de salário dos departamentos que possuem mais de 3 empregados.
SQL> SELECT deptno, AVG(sal) 
FROM emp
HAVING COUNT(*) > 3;
Exemplo:
Obtenha as profissões que o maior salário é igual ou maior que 3000.
SQL> SELECT job, MAX(sal)
FROM emp
HAVING MAX(sal) >= 3000
GROUP BY job;
SUBQUERIES (SUBCONSULTAS)
Uma subquery é uma cláusula SELECT aninhada com outra cláusula SELECT e que retorna um resultado intermediário.
Exemplo:
SELECT coluna1, coluna2, ..........
FROM tabela
WHERE coluna = (SELECT coluna1, coluna2,........
FROM tabela
WHERE condição);
A) SUBQUERY DE UMA LINHA
Exemplo:
Obtenha o nome, profissão e salário do empregado que possui o menor salário.
SQL> SELECT MIN(sal) 
FROM emp;
{recupera o menor salário de todos os empregados}
SQL> SELECT ename, job, sal 
FROM emp
WHERE sal = (SELECT MIN(sal) FROM emp)
{o resultado acima é usado como parâmetro nesta query}
Como as subqueries aninhadas são processadas
Uma subquery é composta por duas cláusulas SELECT, o SELECT principal e SELECT interno.
O comando SELECT interno é executado primeiro, produzindo um resultado. No exemplo acima o resultado é 800.
O SELECT principal é processado usando o valor retornado pelo SELECT interno.
Observação: sempre que o SELECT interno retorna uma linha da tabela podem ser utilizadas os operadores =, !=, <, <=, >, >=.
Exemplo:
Obtenha o nome, profissão, de todos os empregados que possuem a mesma profissão do empregado BLAKE.
SQL> SELECT job 
FROM emp
WHERE ename = 'BLAKE';
SQL> SELECT ename, job
FROM emp
WHERE job = (SELECT job FROM emp WHERE ename = 'BLAKE');
Observação: O SELECT interno retorna a profissão de BLAKE que é MANAGER, e o SELECT externo retorna o nome dos empregados com profissão de MANAGER.
B) SUBQUERIES QUE RETORNAM MAIS DE UMA LINHA DA TABELA
b.1) OPERADOR IN
Relembrando, o operador IN testa (verifica) os valores que estão em uma lista de valores.
Exemplo:
Obtenha o nome, salário e número do departamento dos empregados que recebem o menor salário de cada empregado.
SQL> SELECT MIN(sal) 
FROM emp
GROUP BY deptno;
SQL> SELECT ename, sal, deptno 
FROM emp
WHERE sal in (SELECT MIN(sal) FROM emp GROUP BY deptno)
Observação: Sempre que aparecer uma SUBQUERY, onde, no resultado retornam mais de uma linha da tabela, utiliza-se o operador IN.
b.2) OPERADORES ANY E ALL
Os operadores ANY e ALL são utilizados para subqueries que retornam mais de uma linha da tabela, e requerem o uso dos operadores igual ( = ), menor ( > ), maior ( < ), menor ou igual (>= ), maior ou igual ( <= ) ou diferente ( !=), aplicado ao resultado de uma subconsulta.
ANY
Compara um valor com cada valor da lista de valores que foi retornado pela subquery.
Exemplo:
Obtenha o nome, salário, profissão e número do departamento de todos empregados que recebem um salário maior que o menor salário dos empregados do departamento 30.
SQL> SELECT DISTINCT sal 
FROM emp
WHERE deptno = 30;
SQL> SELECT ename, sal, job, deptno 
FROM emp
WHERE sal > ANY (SELECT DISTINCT sal FROM emp WHERE deptno = 30);
Observação: Quando a ANY é utilizado, frequentemente a cláusula DISTINCT é utilizada para prevenir que a mesma linha seja selecionada várias vezes.
ALL
Compara um valor com todos os valores da lista de valores retornados pela subquery.
Exemplo:
Obtenha o nome, salário, profissão e número do departamento de todos os empregados que recebem um salário maior, que todos os salários dos empregados do departamento 30.
SQL> SELECT DISTINCT sal 
FROM emp
WHERE deptno = 30;
SQL> SELECT ename, sal, job, deptno
FROM emp
WHERE sal > ALL (SELECT DISTINCT sal FROM emp WHERE deptno = 30);
b.3) OPERADOR NOT
O operador NOT também pode utilizado com os operadores IN, ALL e ANY.
Utilização do ORDER BY
Não é possível utilizar o ORDERBY em um SELECT interno, a regra é utilizar somente um ORDER BY em uma subquery e este deve ser o último comando do SELECT, ou seja no SELECT mais externo.
Aninhamento de subqueries
Também é possível aninhar (encadear) várias queries uma dentro da outra, não existindo limites.
C) CLÁUSULA HAVING COM SUBQUERIES ANINHADAS
A cláusula WHERE refere-se a uma linha da tabela e o HAVING a um grupo de linhas especificadas na cláusula GROUP BY.
Exemplo:
Obtenha o número dos departamentos, onde os empregados recebem um salário médio maior que a média salarial do departamento 30.
SQL> SELECT AVG(sal)
FROM emp
WHERE deptno = 30;
SQL> SELECT deptno, AVG(sal)
FROM emp
HAVING AVG(sal) > (SELECT AVG(sal) FROM emp WHERE deptno = 30)
GROUP BY deptno;
Exemplo:
Obtenha a profissão dos empregados que recebem a mais alta média salarial.
SQL> SELECT MAX(AVG(sal)) 
FROM emp
GROUP BY job;
SQL> SELECT job, AVG(sal) 
FROM emp
GROUP BY job 
HAVING AVG(sal) = (SELECT MAX(AVG(sal)) FROM emp GROUP BY job);
Observação: O SELECT interno encontra a média salarial par aos grupos de profissões, e a função MAX encontra a maior média salarial dos grupos, que é o valor (5000), este é utilizado pela cláusula HAVING. A cláusula GROUP BY é necessária no SELECT principal para agrupar as profissões.
EXTRAIR DADOS DE MAIS DE UMA TABELA
Sempre que é necessário extrair dados de mais de uma tabela um JOIN é feito, também conhecido como ENCADEAMENTO.
A finalidade do JOIN é obter informações que não estão em uma única tabela, e é especificado utilizando-se a cláusula WHERE.
SELECT coluna1, coluna2,....FROM tabela1, tabela2,...... WHERE condição de join;
JOIN-EQUI-JOIN (SIMÉTRICO)
O JOIN-EQUI-JOIN ocorre quando a condição de JOIN compara a igualdade entre as colunas da tabela 1 as colunas da tabela 2.
Podemos então observar que o relacionamento entre as duas tabelas (emp e dept) é uma condição de JOIN "EQUI-JOIN", pois os valores da coluna deptno em ambas as tabelas são iguais e o operador igual ( = ) é utilizado.
Exemplo:
Obtenha o nome e a profissão de todos os empregados e o nome dos departamentos em que os empregados estão lotados.
Para resolver este exemplo, é necessário comparar (condição de join) o valor da coluna deptno da tabela emp cpm o mesmo valor da coluna deptno da tabela dept, extraindo os nomes dos departamentos.
SQL> SELECT ename, job, dname
FROM emp, dept
WHERE emp.deptno=dept.deptno;
APELIDOS (ALIAS) PARA TABELAS
Para criar um apelido para uma tabela, defina-o na cláusula FROM. O apelido pode então ser utilizado como qualificador tanto na cláusula WHERE, quanto na cláusula SELECT.
Os apelidos também são chamados de LABELS TEMPORÁRIOS, e podem ter até 30 caracteres, mas quanto menos melhor.
Exemplo:
SQL> SELECT ename, job, D.deptno, dname
FROM emp E, dept D
WHERE E.deptno = D.deptno
ORDER BY D.deptno;
OUTRO MÉTODO DE FAZER JOIN
Fazendo um join da tabela com ela mesma.
SQL> SELECT E.name emp_name, E.sal emp_sal, M.ename mgr_name, M.sal mgr_sal
FROM emp E, emp M
WHERE E.mgr = M.empno AND E.sal < M.sal;
Observação: Os apelidos E e M para a tabela emp significa que, E são os empregados e M são os gerentes.
OPERADORES DE CONJUNTOS (SET OPERATORS)
UNION
A união de duas relações é o conjunto de todas as linhas que estão em uma ou outra relação, ignorando as duplicada, ou seja, retorna a união de dois SELECTs, ignorando as linhas duplicadas.
SQL> SELECT job
FROM emp
WHERE deptno = 10
UNION
SELECT job
FROM emp
WHERE deptno = 30;
INTERSECT
A interseção é o conjunto de todas as linhas que estão simultaneamente em ambas as relações, ou seja, retorna a interseção de dois SELECTs.
SQL> 	 SELECT job
FROM emp
WHERE deptno = 10
INTERSECT
SELECT job
FROM emp deptno = 30;
MINUS
A diferença é o conjunto de todas as linhas que estão em apenas uma das relações, ou seja, retornam a subtração de dois SELECTs.
SQL> 	 SELECT job
FROM emp
WHERE deptno = 10
MINUS
SELECT job
FROM emp
WHERE deptno = 30;
REGRAS PARA UTILIZAR UNION, INTERSECT e MINUS
A cláusula SELECT deve selecionar o mesmo número de colunas.
As colunas correspondentes devem ser o mesmo tipo de dado.
As linhas duplicadas são automaticamente eliminados.
Os nomes das colunas do primeiro SELECT é que aparecem no resultado.
A cláusula ORDER BY deve aparecer no final do comando.
A cláusula ORDER BY somente pode ser usada indicando o número da coluna.
Os operadores UNION, ITERSECT e MINUS podem ser utilizados em subqueries.
As colunas SELECTs são executadas de cima para baixo.
Vários SET OPERATORS podem ser utilizados. Para indicar a seqüência de execução deve-se utilizar-se parêntese.
LINGUAGEM DE DEFINIÇÃO DE DADOS (DDL)
CRIAR UMA TABELA
Para definir e criar uma tabela o comando CREATE TABLE é utilizado com a seguinte sintaxe:
CREATE TABLE nome-da-tabela (
(nome_coluna1 tipo_dado(tamanho)) [NULL/NOT NULL],
(nome_coluna2 tipo_dado(tamanho)) [NULL/NOT NULL],
(nome_coluna3 tipo_dado(tamanho)) [NULL/NOT NULL],
............................
(nome_colunan tipo_dado(tamanho)) [NULL/NOT NULL] )
Se for especificado a restrição NOT NULL, cada linha deve ter valor diferente de NULL para esta coluna. Se não for especificado nada, a opção NULL default é utilizada.
Exemplo:
CREATE TABLE dept (
deptno		NUMBER(2) not null,
dname		CHAR(12),
loc		CHAR(12) )
CRIAR UMA TABELA UTILIZANDO A ESTRUTURA DE OUTRA
Utilizando o CREATE TABLE e SELECT, podemos criar uma tabela utilizando a estrutura de outra tabela e ao mesmo tempo carregar a nova tabela com dados, conforme a condição especificada.
CREATE TABLE nome_tabela
[(nome_coluna1 tipo_dado(tamanho) NULL/NOT NULL],
(nome_coluna2 tipo_dado(tamanho) NULL/NOT NULL,
....................
(nome_colunan tipo_dado(tamanho) NULL/NOT NULL],
AS SELECT comando_select;
A tabela será criada com as colunas e com as linhas especificadas no SELECT;
Caso sejam definidos as colunas no CREATE TABLE, o número de colunas deve ser igual as do comando SELECT.
Exemplo1:
Criar uma tabela com as colunas número, nome, profissão e salário dos empregados do departamento 30.
		 CREATE TABLE TAB30
AS SELECT empno, ename, job, sal
FROM emp WHERE deptno = 30;
Exemplo 2:
Criar uma tabela com as colunas nome, salário e grade salarial de todos os empregados.
CREATE TABLE EMP_SALS(nome, salario, gradesal)
AS SELECT ename, sal, grade
FROM emp WHERE emp.sal BETWEEN losal AND hisal;
DATA MANIPULATION LANGUAGE – DML
A DML é um grupo de comandos SQL utilizados para INSERIR novas linhas, ALTERAR linhas e EXCLUIR linhas.
A) INSERIR LINHAS NA TABELA
O comando INSERT é utilizado para inserir novas linhas (ou ROWS) na tabela.
INSERT INTO nome_da_tabela(nome_coluna1, nome_coluna2, ............)
VALUES(valor1, valor2, .....................................);
Exemplo:
Inserir o departamento número 50, com nome MARKETING e localização SAN JOSÉ.
INSERT INTO dept(depto, dname, loc) VALUES(50, 'MARKETING','SAN JOSÉ');
Observação
Colunas com tipo de dado CHAR e DATE, devem ser colocadas entre aspas simples. Para inserir uma data ou hora em outro formato utiliza-se a função TO_DATE.
A.1) UTILIZANDO SUBSTITUIÇÃO DE VARIÁVEIS
	INSERT INTO dept(deptno, dname, loc) 
	VALUES(&dept_number, '&dept_name','&location');
Observação:
 Sempre que o INSERT é executado, um prompt com o nome da variável é mostrado.
A.2) COPIAR LINHAS (ROWS) DE OUTRA TABELA
INSERT INTO nome_tabela[(coluna1, coluna2,............)] SELECT comando_select;
Exemplo:
INSERT INTO tabd10(empno, ename, sal, job, hiredate) 
SELECT empno, ename, sal, job, hiredate
 FROM emp 
WHERE deptno = 10;
Observação:
 A tabela TABD10 deve ser criada antes.
B) ALTERAR LINHAS DA TABELA - SINTAXE
O comando UPDATE é utilizado para alterarvalores das linhas da tabela.
UPDATE nome_tabela
SET nome_coluna1 = valor/expressão
[ , nome_coluna2 = valor/expressão, ...........]
WHERE condição;
Exemplo:
Alterar a profissão para vendedor e aumentar o salário em 10% para o empregado com nome SCOTT.
UPDATE emp
SET job = 'VENDEDOR'
sal = sal *1.1
WHERE ename = 'SCOTT';
C) EXCLUIR LINHAS DA TABELA - SINTAXE
O comando DELETE é utilizado para excluir/remover uma ou mais linhas da tabela.
DELETE FROM nome_tabela
WHERE condição;
Exemplo:
Excluir todos os empregados que pertencem ao departamento 10.
DELETE FORM emp
WHERE deptno = 10;
Observação: Cuidado - se WHERE for omitido, todas as linhas da tabela são excluídas.

Outros materiais