Escolar Documentos
Profissional Documentos
Cultura Documentos
Oracle Emerson Souza
Oracle Emerson Souza
PC-Cliente
PC-Cliente
PC-Cliente
Servidor
PC-Cliente
PC-Cliente
Impressora
4- PROCESSAMENTO DE TRANSAES.
A grande vantagem deste mtodo e guardar durante um certo tempo tempo as
modificaes efetuadas no Banco de Dados. Podendo, recuper-las em caso de queda de energia
ou mesmo quando o usurio do Banco desiste da modificao.
DESVANTAGENS:
UTILITRIOS ORACLE:
O AMBIENTE:
Para manipular e acessar as estruturas de Bancos de Dados Relacionais criadas no Oracle,
o produto possui um ambiente completo para estas atividades.
A base para este trabalho a linguagem SQL, que atravs desta sintax, cria, modifica e
manipula as estruturas de dados, tendo como componentes bsicos do ambiente:
Ao ser acionado com um duplo click, o editor ativado solicitando para sua operao a
identificao do usurio e seu cdigo de acesso, seguido do drive lgico, que no caso do uso
Stand Alone, foi convencionado 2: Caso estivermos trabalhando em uma rede local o drive lgico
seria por exemplo o X:, mais as informaes da localizao fsica do Banco de Dados.
Realizada a identificao com sucesso, o editor liberado para uso, mostrando o prompt
SQL> a espera de qualquer comando vlido para a execuo. A seguir mostramos a rela
caracterstica do editor e o ambiente que permite o trabalho com o SQL de forma procedural.
Where
8.
Relacionamento
Select d.dname, e.ename From dept d, emp e
where
d. Deptno = e. Deptno;
Agrupar
Select deptno, min (sal), max (sal), sum (sal)
from emp group by deptno;
Insert
Insert into dept values(35, Estoque, Madureira);
10. Update
Update dept set loc = Centro where deptno = 35;
11.
Delete
Delete from dept where dnome = Estoque
12. Commit
13. Rollback
14. Connect (System/Manager)
15. Disconnect
6.1.2.
6.1.3.
ORACLE NAVIGATOR
-Personal Oracle
N que identifica o Banco de Dados Local. Suas subdivises so: Projects e Local Database,
onde Projects corresponde ao n onde agrupamos para efeito de transferncia(exportar para um
Servidor Oracle) um projeto de banco de dados. E Local Database, corresponde ao n que
agrupa todos os objetos de um banco de dados. a partir destes elementos, que teremos acesso
as diversas interfaces para desenvolvimento facilitado(codificao abreviada).
Database Conection
Objeto User
Nota: Acionado a partir do click do boto direito do mause, quando sobre este n.
Aba General
Propriedade Name Propriedade New -
dentificador do usurio
password(iniciado por caracter Alpha sequido de Alpha-Numrico)
Aba Role/Privilege
Define os privilgios de acesso e manipulao atribuidos ao usurio
Objeto Roles
Nota: Acionado a partir do click do boto direito do mause, quando sobre este n. Este objeto,
visa
receber por atribuio, privilgios, criando um grupo de atribuies, que posteriormente
agregar privilgios aos usurios que tiverem este papel atribuido a sua lista de privilgios..
Aba General
Password protected
Propriedade Name -
Aba Role/Privilege
Define os privilgios de acesso e manipulao atribuidos ao usurio
Objeto Table
Nota: Acionado a partir do click do boto direito do mause, quando sobre este n. De forma
bastante prtica, temos uma viso de todo a estrutura da tabela.
A sintaxe necessria para execuo via script ou cdigo entrado pelo SQL Plus, segue:
Aba General
Name Owner
Aba Design
Column Name Type
Size
Scale
Default
Nome do campo
Acionando o combo apresentado um lista para escolha
Define-se o tamanho do campo
Quando tipo number, indica quantas casas decimais sero reservadas
Valor entrado como default quando do no preenchimento
Aba Design(continuao)
NOT NULL,
NOT NULL,
NOT NULL,
DEFAULT '1' NOT NULL,
DEFAULT 'J' NOT NULL,
NOT NULL )
NOT NULL,
NOT NULL,
NOT NULL,
NUMBER(10, 0)
NUMBER(10, 0)
NUMBER(10, 0)
NUMBER(13, 2)
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL)
NOT NULL,
NOT NULL,
NOT NULL
Objeto View
Nota: Acionado a partir do click do boto direito do mause, quando sobre este n. Uma View
conceitualmente se aplica para minimizar o acesso aos dados de uma tabela ou a
composio de um join.
Create View View_Clientesfoto As
Select Clientes.Nome, Clientes.Foto
From Clientes Where Clientes.Status = 1
Create View View_Itensdescricao As
Select Produtos.Descricao,Itens.Quantidade,Itens.Precovenda
From Itens,Produtos
Where Itens.Codproduto = Produtos.Codigo
Create View View_Pedidosdata As
Select Clientes.Nome, Pedido.Dataped, Pedido.Numero
From Aulamanha.Clientes, Aulamanha.Pedido
Where Clientes.Codigo = Pedido.Codcliente And Pedido.Dataped >= Sysdate 150
Create View View_VendaMesAno As
Trunc(Pedidos.DataPed, 'Month') As MesAno,
Select
Sum(Itens.Quantidade * Itens.PrecoVenda) As Total
Itens, Pedidos
From
Pedidos.Numero = Itens.NumeroPed
Where
Trunc(Pedidos.DataPed, 'Month')
Group By
Objeto Procedure
END;
Seq_Clientes.Nextval,
Pardata,
Parnome,
Parstatus,
Parcredito,
Parhistorico,
Parfoto,
Partipo,
Parcgc );
End;
Delete Vendascli;
Open Cursorvendascli;
If Sql%Notfound Then
Raise_Application_Error(-20000,'No H Vendas Neste Perodo.');
End If;
Loop
Fetch Cursorvendascli Into Varnome,Vartotal;
Exit When Cursorvendascli%Notfound;
Insert Into Vendascli Values (Varnome, Vartotal);
End Loop;
Close Cursorvendascli;
Testando no SQL-Plus
SQL> Set ServerOutput on;
SQL> Execute ProcCursor1(1);
Criar Funo
CREATE FUNCTION Func_Totcompracli
(
Parcodcli In Clientes.Codigo%Type,
Pardata1 In Pedido.Dataped%Type,
Pardata2 In Pedido.Dataped%Type
)
Return Number As
Vartotal Number (13,2);
Varcodigo Number (10);
BEGIN
Select
Sum(Itens.Quantidade * Itens.Precovenda)
Into Vartotal
From
Itens,Pedido
Where
Itens.Numeroped = Pedido.Numero And
Pedido.Codcliente = Parcodcli And
Pedido.Dataped Between Pardata1 And Pardata2
Return Vartotal;
END;
Testando no SQL Plus:
Objeto Trigger
1.
Indicar Add Database Alias, clicando no boto
OK.
2.
Atribuir um nome para o Alias(Database Alias) clicando em
OK.
3.
Indicar tipo de conexo (TCP/IP), clicando em
OK.
4.
Indicar em TCP/IP Host Name, o n do servidor, clicando em
OK.
5.
Ao
final
parmetros.
ser
apresentado
um
resumo
dos
6.
Acessar ODBC 32 e clicar em Add
7.
Indicar o Drive especfico (indicado na imagem), clicando em Concluir.
8.
8.
Finalizando, indique Data Source Name, Description, User Name e Connect String.
Indicando neste ltimo parmetro, 2:(para Banco Dados Local) ou o nome do Alias
criado no SQLNet(AlunoX_SQLNet) para uma conexo com o Servidor
Oracle.
9.
PL/SQL
DIFERENA ENTRE SQL E PL/SQL
Como j sabemos, a SQL ( Structured Query Language ), uma linguagem interativa que
tem por objetivo pesquisar, recuperar e formatar dados de forma simples, atravs de relatrios em
tela ou impressora, usando frases simples tiradas do vocabulrio corrente.
Em funo dessa limitao a Oracle desenvolveu uma linguagem procedural, baseada no
SQL interativo, incrementando vrias facilidades encontradas nas linguagens procedurais, tais
como, declarao de variveis, rotinas de controle de fluxo e cursores, que uniu o poder das
estruturas procedurais como o Basic e o Pascal, com a simplicidade do SQL, permitindo que vrias
frases SQL, pudessem ao mesmo tempo serem processadas, tornando o SQL procedural ou
PL/SQL (Procedural Language SQL).
Na verdade no. O PL/SQL uma linguagem complementar, ela sozinha no tem muito
poder, porm ligada a uma linguagem visual como Delphi, Visual Basic entre outras voltadas para
Eventos, constituem uma ferramenta de alta performance. Podemos com as duas construir
aplicaes fantsticas.
Pois a interao entre as duas que transforma a arquitetura Client/Server em realidade,
ou seja, A linguagem visual apresenta os dados na tela, dispara as ordens as procedures do Banco
de Dados que por sua vez faz o trabalho mais duro, o de realizar pesquisas, processos, alteraes
e delees, sem gerar trfego em rede e sem a necessidade de complexos algortimos.
Na realidade temos duas linguagens PL/SQL, a primeira, que ser nosso objeto de estudo,
tem por objetivo ser a extenso inteligente de uma linguagem no Oracle Visual. A outra linguagem
PL/SQL, que no abordaremos neste curso, faz parte integrante das ferramentas Oracle de
desenvolvimento de aplicaes visuais, reunidas em um produto chamado Designer 2000, que
composto pelo Forms, Reports e Graphics, alm do prprio Designer 2000, que o Modelador de
Dados e gerador de aplicaes.
ESTRUTURA DA LINGUAGEM
CARACTERES SUPORTADOS
Todo alfabeto maisculo e minsculo
Algarismos de 0 a 9
Smbolos especiais: ( ) + - * / < > = ! ~ ; : @ % , # & $ _ | { } ? [ ] .
OPERADORES ARITMTICOS
+ Adio
- Subtrao
* Multiplicao
/ Diviso
** Exponenciao
OPERAES RELACIONAIS
< > Diferente
> Maior
^ = Diferente
< Menor
! = Diferente
> = Maior Igual
= Igual
< = Menor Igual
OUTROS SMBOLOS
( ) Separadores de lista
Ex.: AND MODELO IN(SANTA CECILIA,SO PAULO,SP)
; Final de declarao
Ex.: COMMIT WORK;
. Separador de item
Ex.: CLIENTES.CODIGO
Engloba uma string
Ex.: DIGIDATA
: = Atribuio
Ex.: NOME : = DIGIDATA
| | Concatenao
Ex.: Codigo Cliente: | | CLIENTES.CODIGO
- - Comentrio na mesma linha
Ex.: Begin
- - Inicio da execuo
Delimitadores
de
comentrios
abrangendo
vrias linhas ( incio e fim de comentrio ).
/* e */
VARIVEIS
Seus nomes devem iniciar sempre com uma letra de ( A Z )
Podem ser seguidas de uma ou mais letras, nmeros ou caracteres dos especiais $, # ou _
Devem Ter no mximo 30 caracteres
No podem conter espaos em branco
No podem ser palavras reservadas do PL/SQL, como commit, if, raise, etc...
TIPOS DE DADOS
CHAR
VARCHAR2
NUMBER
DATE
BOOLEAN
LONG
Longo inteiro
ROWID
Identificador de linha
COMPONENTES DA LINGUAGEM
ESTRUTURAS DE CONTROLE
IF
Contador : = Contador + 1 ;
If Contador > 100 then
Exit;
End If ;
End Loop;
Contador : = 1 ;
Loop
Contador : = Contador + 1 ;
Exit when Contador > 100 ;
End Loop;
Contador : = 1 ;
FOR
Exemplo:
Para criar o Departamento Treinamento automaticamente nas regies 1 e 2 o procedimento abaixo
exemplifica:
SQL> INSERT INTO DEPTO ( COD, NOME, COD_REGIAO )
VALUES ( COD.NEXTVAL, TREINAMENTO, 1 ) ;
SQL> INSERT INTO S_DEPT ( ID, NAME, REGION_ID)
VALUES ( COD.NEXTVAL, TREINAMENTO, 2 ) ;
COMANDOS TEIS
Null?
____
Type
____
VARCHAR2(28)
NUMBER
VARCHAR2(13)
DATE
DATE
VARCHAR2(75)
VARCHAR2(7)
DESCRIO
Declare
Begin
Exception
Ex.:
Create or replace procedure PROC (parametro1 in varchar2, parametro2 in varchar2 ) as
Begin
Declare
Varnum1 number ;
Varnum2 number ;
Data_do_Dia date := sysdate ;
Varalf1 varchar2(10) ;
Varalf2 varchar2(1) ;
Cursor MEU_CURSOR is
Select * From Dept where campo1 = parametro1 and campo2 = parametro2 ;
Begin
/* Comandos
Diversos */
End ;
End ;
Excption
/*Comandos para tratamento do erro*/
CURSORES
Cursores so trechos alocados de memria destinados a processar as declaraes
SELECT. Podem ser definidos pelo prprio PL/SQL, chamados de Cursores Implcitos, ou podem
ser definidos manualmente, so os chamados de Cursores Explcitos.
Cursores Explcitos
Esta tcnica exige que o cursor seja declarado manualmente na seo DECLARE, e deve
conter somente declaraes SELECT. Para a sua utilizao os seguintes passos devem ser
observados:
Declarar o Cursor
Abrir o Cursor ( Preparar para sua utilizao ) Open
Buscar os dados Fetch
Liberar memria aps o uso ( Fechar o Cursor ) Close
Nota: O Cursor sempre definido na Seo DECLARE e aberto aps o BEGIN. O nmero de
variveis que recebem dados na declarao FETCH deve ser igual ao nmero de campos definidos
na declarao SELECT, quando da declarao do cursor. O sucesso ou insucesso do cursor
determinado pelo teste %FOUND% ou %NOTFOUND%. Este teste deve ser feito antes que o
cursor seja fechado.
ATRIBUTO
%ISOPEN
%NOTFOUND
%FOUND
%ROWCOUNT
DESCRIO
Atributo do tipo Boolean, (True/False), sendo True quando o cursor est
aberto
Atributo do tipo Boolean, (True/False), sendo True quando o ltimo FETCH
no retornou linha.
Atributo do tipo Boolean, (True/False), sendo True quando o ltimo FETCH
retorna linha.
Atributo numrico, que retorna o nmero da linha retornada.
CURSORES IMPLCITOS
Manipulado pelo prprio PL/SQL, sem a declarao na seo DECLARE. Caracterizado
pelo uso da declarao SELECT a qual o PL/SQL manipula a definio do cursor implicitamente e
os seguintes aspectos devem ser levados em considerao:
DESCRIO
Atributo do tipo Boolean sendo sempre FALSE
Atributo do tipo Boolean, sendo TRUE quando o ltimo comando no
atualizou nenhuma linha.
Atributo do tipo Boolean, sendo TRUE quando o ltimo
comando atualizou alguma linha.
Atributo numrico, que retorna o nmero de linhas atualizadas.
PACKAGES
Package um objeto do banco de dados capaz de armazenar procedures e functions
integradas, que podem ser executadas separadamente como se fossem parte de uma biblioteca ou
partir de uma execuo provocar vrias execues encadeadas.
A package dividida em duas partes: a parte pblica e a parte privada.
Construo Pblica
Descrio
TRIGGER
TRIGGER(GATILHO) Procedure executada ( disparada ) conforme o acontecimento o
acontecimento de um evento, conforme a lista abaixo relacionada.
BEFORE INSERT
BEFORE INSERT FOR EACH ROW
AFTER INSERT
AFTER INSERT FOR EACH ROW
BEFORE UPDATE
BEFORE UPDATE FOR EACH ROW
AFTER UPDATE
AFTER UPDATE FOR EACH ROW
BEFORE DELETE
BEFORE DELETE FOR EACH ROW
AFTER DELETE
AFTER DELETE FOR EACH ROW
SET SERVEROUTPUTON
Este comando habilita o Package DBMS_OUTPUT, que atravs da Procedure PUT_LINE,
enviar as mensagens aps uma Transao efetuada com sucesso. Este Package, bem como as
Procedures, so do prprio Oracle, criados quando da sua instalao.
Linguagem SQL
Instruo SELECT
Instrui o programa principal do banco de dados para retornar a informao como um conjunto de
registros.
Sintaxe
SELECT
FROM
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
Descrio
Um dos seguintes predicados: ALL, DISTINCT, DISTINCTROW ou TOP.
Voc usa o predicado para restringir o nmero de registros que retornam. Se
nenhum for especificado, o padro ser ALL.
Especifica que todos os campos da tabela ou tabelas especificadas so
selecionados.
O nome da tabela que contm os campos dos quais os registros so
selecionados.
Os nomes dos campos dos quais os dados sero recuperados. Se
mais de um campo, eles sero recuperados na ordem listada.
Os nomes que sero usados como ttulos de colunas em vez dos nomes
originais das colunas na tabela.
O nome da tabela ou tabelas contendo os dados que voc quer
expressotabela
recuperar.
bancodedadosexterno
O Nome do banco de dados que contm as tabelas em
expressotabela se no
estiver no banco de dados atual.
Comentrios
Para executar esta operao, o programa principal de banco de dados procura a tabela ou
tabelas especificadas, extrai as colunas escolhidas, seleciona as linhas que satisfazem o critrio e
classifica ou agrupa as linhas resultantes na ordem especificada.
A instruo SELECT no muda os dados no banco de dados.
SELECT normalmente a primeira palavra em uma instruo SQL. A maior parte das
instrues SQL so instrues SELECT.
Clusula GROUP BY
GROUP BY opcional. Valores de resumo so omitidos se no houver qualquer funo
aggregate SQL na instruo SELECT. Os valores Null nos campos GROUP BY so agrupados e
no omitidos. No entanto, os valores Null no so avaliados em qualquer funo aggregate SQL.
Use a clusula WHERE para excluir linhas que voc no quer agrupadas e use a clusula HAVING
para filtrar os registros aps eles terem sido agrupados.
A no ser que contenha dados Memo ou OLE Object, um campo na lista de campos
GROUP BY pode fazer referncia a qualquer campo em qualquer tabela listada na clusula FROM.
Mesmo que o campo no esteja includo na instruo SELECT, fornecida a instruo SELECT,
inclua pelo menos uma funo SQL. O programa principal de banco de dados do Jet no pode
agrupar campos Memo ou OLE Objects.
Todos os campos na lista de campos SELECT devem ser includos na clusula GROUP BY
ou includos como argumentos em uma funo aggregate SQL.
Clusula HAVING
HAVING opcional. HAVING semelhante a WHERE, que determina quais registros so
selecionados. Depois que os registros so agrupados com GROUP BY, HAVING determina quais
registros so exibidos:
SELECT CategoriaID, Sum(UnidadesNoEstoque) FROM Produtos
GROUP BY CategoriaID
HAVING Sum(UnidadesNoEstoque) > 100 AND LIKE "BOS*";
Uma clusula HAVING pode conter at 40 expresses vinculadas por operadores lgicos,
como And ou Or.
Clusula ORDER BY
ORDER BY opcional. Entretanto, se voc quiser exibir seus dados na ordem classificada,
voc deve utilizar ORDER BY. O padro ordem de classificao ascendente (A a Z, 0 a 9). Os
dois exemplos abaixo classificam os nomes dos funcionrios pelo sobrenome.
SELECT Sobrenome, Nome FROM Funcionrios ORDER BY Sobrenome;
SELECT Sobrenome, Nome FROM Funcionrios ORDER BY Sobrenome ASC;
Para classificar em ordem descendente (Z a A, 9 a 0), adicione a palavra reservada DESC
ao final de cada campo que voc quiser classificar em ordem descendente. O exemplo abaixo
seleciona salrios e os classifica em ordem descendente
SELECT Sobrenome, Salrio FROM Funcionrios ORDER BY Salrio DESC, Sobrenome;
Se voc especificar um campo que contm dados Memo ou OLE Objects na clusula
ORDER BY, um erro ocorrer. O programa principal de banco de dados do Jet no classifica
campos deste tipo. ORDER BY normalmente o ltimo item em uma instruo SQL.
Voc pode incluir campos adicionais na clusula ORDER BY. Os registros so classificados
primeiro pelo primeiro campo listado depois de ORDER BY. Os registros que tiverem valores iguais
naquele campo so classificados pelo valor no segundo campo listado e assim por diante.
Esse exemplo conta o nmero de registros que tm uma entrada no campo "CdigoPostal"
e
nomeia o campo retornado como "Tcp".
SELECT Count(CdigoPostal) AS Tcp FROM Clientes;
Esse exemplo mostra qual seria o salrio se cada funcionrio recebesse um aumento de 10
porcento. No altera o valor original dos salrios.
SELECT Sobrenome, Salrio AS Atual, Salrio * 1.1 AS Proposto FROM Funcionrios;
exibido
Esse exemplo coloca o ttulo Nome no topo da coluna "Sobrenome". O ttulo Salrio
no topo da coluna "Salrio".
SELECT Sobrenome AS Nome, Salrio FROM Funcionrios;
Esse exemplo mostra o nmero de funcionrios e os salrios mdio e mximo.
SELECT Count(*) AS [Total de Funcionrios], Avg(Salrio)
AS [Salrio Mdio], Max(Salrio) AS [Salrio Mximo]
FROM Funcionrios;
de
Para cada registro, mostra Sobrenome e Salrio no primeiro e ltimo campos. A seqncia
caracteres "tem um salrio de" retornada como o campo do meio de cada registro.
SELECT Sobrenome, 'tem um salrio de', Salrio FROM Funcionrios;
Sintaxe
INSERT INTO destino [IN bancodedadosexterno] [(campo1[, campo2[, ...]])]
SELECT [origem.]campo1[, campo2[, ...]
FROM expressodetabela
Consulta anexao de um nico registro:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
A instruo INSERT INTO tem as partes abaixo:
Parte
Descrio
destino
O nome da tabela ou consulta em que os registros devem ser
anexados.
bancodedadosexterno
O caminho para um banco de dados externo. Para uma descrio do
caminho, consulte a clusula IN.
origem
O nome da tabela ou consulta de onde os dados devem ser copiados.
campo1, campo2
Os nomes dos campos aos quais os dados devem ser anexados, se
estiverem aps um argumento destino ou os nomes dos campos dos quais
se deve obter os dados, se estiverem aps um argumento origem.
expressodetabela O nome da tabela ou tabelas das quais registros so inseridos. Este
argumento pode ser um nico nome de tabela ou uma combinao
resultante de uma operao INNER JOIN, LEFT JOIN ou RIGHT JOIN
ou de uma consulta gravada.
valor1, valor2
Os valores para inserir em campos especficos do novo registro. Cada valor
inserido no campo que corresponde posio do valor na lista: Valor1
inserido no campo1 do novo registro, valor2 no campo2 e assim por
diante. Voc deve separar os valores com uma vrgula e colocar os
campos de textos entre aspas (" ").
Comentrios
Voc pode usar a instruo INSERT INTO para adicionar um nico registro a uma tabela
usando a sintaxe de consulta anexao de um nico registro como mostrado acima. Neste caso,
seu cdigo especifica o nome e o valor de cada campo do registro. Voc precisa especificar cada
um dos campos do registro para os quais um valor deve ser designado e um valor para este
campo. Quando voc no especifica cada campo, o valor padro ou Null inserido nas colunas
omitidas. Os registros so adicionados no final da tabela.
Voc tambm pode usar INSERT INTO para anexar um conjunto de registros de outra
tabela ou consulta usando a clusula SELECT ... FROM como mostrado acima na sintaxe
consulta anexao de vrios registros. Neste caso, a clusula SELECT especifica os campos para
acrescentar tabela destino especificada.
A tabela de origem ou de destino pode especificar uma tabela ou uma consulta. Se uma
consulta for especificada, o programa principal de banco de dados do Microsoft anexa a qualquer e
a todas as tabelas especificadas pela consulta.
INSERT INTO opcional, mas quando includa, precede a instruo SELECT.
Se sua tabela de destino contm uma chave primria, voc deve acrescentar valores
nicos, no Null ao campo ou campos da chave primria. Caso contrrio, o programa principal de
banco de dados do Jet no anexar os registros.
Se voc anexar registros a uma tabela com um campo Counter e quiser numerar
novamente os registros anexados, no inclua o campo Counter em sua consulta. Inclua o campo
Counter na consulta se quiser manter os valores originais do campo.
Use a clusula IN para anexar registros a uma tabela de outro banco de dados. Para achar
quais registros sero anexados, antes de voc executar a consulta anexao, primeiro execute e
veja os resultados de uma consulta seleo que use o mesmo critrio de seleo.
Uma operao de consulta anexao copia os registros de uma ou mais tabelas em outra.
As tabelas que contm os registros que voc anexa no so afetadas pela operao de consulta
anexao.
Em lugar de acrescentar registros existentes de outra tabela, voc pode especificar o valor
de cada campo em um nico registro novo usando a clusula VALUES. Se voc omitir a lista de
campo, a clusula VALUES deve incluir um valor para cada campo na tabela; caso contrrio, um
erro ocorrer em INSERT. Use uma instruo adicional INSERT INTO com uma clusula VALUES
para cada registro adicional que voc quiser criar.
Declarao UPDATE
Cria uma consulta atualizao que altera os valores dos campos em uma tabela especificada com
base em critrios especficos.
Sintaxe
UPDATE tabela
SET valornovo
WHERE critrio;
A instruo UPDATE tem as partes abaixo:
Parte
tabela
valornovo
critrio
registros
Descrio
O nome da tabela cujos os dados voc quer modificar.
Uma expresso que determina o valor a ser inserido em um campo especfico nos
registros atualizados.
Uma expresso que determina quais registros devem ser atualizados. S os
que satisfazem a expresso so atualizados.
Comentrios
UPDATE especialmente til quando voc quer alterar muitos registros ou quando os
registros que voc quer alterar esto em vrias tabelas. Voc pode alterar vrios campos ao
mesmo tempo. O exemplo abaixo aumenta o Valor do Pedido em 10 por cento e o valor do Frete
em 3 por cento para embarques do Reino Unido:
UPDATE Pedidos SET ValorPedido = ValorPedido * 1.1, Frete = Frete * 1.03
WHERE PasEmbarque = 'RU';
UPDATE no gera um conjunto de resultados. Se voc quiser saber quais resultados sero
alterados, examine primeiro os resultados da consulta seleo que use os mesmos critrios
e
ento execute a consulta atualizao.
Instruo DELETE
Cria uma consulta excluso que remove registros de uma ou mais tabelas listadas na clusula
FROM que satisfaz a clusula WHERE.
Sintaxe
DELETE [tabela.*]
FROM tabela
WHERE critrio
A instruo DELETE tem as partes abaixo:
Parte
tabela.*
tabela
critrio
Descrio
O nome opcional da tabela da qual os registros so excludos.
O nome da tabela da qual os registros so excludos.
Uma expresso que determina qual registro deve ser excludo.
Comentrios
DELETE especialmente til quando voc quer excluir muitos registros. Para eliminar uma
tabela inteira do banco de dados, voc pode usar o mtodo Execute com uma instruo DROP.
Entretanto, se voc eliminar a tabela, a estrutura perdida. Por outro lado, quando voc
usa DELETE, apenas os dados so excludos. A estrutura da tabela e todas as propriedades da
tabela, como atributos de campo e ndices, permanecem intactos.
Voc pode usar DELETE para remover registros de tabelas que esto em uma relao um
por vrios com outras tabelas. Operaes de excluso em cascata fazem com que os registros das
tabelas que esto no lado "vrios" da relao sejam excludos quando os registros
correspondentes do lado "um" da relao so excludos na consulta. Por exemplo, nas relaes
entre as tabelas Clientes e Pedidos, a tabela Clientes est do lado "um" e a tabela Pedidos est no
lado "vrios" da relao. Excluir um registro em Clientes faz com que os registros correspondentes
em Pedidos sejam excludos se a opo de excluso em cascata for especificada.
Uma consulta de excluso exclui registros inteiros e no apenas dados em campos
especficos. Se voc quiser excluir valores de um campo especfico, crie uma consulta atualizao
que mude os valores para Null.
Importante
Aps remover os registros usando uma consulta excluso, voc no poder desfazer a
operao. Se quiser saber quais arquivos foram excludos, primeiro examine os resultados de uma
consulta seleo que use o mesmo critrio e ento, execute a consulta excluso. Mantenha os
backups de seus dados. Se voc excluir os registros errados, poder recuper-los a partir dos seus
backups.
Subconsultas SQL
Uma subconsulta uma instruo SELECT aninhada dentro de uma instruo SELECT, INSERT,
DELETE ou UPDATE ou dentro de uma outra subconsulta.
Sintaxe
Voc pode usar trs formas de sintaxe para criar uma subconsulta:
comparao [ANY | ALL | SOME] (instruosql)
expresso [NOT] IN (instruosql)
[NOT] EXISTS (instruosql)
Uma subconsulta tem as partes abaixo:
Parte
Descrio
comparao Uma expresso e um operador de comparao que compara a expresso com o
resultado
da subconsulta.
expresso
Uma expresso para a qual o resultado definido da subconsulta procurado.
instruosqlt Uma instruo SELECT de acordo com as mesmas regras e formato de qualquer
outra
instruo SELECT. Ela deve estar entre parnteses.
Comentrios
Voc pode usar uma subconsulta em vez de uma expresso na lista de campo de uma
instruo SELECT ou em uma clusula WHERE ou HAVING. Em uma subconsulta, voc usa uma
instruo SELECT para fornecer um conjunto de um ou mais valores especficos para avaliar as
expresses das clusulas WHERE ou HAVING.
Use o predicado ANY ou SOME, que so sinnimos, para recuperar registros na consulta
principal que satisfaam a comparao com quaisquer registros recuperados na subconsulta. O
exemplo abaixo retorna todos os produtos cujo preo unitrio maior que o preo de qualquer
produto vendido com um desconto de 25 por cento ou mais:
SELECT * FROM Produtos WHERE PreoUnit > ANY
(SELECT PreoUnit FROM PedidoDetalhes WHERE Desconto >= .25);
Use o predicado ALL para recuperar apenas os registros na consulta principal que
satisfaam a comparao com todos os registros recuperados na subconsulta. Se voc mudou
ANY para ALL no exemplo acima, a consulta retornaria apenas os produtos cujo preo unitrio
fosse maior que o de todos os produtos vendidos com um desconto de 25 por cento ou mais. Isto
muito mais restritivo.
Use o predicado IN para recuperar apenas os registros na consulta principal para os quais
alguns registros na subconsulta contm um valor igual. O exemplo abaixo retorna todos os
produtos com um desconto de 25 por cento ou mais:
SELECT * FROM Produtos WHERE ProdutoID IN
(SELECT ProdutoID FROM PedidoDetalhes WHERE Desconto >= .25);
De maneira contrria, voc pode usar NOT IN para recuperar apenas os registros na
consulta principal para os quais no existam registros com valores iguais na subconsulta. Utilize o
predicado EXISTS (com a palavra reservada NOT opcionalmente) em comparaes true/false para
determinar se a subconsulta retorna algum registro.
Voc tambm pode usar aliases de nomes de tabelas em uma subconsulta para fazer
referncia a tabelas listadas em uma clusula FROM fora da subconsulta. O exemplo abaixo
retorna os nomes dos funcionrios cujos salrios sejam iguais ou superiores mdia de salrios de
todos os funcionrios na mesma funo. Para a tabela Funcionrios dada o alias "T1":
SELECT Sobrenome, Nome, Ttulo, Salrio FROM Funcionrios AS T1
WHERE Salrio >= (SELECT Avg(Salrio)
FROM Funcionrios WHERE T1. T1.Ttulo = Funcionrios.Ttulo) Order by Title;
No exemplo acima, a palavra reservada AS opcional. Algumas subconsultas so aceitas
em consultas de tabela cruzada especialmente como predicados (as da clusula WHERE).
Subconsultas como sada (as da lista SELECT) no so aceitas em tabelas de referncia cruzada.