Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Paulo André
PÁG. 1
I.1 - OBJETIVOS DO CURSO
Paulo André
PÁG. 2
I.2 - O QUE É BANCO DE DADOS?
Paulo André
PÁG. 3
I.3 - RDBMS (RELATIONAL DATABASE MANAGEMENT SYSTEM)
• Hierárquico
• Lista invertida
• Rede
• Relacional
Paulo André
PÁG. 4
I.4 - MODELO RELACIONAL
• Tabelas
• Colunas
• Linhas
• Campos
TABELA
Campo
Coluna
Uma relação pode ser vista como uma tabela. A recuperação de dados é
feita através de operações relacionais sobre estas tabelas.
Paulo André
PÁG. 5
I.5 - OPERADORES RELACIONAIS
RELAÇÃO DESCRIÇÃO
Paulo André
PÁG. 6
UNION
INTERSECTION
DIFFERENCE
PRODUTO
Paulo André
PÁG. 7
I.6 - PROPRIEDADES DE UM BANCO DE DADOS RELACIONAL
Paulo André
PÁG. 8
I.7 - PROPRIEDADE DE UMA COLEÇÃO DE DADOS TABULAR
SQL*Plus
Forms
Reports
Case
Pro*Oracle SQL ORACLE
Card KERNEL
Graphics
SQL*Net
SQL*Loader
Paulo André
PÁG. 9
I.8 - ARQUITETURA DE PRODUTOS ORACLE
• Interpretar SQL.
Paulo André
PÁG. 10
I.9 - SQL
Paulo André
PÁG. 11
I.10 - CARACTERÍSTICAS DO SQL
Paulo André
PÁG. 12
I.11 - O QUE É SQL*Plus
SQL*PLUS
SQL + Parâmetros de DB
controle de ORACLE
comandos Formatação
de controle
Características principais:
• Interpretador de comandos SQL;
Paulo André
PÁG. 13
I.12 - PL/SQL
• Declaração de variáveis.
• Atribuições ( X := Y + Z).
• Gerenciamento de exceções.
• Aumenta produtividade.
O PL/SQL oferece:
• Aumento de Performance
• Aumento de Produtividade
Paulo André
PÁG. 14
⇒ PL/SQL adiciona o poder do processamento procedural no
desenvolvimento de aplicativos. Adicionalmente aplicativos
escritos em PL/SQL são portáveis para qualquer computador ou
sistema operacional que execute o ORACLE RDBMS.
Paulo André
PÁG. 15
I.13 - PL/SQL NO ORACLE RDBMS
ORACLE RDBMS
Bloco PL/SQL Mecanismo
Paulo André
PÁG. 16
I.14 - CONJUNTO DE COMANDOS SQL
INSERT / UPDATE / DELETE Estes comandos são utilizados para entrar com
novas linhas, alterar as linhas já existentes e
remove-lás das tabelas em um específico
Banco de Dados. São também conhecidos
como comandos DML (Data Manipulation
Language).
Paulo André
PÁG. 17
II - COMANDOS SQL e SQL*Plus
Paulo André
PÁG. 18
II.1 - CONTEÚDOS
1. Ativação do SQL*Plus
2. Criação de tabelas
3. Manipulação de tabelas
4. Formatação de relatórios
5. Edição de comandos
6. Outros comandos
Paulo André
PÁG. 19
II.2 - ATIVAÇÃO DO SQL*Plus
$ sqlplus <ENTER>
SQL*Plus: Release 3.1.1.9.1 - Production on Wed Apr 3 08:56 …
Copyright (c) ORACLE Corporation 1979, 1992, All …
Enter user-name: oral1
Enter password: _________ a senha não é exibida
Connected to:
ORACLE7 Server Release 7.0.12.1.0 - Production
With the procedural option
PL/SQL Release 2.0.14.0.1 - Production
SQL>
ou a senha é exibida
$ sqlplus ora1/senha1
SQL*Plus: Release 3.1.1.9.1 - Production on Wed Apr 3 08:56 …
Copyright (c) ORACLE Corporation 1979,1992. All …
Connected to:
ORACLE7 Server Release 7.0.12.1.0 - Production
With the procedural option
PL/SQL Release 2.0.14.0.1 - Production
SQL>
Paulo André
PÁG. 20
II.3 - ESCREVENDO COMANDOS SQL
Paulo André
PÁG. 21
Qualquer um dessas sentenças são válidas:
SQL> SELECT
2 *
3 FROM
4 emp
5;
SQL> SELECT *
2 FROM emp;
Paulo André
PÁG. 22
II.4 - CRIAÇÃO DE TABELAS
Campos
Paulo André
PÁG. 23
Para criar a tabela de empregados:
somente o cabeçalho
Paulo André
PÁG. 24
II.5 - INCLUINDO NOVAS LINHAS EM UMA TABELA
VALUES ( expr )
,
( column ) subquery_2
Onde:
Paulo André
PÁG. 25
Caracteres e datas devem sempre estar entre aspas simples.
Para você inserir linhas em uma tabela, a tabela tem que ser sua ou você
tem que ter privilégios sobre ela.
ou
É possível incluir uma nova linha com valores atribuídos para cada coluna,
neste caso os nomes das colunas podem ser omitidos. Recomenda-se que a lista
de colunas seja sempre especificada.
Paulo André
PÁG. 26
O comando abaixo insere um registro na tabela dept.
INSERT INTO dept (deptno, dname, loc)
VALUES (99,’Financeiro’, ‘Curitiba’);
O exemplo abaixo insere uma linha com seis colunas na tabela EMP. Uma
dessas colunas está atribuída com valor nulo e outra está atribuída com notação
científica.
Exemplo:
SQL> INSERT INTO salgrade (losal, hisal, grade)
2 SELECT min(sal), max(sal), substr(sal, 1,1)
3 FROM emp
4 GROUP BY substr(sal, 1,1);
Paulo André
PÁG. 27
II.6 - ALTERANDO LINHAS DE UMA TABELA
Para você atualizar linhas em uma tabela, a tabela tem que ser sua ou
você tem que ter privilégios sobre ela.
Sintaxe:
UPDATE
,
table
snapshot
( subquery_1 )
,
,
column = expr
( subquery_3 )
WHERE condição
Paulo André
PÁG. 28
Onde:
Paulo André
PÁG. 29
O comando abaixo fornece ao SCOTT a profissão de VENDEDOR e um
aumento de salário de 10%.
UPDATE emp
SET job = ‘VENDEDOR’,
sal = sal * 1.1
WHERE ename = ‘SCOTT’;
UPDATE emp
SET comm = NULL
WHERE job = ‘SALESMAN’;
Paulo André
PÁG. 30
Para dar 10% de aumento para os funcionários que trabalham no
departamento 10.
Paulo André
PÁG. 31
II.7 - REMOVENDO LINHAS DE UMA TABELA
( subquery )
WHERE condição
Onde:
Para você apagar linhas em uma tabela, a tabela tem que ser sua ou você
tem que ter privilégios sobre ela.
Paulo André
PÁG. 33
II.8 - O COMANDO TRUNCATE
Observações:
• A opção DROP STORAGE libera o espaço físico alocado à tabela para
o banco de dados.
Exemplos:
• Para remover as linhas da tabela EMP, liberando seu espaço físico:
Paulo André
PÁG. 34
II.9 - EDIÇÃO DE COMANDOS
SQL> l
1 SELECT
2 empno, ename
3 FROM emp
4* WHERE empno = 7902
Paulo André
PÁG. 35
Para inserir linhas após a linha corrente:
SQL> list 2
2* empno, ename
SQL> imput
ou
SQL> list
1 SELECT
2 empno, ename
3 job,
4 sal
5* FROM emp;
Paulo André
PÁG. 36
Para substituir caracteres da linha corrente:
SQL> list 2
2* empno, ename, mgr,
SQL> change/mgr/sal/
ou
SQL> c/mgr/sal/
SQL> list
1 SELECT
2 empno, ename, sal,
3 job,
4 sal
5* FROM emp
ou
SQL> r
ou
SQL> /
Paulo André
PÁG. 37
Para modificar o conteúdo do buffer corrente com um editor externo:
SQL> edit
ou
SQL> @arquivo
Paulo André
PÁG. 38
II.10 - OUTROS COMANDOS
ou
SQL> ! Is - al
total 20
nome do comando
Paulo André
PÁG. 39
II.11 - EXERCÍCIOS
2. Insira dados sobre você e algum membro da sua família na tabela ALUNO.
Paulo André
PÁG. 40
III - CONSULTAS BÁSICAS
Paulo André
PÁG. 41
III.1 - CONTEÚDO
1. Seleção de colunas
2. Uso de expressões
3. Ordenação de resultados
4. Agrupamento
5. Operações de conjunto
6. Junção de tabelas
Paulo André
PÁG. 42
III.2 - SELEÇÃO DE COLUNAS
Paulo André
PÁG. 43
Sintaxe:
SELECT *
,
DISTINCT
ALL table .*
schema. View
snapshot
expr
c_alias
AS
,
FROM table
snapshot
, INTERSECT
HAVING condição
,
ORDER BY expr
position ASC
c_alias DESC
Onde:
Paulo André
PÁG. 44
DISTINCT retorna somente uma cópia de cada linha
selecionada que for duplicada.
ALL retorna todas as linhas selecionadas,
incluindo as duplicadas. O default é ALL.
* select todas as colunas de todas as tabelas.
table.*, view.*, snapshot.* seleciona todas as colunas da tabela, visão
ou snapshot. Você pode usar o schema
para selecionar de uma tabela, visão ou
snapshot em um outro schema.
expr seleciona uma expressão.
c_alias provê um nome diferente para a coluna.
schema é o schema contendo a tabela, visão ou
snapshot. Se você omitir o schema, o
Oracle assume a tabela, visão ou snapshot
como seu próprio dono.
table, view, snapshot é o nome da tabela, visão ou snapshot no
qual está sendo selecionado.
dblink é o nome completo ou parcial para um link
de banco de dados com um banco de dados
remoto onde a tabela, visão ou snapshot
está localizada.
t_alias provê um nome diferente para a tabela,
visão ou snapshot ou subconsulta.
WHERE restringe as linhas selecionadas. Se você
omitir esta cláusula, o Oracle retorna todas
as linhas da tabela, visão ou snapshot.
START WITH, retorna linhas em uma ordem hierárquica.
CONNECT BY
GROUP BY função de grupo
HAVING restringe os grupos de cada linha retornada
no GROUP BY.
UNION, UNION ALL, combina as linhas retornadas por dois
INTERSECT, MINUS comandos SELECT usando uma operação
de função.
Paulo André
PÁG. 45
ORDER BY ordena as linhas retornadas por um
comando.
Expr ⇒ ordena linhas baseadas no valor de
expr. A expressão é baseada em
colunas na lista selecionada ou
colunas em tabelas, visões ou
snapshots na cláusula FROM.
Position ⇒ ordena linhas baseado em seus
valores para a expressão na posição da
lista selecionada.
ASC, DESC ⇒ especifica a ordenação
ascendente ou descendente. O opção ASC
é default.
SQL> SELECT *
2 FROM emp
3 WHERE deptno = 30;
ENAME EMPNO
SMITH 7369
ALLEN 7499
EMPNO ENAME
7369 SMITH
7499 ALLEN
Paulo André
PÁG. 48
III.3 - OPERADORES ARITMÉTICOS
SELECT 2*X+10
... WHERE X > Y / 2
SELECT 2 * X + 1
... WHERE X > Y - Z
Paulo André
PÁG. 49
III.4 - USO DE EXPRESSÕES
ENAME 12*SAL
SMITH 9600
ALLEN 19200
WARD 15000
JONES 35700
MARTIN 15000
BLAKE 34200
CLARK 29400
SCOTT 36000
KING 60000
TURNER 18000
ADAMS 13200
JANES 11400
FORD 36000
MILLER 15600
Paulo André
PÁG. 50
Para saber o número total de caracteres nas colunas ENAME e JOB:
sinônimo para a
coluna
SQL> SELECT
2 length (ename) +
3 length(job) “Comprimento Total”
4 FROM emp;
Comprimento Total
10
13
12
12
14
12
12
12
13
14
10
10
11
11
Paulo André
PÁG. 51
III.5 - OPERADORES DE CARACTERES
Paulo André
PÁG. 52
Para saber os nomes dos empregados que trabalham no departamento 20.
ENAME
SMITH
JONES
SCOTT
ADAMS
FORD
Paulo André
PÁG. 53
Para saber o tempo de serviço dos funcionários cuja comissão é maior que
50% do salário:
ENAME MESES
MARTIN 187.5371
Paulo André
PÁG. 54
III.6 - OPERADORES DE COMPARAÇÃO
NOT BETWEEN Validam uma expressão como sendo maior ou igual ao valor que
- AND segue BETWEEN e menor ou igual ao valor que segue AND.
NOT LIKE Este operador é usado para comparar duas strings de caracteres
e verificar se elas são parecidas.
• Podem ser utilizados caracteres % e _ . O caracter percentual
(%) é utilizado para comparar um ou mesmo nenhum
caracter, entretanto não pode comparar um valor nulo. O
caracter sublinhado (_) é utilizado para comparar exatamente
um caracter.
• Função UPPER: utilizada para fazer com que as expressões
sejam avaliadas corretamente comparando letras minúsculas
e maiúsculas.
IS NOT NULL Este operador deve ser usado quando for necessário testar uma
condição para verificar se ela é nula ou não.
Paulo André
PÁG. 56
III.7 - OPERADORES LÓGICOS
Paulo André
PÁG. 57
III.8 - OUTROS OPERADORES
(+) Indica que a coluna precedida pelo sinal (+) está relacionada à
coluna anterior da declaração e faz parte de outra tabela. Este
operador é utilizado para especificar os relacionamentos entre as
colunas.
Paulo André
PÁG. 58
III.9 - SUBSTITUIÇÃO DE VARIÁVEIS
Paulo André
PÁG. 59
III.10 - ORDENAÇÃO DE RESULTADOS
Paulo André
PÁG. 60
Para listar os empregados em ordem descrescente de salário, por cargo.
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE job in (‘ANALYST’, ‘SALESMAN’,
4 ‘MANAGER’)
5 ORDER BY job, sal desc;
Pode-se
usar expressões ou referências à posição de expressões no
SELECT como argumentos do ORDER BY:
Paulo André
PÁG. 61
III.11 - A CLÁUSULA WHERE
SELECT *
FROM emp
WHERE deptno = 30;
Paulo André
PÁG. 62
III.12 - CLÁUSULA GROUP BY
A cláusula GROUP BY pode ser usada para dividir as linhas de uma tabela
em pequenos grupos. Funções de grupos podem ser utilizadas para retornar uma
informação sumarizada de cada grupo.
Paulo André
PÁG. 63
Para saber quantos funcionários trabalham em cada departamento.
EMP ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 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-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
DEPTNO COUNT(*)
10 3
20 5
30 6
Nota: Omitir a cláusula “GROUP BY” significa agrupar toda a tabela.
Paulo André
PÁG. 64
III.13 - CLÁUSULA HAVING
Paulo André
PÁG. 65
Para saber a soma dos salários para os cargos onde a média de salários é
maior que 1500:
selecione os grupos
(“where” de grupo) função de grupo
Paulo André
PÁG. 66
III.14 - OPERAÇÕES DE CONJUNTO
Tabela
Col. 1 Col. 2
A 1
B 1
D 2
(A,1)
elementos
(B,1) do
conjunto
(D,2)
Conjunto
• União (UNION)
• Intersecção (INTERSECT)
• Diferença (MINUS)
Paulo André
PÁG. 67
União
TABELAS
union
Col1 Col2
A 1
A 2
B 1
D 2
E 2
Paulo André
PÁG. 68
Intersecção
TABELAS
intersect
Col1 Col2
B 1
D 2
Paulo André
PÁG. 69
Diferença
minus
Col1 Col2
A 1
Paulo André
PÁG. 70
III.15 - JUNÇÃO DE TABELAS
A,
B, C X 1,2
(A,1), (A,2),
(B,1), (B,2),
(C,1), (C,2)
tab1 tab2
col1 col2 col3 col4 col5
A 3 B 2 E
ENAME DNAME
SMITH RESEARCH
ALLEN SALES
WARD SALES
JONES RESEARCH
MARTIN SALES
BLAKE SALES
CLARK ACCOUNTING
SCOTT RESEARCH
KING ACCOUNTING
TURNER SALES
ADAMS RESEARCH
JAMES SALES
FORD RESEARCH
MILLER ACCOUNTING
Paulo André
PÁG. 72
ENAME DEPTNO EMP.DEPTNO DEPT.DEPTNO
SMITH ACCOUNTING 20 10
ALLEN ACCOUNTING 30 10
WARD ACCOUNTING 30 10
JONES ACCOUNTING 20 10
MARTIN ACCOUNTING 30 10
BLAKE ACCOUNTING 30 10
CLARK ACCOUNTING 10 10
SCOTT ACCOUNTING 20 10
KING ACCOUNTING 10 10
TURNER ACCOUNTING 30 10
ADAMS ACCOUNTING 20 10
JAMES ACCOUNTING 30 10
FORD ACCOUNTING 20 10
MILLER ACCOUNTING 10 10
SMITH RESEARCH 20 20
ALLEN RESEARCH 30 20
WARD RESEARCH 30 20
JONES RESEARCH 20 20
MARTIN RESEARCH 30 20
BLAKE RESEARCH 30 20
CLARK RESEARCH 10 20
SCOTT RESEARCH 20 20
KING RESEARCH 10 20
TURNER RESEARCH 30 20
ADAMS RESEARCH 20 20
JAMES RESEARCH 30 20
FORD RESEARCH 20 20
MILLER RESEARCH 10 20
SMITH SALES 20 30
ALLEN SALES 30 30
WARD SALES 30 30
JONES SALES 20 30
MARTIN SALES 30 30
BLAKE SALES 30 30
CLARK SALES 10 30
SCOTT SALES 20 30
KING SALES 10 30
TURNER SALES 30 30
ADAMS SALES 20 30
JAMES SALES 30 30
FORD SALES 20 30
MILLER SALES 10 30
SMITH OPERATIONS 20 40
ALLEN OPERATIONS 30 40
WARD OPERATIONS 30 40
JONES OPERATIONS 20 40
MARTIN OPERATIONS 30 40
BLAKE OPERATIONS 30 40
CLARK OPERATIONS 10 40
SCOTT OPERATIONS 20 40
KING OPERATIONS 10 40
TURNER OPERATIONS 30 40
ADAMS OPERATIONS 20 40
JAMES OPERATIONS 30 40
FORD OPERATIONS 20 40
MILLER OPERATIONS 10 40
Paulo André
PÁG. 73
Dada a tabela salgrade, que classifica faixas de salários:
especifica um tipo
de junção
Paulo André
PÁG. 74
Pode-se combinar diversas opções no mesmo comando SQL:
Paulo André
PÁG. 75
III.16 - EXERCÍCIOS
4. Obtenha a soma dos salários dos empregados que não trabalham nos
departamentos 10 ou 30.
Paulo André
PÁG. 76
IV - CONSULTAS AVANÇADAS
Paulo André
PÁG. 77
IV.1 - CONTEÚDO
1. Pseudo - colunas
2. Junção externa
3. Auto-Junção
4. Consultas encaixadas
5. Consultas hierárquicas
Paulo André
PÁG. 78
IV.2 - PSEUDO-COLUNAS
T Nome Descrição
N nome_seq.CURRVAL Valor corrente da sequência nome_seq
N nome_seq.NEXTVAL Próximo valor da sequência nome_seq
N LEVEL Usada no comando SELCT …
CONNECT BY; é igual a 1 para o nó raíz
de uma árvore, 2 para seus filhos e
assim por diante
- NULL Valor nulo
R ROWID Identificação interna de uma linha
N ROWNUM Número que indica a ordem de
seqüência da linha selecionada em uma
consulta
ROWNUM ROWID
1 00000984.0001.0001
Paulo André
PÁG. 79
IV.3 - JUNÇÃO EXTERNA
Paulo André
PÁG. 80
ENAME DEPTNO EMP.DEPTNO DEPT.DEPTNO
SMITH ACCOUNTING 20 10
ALLEN ACCOUNTING 30 10
WARD ACCOUNTING 30 10
JONES ACCOUNTING 20 10
MARTIN ACCOUNTING 30 10
BLAKE ACCOUNTING 30 10
CLARK ACCOUNTING 10 10
SCOTT ACCOUNTING 20 10
KING ACCOUNTING 10 10
TURNER ACCOUNTING 30 10
ADAMS ACCOUNTING 20 10
JAMES ACCOUNTING 30 10
FORD ACCOUNTING 20 10
MILLER ACCOUNTING 10 10
SMITH RESEARCH 20 20
ALLEN RESEARCH 30 20
WARD RESEARCH 30 20
JONES RESEARCH 20 20
MARTIN RESEARCH 30 20
BLAKE RESEARCH 30 20
CLARK RESEARCH 10 20
SCOTT RESEARCH 20 20
KING RESEARCH 10 20
TURNER RESEARCH 30 20
ADAMS RESEARCH 20 20
JAMES RESEARCH 30 20
FORD RESEARCH 20 20
MILLER RESEARCH 10 20
SMITH SALES 20 30
ALLEN SALES 30 30
WARD SALES 30 30
JONES SALES 20 30
MARTIN SALES 30 30
BLAKE SALES 30 30
CLARK SALES 10 30
SCOTT SALES 20 30
KING SALES 10 30
TURNER SALES 30 30
ADAMS SALES 20 30
JAMES SALES 30 30
FORD SALES 20 30
MILLER SALES 10 30
SMITH OPERATIONS 20 40
ALLEN OPERATIONS 30 40
WARD OPERATIONS 30 40
JONES OPERATIONS 20 40
MARTIN OPERATIONS 30 40
BLAKE OPERATIONS 30 40
CLARK OPERATIONS 10 40
SCOTT OPERATIONS 20 40
KING OPERATIONS 10 40
TURNER OPERATIONS 30 40
ADAMS OPERATIONS 20 40
JAMES OPERATIONS 30 40
FORD OPERATIONS 20 40
MILLER OPERATIONS 10 40
Não existem empregados no departamento 40
Paulo André
PÁG. 81
Solução: fazer de conta que existe uma linha fictícia, totalmente nula, na
tabela de empregados, para que ela seja associada à linha do departamento 40
(junção externa):
Paulo André
PÁG. 82
IV.4 - AUTO - JUNÇÃO
Paulo André
PÁG. 83
IV.5 - CONSULTAS ENCAIXADAS
Subqueries podem:
• Retornar uma ou mais linhas.
• Agrupar tabelas.
Para saber quais empregados ganham mais que a média dos salários:
SQL> SELECT empno, ename, sal parenteses delimitam a
2 FROM emp sub-consulta
3 WHERE sal > (select avg(sal) from emp);
resultado desta sub-consulta é
um único valor
Paulo André
PÁG. 84
Para saber quais funcionários trabalham com o SCOTT.
operador de exclusão
de conjunto
DEPTNO DNAME
40 OPERATONS
Encontre o funcionário com maior salário.
Encontre os funcionários com maior salário em cada departamento.
Paulo André
PÁG. 85
Para recuperar os empregados que ganham mais que a média de salário
do seu departamento:
Paulo André
PÁG. 86
Para que todos os empregados mais novos de cada cargo ganhem o
melhor salário e a média das comissões de seu cargo:
Paulo André
PÁG. 87
IV.6 - CONSULTAS HIERÁRQUICAS
Paulo André
PÁG. 88
75 / PRESIDENTE
Paulo André
PÁG. 89
Para saber o nome do Presidente e de seus subordinados, exceto aqueles
que são também subordinados de JONES:
Paulo André
PÁG. 90
Podemos usar uma pseudo-coluna LEVEL para saber o nível de cada
registro na hierarquia:
LEVEL NOME
1 KING
2 JONES
3 SCOTT
4 ADAMS
3 FORD
4 SMITH
2 BLAKE
3 ALLEN
3 WARD
3 MARTIN
3 TURNER
3 JAMES
2 CLARK
3 MILLER
Paulo André
PÁG. 91
IV.7 - EXERCÍCIOS
Paulo André
PÁG. 92
VI - ESTRUTURA DE DADOS
Paulo André
PÁG. 93
VI.1 - ESTRUTURA DE DADOS ORACLE
Paulo André
PÁG. 94
VI.2 - CRIANDO UMA TABELA
Paulo André
PÁG. 95
VI.3 - DIRETRIZES PARA CRIAÇÃO DE NOMES DE TABELAS
Paulo André
PÁG. 96
VI.4 - TIPOS DE COLUNAS
Quando criar uma tabela, você deve especificar os tipos das colunas. Os
mais utilizados são:
DATE São valores tipo data. Ex.: December 31, 4712 BC. Usa 7
bytes.
Paulo André
PÁG. 97
VI.5 - A OPÇÃO NULL E NOT NULL
NULL Esta opção define que a coluna pode possuir valores nulos.
Esta opção é default e pode ser omitida.
NOT NULL Esta opção assegura que a coluna sempre tenha valores
diferentes de nulo. Se tentar incluir uma linha com a coluna
que tem essa opção sem valor, o ORACLE enviará uma
mensagem de erro.
Paulo André
PÁG. 98
VI.6 - CLÁUSULA CONSTRAINT
Uma constraint pode ser definida para tabelas e colunas e são definidas no
comando CREATE ou ALTER TABLE.
Paulo André
PÁG. 99
Existem dois tipos de constraints:
• Constraints de tabela
• Constraints de coluna
Estes tipos são idênticos, a não ser que as constraint de coluna refereciem
a uma coluna enquanto a de tabela refereciem a uma ou mais colunas da tabela.
Paulo André
PÁG. 100
VI.7 - PARÂMETROS DA CONSTRAINT
FOREIGN KEY ( coluna ...)/ Identifica que essa é uma chave estrangeira da tabela
REFERENCES do usuário definida. Deve sempre estar referenciada a
usuário.tabela(colunas) uma tabela e não a uma visão.
Paulo André
PÁG. 101
VI.8 - CREATE TABLE
Sintaxe:
CREATE TABLE table
schema.
( coluna tipo )
table_constraint
AS subquery
Paulo André
PÁG. 102
Onde:
Paulo André
PÁG. 103
Criando a tabela DEPT.
Criando a tabela EMP.
Paulo André
PÁG. 104
VI.9 - CRIAR UMA TABELA COM BASE EM UMA JÁ EXISTENTE
Table created.
• Exemplo:
DNAME Media_Salario
ACCOUNTING 2916.6667
RESEARCH 2175
SALES 1566.6667
Paulo André
PÁG. 105
VI.10 - ALTERAÇÃO DE UMA TABELA
Paulo André
PÁG. 106
VI.11 - ALTERANDO UMA TABELA
ADD ( column_datatype )
DEFAULT exp column_constraint
table_constraint
,
MODIFY ( column )
datatype DEFAULT expr column_contraint
Paulo André
PÁG. 107
Onde:
Table é o nome da tabela a ser alterada.
ADD adiciona uma coluna ou integridade de
constraint.
MODIFY modifica a definição de uma coluna existente.
Column é o nome da coluna a ser alterada ou
modificada.
Datatype especifica um tipo para a coluna ou um novo
tipo para uma coluna existente.
DEFAULT especifica um valor default para uma nova
coluna ou um novo valor default para uma
coluna existente. O Oracle assume esse
valor para a coluna se um comando INSERT
subsequence omitir um valor para a coluna.
O tipo de um valor default tem que ser igual
ao tipo especificado para a coluna. A
expressão DEFAULT não pode conter
referências a outras colunas.
Column_constraint adiciona ou remove uma constraint NOT
NULL para ou de uma coluna existente.
Table_constraint adiciona uma integridade de constraint para
a tabela.
Paulo André
PÁG. 108
O comando abaixo adiciona a coluna NOME_DA_ESPOSA na tabela EMP.
ALTER TABLE EMP
ADD( nome_da_esposa CHAR (10));
Paulo André
PÁG. 109
VI.12 - O COMANDO RENAME
Paulo André
PÁG. 110
VI.13 - DROP TABLE
Sintaxe:
DROP TABLE table
schema. CASCADE CONSTRAINTS
Onde:
Paulo André
PÁG. 111
VI.14 - ELIMINANDO CONSTRAINT DA TABELA
Paulo André
PÁG. 112
VI.15 - DOCUMENTANDO UMA TABELA
Eliminando um comentário:
COMMENT ON COLUMN emp.empno;
Para
visualizar os comentários, eles estão armazenados nas seguintes
visões (VIEWS) do dicionário de dados: ALL_COL_COMMENTS ou
USER_COL_COMMENTS.
Paulo André
PÁG. 113