SQL

Propaganda
Introdução
ao
Oracle 8i
Sistema Gerenciador de Banco de Dados
•
•
Objetivos deste curso :
–
Descrever os conceitos de Bancos de Dados Relacionais tendo como
enfoque o ORACLE.
O que é uma Base de Dados (Database)?
–
–
Uma base de dados é uma coleção de informações organizadas.
Em um sistema manual tradicional os dados são geralmente guardados
em fichas e estocados em arquivos. Para selecionar dados, um acesso
manual nestes arquivos é necessário.
Um sistema baseado em computador, os dados são armazenados tipicamente em
meios magnéticos e são acessados através de programas.
Sistema Gerenciador de Banco de Dados
•
Base de dados informatizada:
–
Em uma base de dados informatizada existem muitas vantagens:
•
•
•
•
•
•
•
Alteração e recuperação dos dados é mais rápida;
A informação ocupa menos espaço para ser armazenada;
Muitos usuários podem compartilhar as mesmas informações ao
mesmo tempo; a redundância de dados é minimizada;
Inconsistências podem ser evitadas;
Padrões podem ser estabelecidos;
Pode-se implementar níveis de segurança nestes dados;
etc.
Sistema Gerenciador de Banco de Dados
•
O Database Management System (DBMS):
–
–
–
Para controlar o acesso e o armazenamento das informações é
necessário um DBMS. O DBMS ( Sistema Gerenciador de Banco de
Dados ) é o programa que fica responsável pelo controle de acesso dos
usuários à base de dados. Ele controla o armazenamento dos dados, a
recuperação e a alteração nestes dados.
O DBMS age na interface entre a base de dados e os usuários da base
de dados.
Dentre os tipos de bancos de dados existentes, os mais recentes são
os bancos de dados relacionais, destacando-se entre eles o ORACLE.
Sistema Gerenciador de Banco de Dados
•
Conceitos Relacionais:
–
–
Uma base de dados relacional é conhecida pelos usuários como uma
coleção de tabelas de duas dimensões. Existem quatro conceitos
básicos:
•
•
•
•
tabelas
colunas
linhas
campos
O modelo relacional tem como base o ramo da matemática conhecido
como álgebra relacional. Este modelo envolve:
•
•
uma coleção de objetos conhecidos como relações,
um conjunto de operadores que agem nestas relações
produzindo novas relações.
Visão Geral de Algumas Ferramentas ORACLE
•
•
ORACLE Server
É o servidor do banco de dados, que gerencia o armazenamento e
recuperação dos dados. Os demais produtos funcionam tendo o servidor
como base.
SQL
É a linguagem padrão dos bancos de dados relacionais, entre eles o
ORACLE.
•
PL/SQL
Extensões procedurais do ORACLE ao SQL.
•
•
Developer/2000
Conjunto de ferramentas de desenvolvimento visual que permitem a
criação de aplicativos de banco de dados, destacando-se o Forms
Builder, para criação de formulários e Report Builder, para criação de
relatórios.
SQL*Plus
É um ambiente através do qual os comandos SQL podem ser entrados,
executados e retornados na tela ou através de relatórios. Será nesta ferramenta
que constituiremos toda estrutura do nosso projeto de banco de dados relacional.
Usando a linguagem SQL, criaremos o usuário que irá possuir as tabelas do
nosso projeto.
Introdução a Linguagem SQL
•
Características SQL:
–
–
–
–
•
•
Para acesso a um banco de dados relacional, é necessário uma
linguagem. A Structured Query Language é a linguagem usada pela
maioria dos bancos de dados relacionais.
SQL é uma linguagem baseada no inglês, e usa palavras chaves como:
select, insert, delete, update como parte de seu conjunto de comandos;
SQL processa um conjunto de linhas por vez, ao invés de uma linha.
SQL oferece uma série de comandos para uma variedade de tarefas
diferentes, incluindo:
•
•
•
•
seleção de dados;
inserção, alteração, e deleção de linhas em uma tabela;
criar, deletar e alterar objetos do banco de dados;
etc.
SQL*Plus:
–
O SQL*Plus é um ambiente através do qual os comandos SQL podem
ser entrados, executados e retornados na tela ou através de relatórios.
Ele contém uma série de comandos que ajudam na edição, salvamento
e execução de comandos SQL ou arquivos de comandos SQL
chamados scripts.
Principais comandos SQL:
Comando
Descrição
select
seleciona dados de uma base de dados
insert
Insere linhas em uma tabela
update
altera valores de linhas na base de dados
delete
elimina linhas na tabela
create
cria objetos na base de dados
alter
altera a estrutura de um objeto da base
drop
elimina determinado objeto da base de dados
grant
dá direitos de acessos aos objetos do banco de dados
Escrevendo Comandos SQL
•
Para escrever comandos SQL você precisa:
–
Estar no SQL*Plus.
•
Entre no SQL*Plus através de um click no seu ícone:
Será aberta uma caixa de diálogo para você entrar com o nome do seu usuário (
scott ), sua password ( tiger ) e a identificação do banco de dados que será
conectado ( connect string );
A seguir será aberta a tela do SQL*Plus para você entrar com os
comandos:
•
Regras básicas para escrever os comandos SQL:
–
–
–
–
–
Os comandos podem ser escritos em mais de uma linha;
Cláusulas diferentes são colocadas usualmente em linhas diferentes;
Podem ser usadas tabulações ( endentação );
Comandos podem ser escritos em letras maiúsculas e/ou minúsculas;
Qualquer forma abaixo do comando é válida:
select * from emp;
select
*
from emp;
select *
from emp;
Visão Geral de Usuários e Segurança
Criação de usuários Oracle:
–
–
Para acesso ao banco de dados, é preciso informar um usuário e
password. Este usuário é criado pelo usuário administrador do banco
de dados conhecido como DBA ( DataBase Administrator ).
Para criar um usuário Oracle, usamos a seguinte sintaxe :
SQL> create user aluno identified by senha ;
User created.
Atribuindo Permissões e Direitos aos Usuários
•
•
Assim que um usuário é criado no banco ele não tem privilégios de acesso a
conexão no banco de dados nem de fazer nenhuma tarefa no banco de
dados.
Para isso o administrador do banco (DBA), deve atribuir ao usuário estes
acessos (Roles).
Atribuindo Permissões e Direitos aos Usuários
•
Existem 05 roles default no banco de dados:
Role
Direitos
connect
se conectar ao banco de dados.
resource
criar tabelas, sinônimos, views, etc. Acesso só aos próprios objetos.
imp_full_database
usar o comando imp para recuperar a base de dados de um backup.
exp_full_database
fazer backup da base de dados completa.
dba
administração do banco e acesso aos objetos de outros usuários.
Troca de Password de um Usuário
•
A troca de password de um usuário só pode ser feita pelo próprio usuário ou
pelo DBA.
–
–
Ex.:
Para trocar a password do usuário aluno :
SQL> alter user aluno identified by novasenha;
User altered.
Privilégios em Tabelas
•
•
Quando um usuário cria um objeto no banco de dados, só ele tem acesso
àquele objeto. O dono deste objeto pode passar determinado privilégio para
que outros usuários possam também acessá-lo.
Para isso o usuário deve usar o comando grant.
–
Sintaxe:
GRANT
ON
TO
privilégio
objeto
[ usuário | role ]
Ex.:
SQL> grant DBA to ALUNO;
Estrutura de Dados Oracle
•
•
•
Tabelas podem ser criadas a qualquer momento;
O tamanho dos dados é variável, somente os números e/ou caracteres são
realmente guardados no banco;
A estrutura da tabela pode ser modificada on-line;
Não é preciso especificar o tamanho de uma tabela.
Criação de Tabelas
•
O nome de uma tabela deve seguir as regras padrões de nomes de
objetos Oracle:
–
–
–
–
O nome deve começar com uma letra;
Ele pode conter letras, números e o caracter especial ( _ underscore ) .
Podem também ser usados os caracteres ( $ e # ) ( o que não é
recomendado ) ;
O nome de uma tabela não é sensível a letras maiúsculas / minúsculas.
Uma tabela pode ser referenciada por: aluno, ALUNO, Aluno, etc.;
Deve ter até no máximo 30 caracteres;
–
O nome da tabela tem que ser único ( incluindo outros objetos do
banco de dados );
O nome não pode ser uma palavra reservada de SQL
Tipos das Colunas
•
Quando uma tabela é criada, você precisa especificar o tipo de dados para
cada campo da tabela.
Tipos de dados em banco de dados Oracle:
Datatype
char ( tamanho )
varchar2( tamanho )
number ( p , e )
date
Long
raw
long raw
ROWID
Descrição
Tamanho máximo
campo caracter tamanho fixo
campo caracter tamanho variável
(tamanho máximo tem que ser
especificado)
Campo numérico de tamanho variável
tamanho fixo no formato data ( DD-MONYY )
campo caracter de tamanho variável
campo binário de tamanho variável (
tamanho máximo deve ser especificado )
campo binário de tamanho variável (
tamanho máximo deve ser especificado)
campo binário que indica o
endereçamento das linhas de uma tabela
255
4000
38,38
2Giga
2000
2Giga
06
Criando uma Tabela
•
Para criar uma tabela no SQL*Plus, usa-se o comando create table:
create table nome_da_tabela
( nome_de_coluna tipo( tamanho) [NULL
nome_de_coluna tipo( tamanho) [NULL
nome_de_coluna tipo( tamanho) [NULL
–
|
|
|
NOT NULL ],
NOT NULL ],
NOT NULL ], ...)
Ex.:
SQL> create table curso
(cod_periodo number(3) not null,
dat_inicial date
not null,
dat_final
date);
–
Após o comando ser executado o Oracle retorna a seguinte
mensagem:
Table created.
–
Para ver a descrição da estrutura da tabela, entre com o seguinte
comando:
SQL> desc curso
Name
------------------------------COD_PERIODO
DAT_INICIAL
DAT_FINAL
Null?
-------NOT NULL
NOT NULL
Type
---NUMBER(3)
DATE
DATE
Alterando uma Tabela
•
Através do comando alter table o usuário pode alterar a estrutura de uma
tabela, adicionar ou retirar uma constraint, etc.
–
Adicionar uma coluna:
SQL> alter table curso add (programa varchar2(40));
–
Modificar um tipo/tamanho de um campo:
SQL> alter table curso modify (programa varchar2(60));
–
Remover uma coluna ( somente versão do banco de dados 8.1.5 ou
superior :
SQL> alter table curso drop colunm programa;
Removendo / Renomeando uma Tabela
•
Para remover uma tabela da base de dados utilize o comando Drop
Table:
drop table nome_table;
•
Ao deletar uma tabela:
–
Todos os dados da tabela serão perdidos junto com os índices
associados;
–
•
–
Qualquer View, ou sinônimos existentes continuarão existindo porém
inválidos;
Somente o criador da tabela e o DBA podem eliminá-la.
Para renomear uma Tabela, View, ou Sinônimos
rename nome_antigo to nome_novo
Criação de Seqüências Automáticas
•
Seqüências (sequences), são estruturas do banco de dados que geram
números seqüenciais que podem ser usados para gerar chaves únicas ou
para gerar seqüências numéricas controladas pelo próprio banco.
–
Para gerar uma sequence no banco de dados:
SQL> create sequence SEQ increment by 1
2
start with
1
3
maxvalue
10
Sequencia criada.
–
No comando create sequence os operandos são os seguintes:
•
•
•
–
increment by n
– o valor (n) que será incrementado cada vez que a
seqüência for selecionada.
start with n
– valor inicial (n) da seqüência.
maxvalue n
– valor final (n) da seqüência.
Para a utilização dos números gerados pela seqüência é feito um select
na seqüência, especificando que o usuário deseja o próximo valor a ser
gerado:
Ex.:
SQL> select seq.nextval from dual;
NEXTVAL
--------1
–
Na próxima execução do comando select o valor será incrementado de
acordo com a definição da seqüência.
Ex.:
SQL> select seq.nextval from dual;
NEXTVAL
--------2
–
O usuário pode selecionar o valor corrente da seqüência através
usando :
SQL> select seq.currval from dual;
CURRVAL
--------2
Alterando/Removendo Sequences
•
Para alterar uma seqüência utilizamos o comando ALTER SEQUENCE :
SQL> alter sequence SEQ increment by 1
2
maxvalue
1000;
Obs: Não é possível alterar o número inicial de uma seqüência. Para alterar o
valor de START WITH, devemos remover e recriar a sequence.
•
Para eliminar uma seqüência utilize o comando drop:
SQL> drop sequence seq;
Seqüência eliminada.
Inserindo Novas Linhas em Tabela
•O comando insert é usado para adicionar linhas em uma tabela.
–Sintaxe:
insert into tabela [ ( coluna,coluna... ) ]
values ( valor,valor,...)
–Para inserir um novo periodo na tabela PERIODOS_LETIVOS:
SQL> insert into curso(cod_periodo, dat_inicial, dat_final)
values(5,’01-MAR-96’,’30-JUN-96’);
No caso acima onde serão inseridos dados em todas as colunas da tabela, a
lista de colunas não precisava ser especificada, portanto os dados devem ser
colocados na ordem em que aparecem na tabela.
–Valores caracter e de data devem ser especificados entre aspas simples. Valores
que não vão ser especificados podem ser definidos como Null.
Copiando Linhas de outra Tabela
•Você pode usar os dados existentes em uma tabela para inserir dados em outra:
insert into table [ ( coluna,coluna,...) ]
select lista-de-seleção
from tabela
–Ex.: Para copiar todas as informações dos alunos de NATAL para a tabela
ALUNOS_NATAL :
SQL>
insert
into alunos_natal
( cod_aluno, nom_aluno, sexo, nom_cidade,
ano_ingresso )
select cod_aluno, nom_aluno, sexo, nom_cidade,
ano_ingresso
from
aluno
where nom_cidade = ‘NATAL’;
–Neste caso não é utilizada a cláusula Values.
Alterando Linhas de Tabelas
•O comando update permite ao usuário alterar os valores em linhas da tabela:
update table
set
column [ ,column...] = { expressão, subquery }
[where condição]
–Ex.:
SQL> update curso
set
dat_inicial = ‘01-MAR-97’,
dat_final
= ‘30-JUN-97’
where cod_periodo = 5;
Se o where for omitido, todas as linhas na tabela serão alteradas.
Apagando Linhas da Tabela
•O comando delete é usado para eliminar linhas de uma tabela:
delete from tabela
[where condição ];
–Ex:. Para apagar todas as informações sobre o periodo letivo 5 da tabela curso.
SQL> delete from curso
where cod_periodo = 5;
Se o where não for especificado, todas as linhas da tabela serão eliminadas.
•Comando truncate : O comando truncate apaga todas as linhas de uma tabela.
Diferente do delete, o comando truncate não pode ser desfeito, já que não gera
informações de rollback. O comando truncate faz parte da DDL (Linguagem de
Definição de Dados).
Ex.:
SQL> truncate table nome_tabela;
Pesquisando registros em tabela
•Um Bloco de Pesquisa Simples:
–O comando select traz dados de uma tabela de banco de dados:
SQL> select ename, job, sal, deptno from emp;
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JOB
SAL
DEPTNO
--------- --------- --------CLERK
800
20
SALESMAN
1600
30
SALESMAN
1250
30
MANAGER
2975
20
SALESMAN
1250
30
MANAGER
2850
30
MANAGER
2450
10
ANALYST
3000
20
PRESIDENT
5000
10
SALESMAN
1500
30
CLERK
1100
20
JAMES
FORD
MILLER
CLERK
ANALYST
CLERK
950
3000
1300
30
20
10
14 linhas selecionadas.
–Note que o nome das colunas é separado por vírgulas.
–É possível também selecionar todas as colunas de uma tabela.
SQL> select * from dept;
DEPTNO
--------10
20
30
40
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
–Outros ítens que podem ser incluídos em uma cláusula select:
• Operadores de Concatenação :
Para concatenar duas colunas de uma tabela para um valor final específico,
usamos duas vezes o caracter | barra vertical :
SQL> select 'Setor ' || dname || ' escritório em ' || loc
from
dept;
'SETOR'||DNAME||'ESCRITÓRIOEM'||LOC
-----------------------------------------------Setor ACCOUNTING escritório em NEW YORK
Setor RESEARCH escritório em DALLAS
Setor SALES escritório em CHICAGO
Setor OPERATIONS escritório em BOSTON
• Ordenando colunas:
A cláusula order by é utilizada para trazer os dados em uma ordem específica.
SQL> select * from dept order by dname;
DEPTNO
--------10
40
20
30
DNAME
-------------ACCOUNTING
OPERATIONS
RESEARCH
SALES
LOC
------------NEW YORK
BOSTON
DALLAS
CHICAGO
Para inverter a ordem de pesquisa usamos um complemento para order by
chamado de DESC :
SQL> select * from dept order by dname desc;
DEPTNO
--------30
20
40
10
DNAME
-------------SALES
RESEARCH
OPERATIONS
ACCOUNTING
LOC
------------CHICAGO
DALLAS
BOSTON
NEW YORK
• A cláusula where :
A cláusula where corresponde ao operador relacional de restrição. Ela contém as
condições que as linhas da relação devem satisfazer para serem mostradas.
O where quando utilizado deve vir após a cláusula from.
SELECT
FROM
WHERE
colunas
tabela
condições que devem ser respeitadas
–Operadores lógicos utilizados com a cláusula where:
Para listar somente os registros onde o valor do campo salário for maior que
2.000,00 usamos :
SQL> select ename, job, sal from emp where sal > 2000;
ENAME
---------JONES
BLAKE
CLARK
SCOTT
JOB
SAL
--------- --------MANAGER
2975
MANAGER
2850
MANAGER
2450
ANALYST
3000
KING
FORD
PRESIDENT
ANALYST
5000
3000
Para listar os salários onde o valor é maior ou igual a 3.000,00:
SQL> select ename, job, sal from emp where sal >= 3000;
ENAME
---------SCOTT
KING
FORD
JOB
SAL
--------- --------ANALYST
3000
PRESIDENT
5000
ANALYST
3000
•Comparando o valor entre duas colunas da tabela:
–Ex: Somente os salários where o valor ultrapassou a meta de comissão :
SQL> select ename, job, sal, comm from emp where sal > comm;
ENAME
---------ALLEN
WARD
TURNER
JOB
SAL
COMM
--------- --------- --------SALESMAN
1600
300
SALESMAN
1250
500
SALESMAN
1500
0
•Operadores SQL:
–Existem quatro operadores que podem ser utilizados em qualquer tipo de dados.
Exemplos:
•Operador between :
SQL> select ename, job, sal from emp where sal between 3000
and 5000;
ENAME
---------SCOTT
KING
FORD
JOB
SAL
--------- --------ANALYST
3000
PRESIDENT
5000
ANALYST
3000
Na utilização do between o menor valor da comparação deve vir antes.
• Operador in
SQL> select ename, job, sal from emp where job in
('ANALYST','MANAGER');
ENAME
---------JONES
BLAKE
CLARK
SCOTT
FORD
JOB
SAL
--------- --------MANAGER
2975
MANAGER
2850
MANAGER
2450
ANALYST
3000
ANALYST
3000
Valores de caracteres devem vir entre aspas simples.
Pesquisando registros em tabela
Operador like
SQL> select ename, deptno from emp where ename like 'A%';
ENAME
DEPTNO
---------- --------ALLEN
30
ADAMS
20
• O símbolo % significa qualquer caracter ( ou conjunto ) de caracteres.
• Outro operador que pode ser usado junto com a clausula like é o ‘_’
(underscore) que substitui um número específico de caracteres.
SQL> select ename, deptno from emp where ename like '____';
ENAME
DEPTNO
---------- --------WARD
30
KING
10
FORD
20
A combinação dos dois operandos ( % e _ ) também pode ser usada.
• Selecionar os funcionários que contenham o substring ‘AN’ em qualquer posição
do campo JOB.
SQL> select ename, job, deptno from emp where job like
'%AN%';
ENAME
---------ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
TURNER
FORD
JOB
DEPTNO
--------- --------SALESMAN
30
SALESMAN
30
MANAGER
20
SALESMAN
30
MANAGER
30
MANAGER
10
ANALYST
20
SALESMAN
30
ANALYST
20
• Selecionando dados com múltiplas condições.
– Os operadores and e or podem ser utilizados para compor expressões lógicas.
– Exemplos:
SQL> select ename, sal from emp where sal > 2000 and deptno =
20;
ENAME
SAL
---------- --------JONES
2975
SCOTT
3000
FORD
3000
Pode-se utilizar também o operador OR.
SQL> select ename, sal from emp where sal > 2000 or deptno =
20
ENAME
SAL
---------- --------SMITH
800
JONES
2975
BLAKE
2850
CLARK
2450
SCOTT
3000
KING
5000
ADAMS
1100
FORD
3000
Usando Apelidos para as Tabelas
SQL> select A.ename, A.job, B.dname
from emp A, dept B
where A.deptno = B.deptno;
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
JOB
--------CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
DNAME
-------------RESEARCH
SALES
SALES
RESEARCH
SALES
SALES
ACCOUNTING
RESEARCH
ACCOUNTING
SALES
RESEARCH
SALES
RESEARCH
ACCOUNTING
( Table Aliases )
BIBLIOGRAFIA
Oracle Banco de Dados
Marco Aurelio de Souza
ISBN : 85-7393-110-8
Editora Ciência Moderna
www.lcm.com.br
Personal Oracle 8i para Windows 98
Marco Aurelio de Souza
ISBN : 85-7393-135-3
Editora Ciência Moderna
www.lcm.com.br
Oracle 7 Server Administrator's Guide
Steven Bobroski e Eric Armstrong
ISBN : 6694-70-1292
Oracle Corporation
www.oracle.com.br
Oracle Developer 2000 Guide
Steven Bobroski e Eric Armstrong
ISBN : 6845-32-5978
Oracle Corporation
www.oracle.com.br
Download