Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila SQL
Apostila SQL
SUMRIO
1.
1 1 2 2 3 3 4 5 5 5 6 8 8 8 10 11 11 12 13 13 14 14 14 15 16 16 17 17 17 18 18 19
1.1. INTRODUO 1.2. COMPONENTES DE UM BANCO DE DADOS 1.3. TIPOS DE BANCO DE DADOS BANCO DE DADOS ORIENTADO A OBJETOS. BANCO DE DADOS RELACIONAL RESUMINDO 2. 2.1. 2.2. 2.3. 3. NORMALIZAO DE DADOS PRIMEIRA FORMA NORMAL (1FN) SEGUNDA FORMA NORMAL (2FN) TERCEIRA FORMA NORMAL (3FN) LINGUAGEM SQL
3.1. COMANDOS DDL COMANDO: CREATE TABLE COMANDO: ALTER TABLE COMANDO: DROP TABLE COMANDO: CREATE INDEX COMANDO: DROP INDEX 3.2. COMANDOS DML INSTRUO INSERT INTO INSTRUO UPDATE COMENTRIOS INSTRUO DELETE INSTRUO SELECT COMENTRIOS A CLAUSULA WHERE A CLAUSULA ODER BY A CLAUSULA INNER JOIN A CLAUSULA BETWEEN A CLAUSULA GROUP BY ALGUMAS FUNES UTILIZADAS NO COMANDO SELECT. 4. BIBLIOGRAFIA
1.
1.1. Introduo
Hoje em dia o termo banco de dados bastante popular em diversas reas de atuao. Com o aumento da utilizao de computadores na manipulao de dados que envolvem diversas aplicaes, os bancos de dados esto sendo desenvolvidos e aplicados nas diferentes reas que envolvem o comrcio, a indstria e a pesquisa acadmica entre outras. Por exemplo, uma conta bancria faz parte de uma coleo imensa de contas bancrias de nosso banco, o Ttulo Eleitoral ou o Cadastro de Pessoa Fsica (CPF), certamente esto armazenados em Bancos de Dados de grande porte. Quando um dinheiro sacado no Caixa Eletrnico do banco, o saldo e as movimentaes existentes em nessa conta bancria j esto disposio do cliente. Mas o que vem a ser um Banco de Dados? Um Banco de Dados (ou Base de Dados) uma coleo de dados relacionados, organizados e armazenados visando facilitar a manipulao desses dados, permitindo realizar alteraes, inseres, remoes e consultas. Os tipos de colees de dados so ilimitados, ou seja, quaisquer aplicaes do mundo real que possam ser representadas atravs de dados computveis, podem ser armazenadas em um banco de dados. Exemplos de colees so: dados de um banco financeiro, dados de controle de uma universidade, dados de controle de estoque de empresas, dados sobre os genes humanos (projeto Genoma), dados sobre metereologia, etc. A manipulao desses dados armazenados feita por um conjunto de programas computadorizados denominado Sistema Gerenciador de Bancos de Dados (SGBDs). Um SGBD tem uma gama de funes pr-implementadas que gerenciam as operaes de insero, remoo, atualizao e consulta dos dados armazenados. Os SGBDs e os Bancos de Dados juntos formam um ambiente denominado Sistema de Banco de Dados (SBD). Pode-se definir esse sistema como um ambiente cujo objetivo global registrar e manter informao. Um SBD busca oferecer: Rapidez: consultas on-line para informao; Disponibilidade total: toda a informao contida no interior da base est disponvel o tempo todo; Flexibilidade: questes no tratadas tornam-se tratveis, ou seja, mudanas so relativamente fceis de se implementar. Integridade: a duplicao de dados reduzida, e polticas de atualizao podem ser padronizadas, resultando em consistncia de dados. Como um todo, fazem parte de um SBD: Dados: valores fisicamente registrados no banco de dados; Hardware: memria secundria, unidades de controle, canais de comunicao, etc. Software: SGBD. Usurios: todos os usurios que esto envolvidos na definio e utilizao de um banco de dados. Esses usurios podem ser divididos em trs classes: o programadores de aplicaes: responsveis pela escrita de programas de aplicao que utilizem o banco de dados; o usurios finais: utilizam uma linguagem de consulta fornecida como parte integrante do sistema, ou podem chamar uma aplicao escrita pelo programador sob a forma de um programa (efetua operaes de recuperao, criao, eliminao ou modificao); o DBA: administrador do banco de dados, ou seja, o responsvel pelo controle do bom funcionamento do banco de dados.
CidCodi e EstCodi, so chaves primrias respectivamente das tabelas Cidade e Estado, enquanto EstCodi chave estrangeira na tabela de cidades. precisamente por este campo (atributo, ou coluna), que ser estabelecida a relao entre as tabelas Cidade-->Estados.
Resumindo
Resumidamente podemos dizer que um Banco de dados relacional: Contm uma quantidade qualquer de tabelas; Os dados existentes em uma tabela nunca deveriam aparecer em outra; Um Banco de Dados projetado corretamente contm todos os vnculos necessrios para permitir que registros sejam relacionados entre tabelas diferentes; Tabelas podem ser relacionadas; A integridade referencial deve ser mantida (Integridade Referencial a existncia de um valor ou atributo relacionado em um banco de dados dependendo de um outro valor ou atributo.); Em geral as entidades do DED sero as tabelas de um banco de dados relacional; Chave Primria (@) um campo ou conjunto de campos que identifica um registro ou uma tupla; Chave Estrangeira (#) o campo que serve para relacionar as tabelas.
2.
NORMALIZAO DE DADOS
Consiste em definir o formato lgico adequado para as estruturas de dados identificados no projeto lgico do sistema, com o objetivo de minimizar o espao utilizado pelos dados e garantir a integridade e confiabilidade das informaes. A normalizao feita, atravs da anlise dos dados que compem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN so conjuntos de restries nos quais os dados devem satisfaz-las. Por exemplo, pode-se dizer que a estrutura est na primeira forma normal (1FN), se os dados que a compem satisfizerem as restries definidas para esta etapa. A normalizao completa dos dados feita, seguindo as restries das trs formas normais existentes, sendo que a passagem de uma FN para outra feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior. Para realizar a normalizao dos dados, primordial que seja definido um campo chave para a estrutura, campo este que permitir identificar os demais campos da estrutura. Formas Normais existentes:
afirmar que uma estrutura est na 2FN, se ela estiver na 1FN e no possuir campos que so funcionalmente dependentes de parte da chave. Exemplo: Estrutura na primeira forma normal (1FN): Arquivo de Notas Fiscais: (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas: (Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) Estrutura na segunda forma normal (2FN): Arquivo de Notas Fiscais: (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas: (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias: (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda). Como resultado desta etapa, houve um desdobramento do arquivo de Vendas (o arquivo de Notas Fiscais, no foi alterado, por no possuir chave composta) em duas estruturas a saber: Primeira estrutura (Arquivo de Vendas): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo da Mercadoria. Segundo estrutura (Arquivo de Mercadorias): Contm os elementos que so identificados apenas pelo Cdigo da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrio e o preo de venda sero constantes.
(Cdigo do Cliente, Nome do cliente, Endereo do cliente e CGC do cliente) Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o nico que possua campos que no eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereo e CGC do cliente so inalterados. Este procedimento permite evitar inconsistncia nos dados dos arquivos e economizar espao por eliminar o armazenamento freqente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles. As estruturas alteradas foram pelos motivos, a saber: Primeira estrutura (Arquivo de Notas Fiscais): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo do Cliente (informaes referentes ao cliente). Segundo estrutura (Arquivo de Clientes): Contm os elementos que so identificados apenas pelo Cdigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereo e CGC dos clientes sero constantes. Aps a normalizao, as estruturas dos dados esto projetadas para eliminar as inconsistncias e redundncias dos dados, eliminando desta forma qualquer problema de atualizao e operacionalizao do sistema. A verso final dos dados poder sofrer alguma alterao, para atender as necessidades especficas do sistema, a critrio do analista de desenvolvimento durante o projeto fsico do sistema.
3.
LINGUAGEM SQL
A linguagem SQL (Structured Query Language) representa um conjunto de comandos responsveis pela definio das tabelas, comandos e atualizao dos dados em um S.G.B.D. Os comandos existentes nesta linguagem so subdivididos em dois grupos: Comandos DDL (Data Definition Language) - Conjunto de comandos responsveis pela criao, alterao e remoo da estrutura das tabelas e ndices de um sistema. Comandos DML (Data Manipulation Language) - Conjunto de comandos responsveis pela consulta e atualizao dos dados armazenados em um banco de dados.
CREATE TABLE nome-tabela (nome-coluna tipo-do-dado [NOT NULL] [NOT NULL WITH DEFAULT] CONSTRAINT nome PRIMARY KEY (nome-coluna-chave) CONSTRAINT nome FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES nome-tabela-pai(nome-coluna-pai)) ON DELETE [RESTRICT] [CASCADE] [SET NULL]
Obs: os campos entre colchete [] so opcionais. Onde: nome-tabela - Representa o nome da tabela que ser criada. nome-coluna - Representa o nome da coluna que ser criada. A definio das colunas de uma tabela feita relacionando-as uma aps a outra. tipo-do-dado - Define o tipo e tamanho dos campos definidos para a tabela. Os tipos de dados mais comuns so: 1) Numricos: (NUMBER) Smallint - Armazena valores numricos, em dois bytes binrios, compreendidos entre o intervalo -32768 a +32767. Integer - Armazena valores numricos, em quatro bytes binrios, compreendidos entre o intervalo -2147483648 a +2147483647 Decimal(n,m) - Armazena valores numricos com no mximo 15 dgitos. Nesta opo deve ser definida a quantidade de dgitos inteiros (n) e casas decimais (m) existentes no campo. 2) Alfanumricos: Varchar (n) - Definir um campo alfanumrico de at n caracteres, onde n deve ser menor ou igual a 254 caracteres. Char (n) - Definir um campo alfanumrico de n caracteres, onde n deve ser menor ou igual a 254 caracteres. Long Varchar - Definir um campo alfanumricos de comprimento maior que 254 caracteres. 3) Date - Definir um campo que ir armazenar datas.
Linguagem de Programao III Prof. Anderson Pazin 8
4) Time - Definir um campo que ir armazenamento de horrio. NOT NULL - Exige o preenchimento do campo, ou seja, no momento da incluso obrigatrio que possua um contedo. NOT NULL WITH DEFAULT - Preenche o campo com valores pre-definidos, de acordo com o tipo do campo, caso no seja especificado o seu contedo no momento da incluso do registro. Os valores pre-definidos so: e.1) Campos numricos - Valor zero. e.2) Campos alfanumricos - Caracter branco. e.3) Campo formato Date - Data corrente. e.4) Campo formato Time - Horrio no momento da operao. CONSTRAINT nome PRIMARY KEY (nome-coluna-chave) - Defini para o banco de dados a coluna que ser a chave primria da tabela. Caso ela tenha mais de um coluna como chave, elas devero ser relacionadas entre os parnteses. CONSTRAINT nome FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES nome-tabela-pai (nome-campo-pai) - Defini para o banco de dados as colunas que so chaves estrangeiras, ou seja, os campos que so chaves primrias de outras tabelas. Na opo REFERENCES deve ser especificado a tabela na qual a coluna a chave primria. ON DELETE - Esta opo especifica os procedimentos que devem ser feitos pelo SGBD quando houver uma excluso de um registro na tabela pai quando existe um registro correspondente nas tabelas filhas. As opes disponveis so: h.1) RESTRICT - Opo default. Esta opo no permite a excluso na tabela pai de um registro cuja chave primria exista em alguma tabela filha. h.2) CASCADE - Esta opo realiza a excluso em todas as tabelas filhas que possua o valor da chave que ser excluda na tabela pai. h.3) SET NULL - Esta opo atribui o valor NULO nas colunas das tabelas filhas que contenha o valor da chave que ser excluda na tabela pai. Observe alguns exemplos do comando CREATE TABLE. Exemplo 1: Criando a tabela de professores CREATE TABLE Professores ( codigo number(5), nome varchar(30), rg varchar(10), telefone char(10), endereco varchar(40), data_nascimento date, formacao varchar(40), CONSTRAINT PK_PROF PRIMARY KEY (codigo));
Exemplo 2: Criando a tabela de disciplina cursada por um aluno CREATE TABLE Cursa( cod_aluno cod_disciplina semestre nota1 nota2 exame media_final faltas situacao
CONSTRAINT PK_CURSA PRIMARY KEY (cod_aluno,cod_disciplina,semestre), CONSTRAINT FK_ALUNO FOREIGN KEY (cod_aluno) REFERENCES Alunos (codigo), CONSTRAINT FK_DISCIPLINA FOREIGN KEY (cod_disciplina) REFERENCES Disciplina(codigo));
Onde: nome-tabela - Representa o nome da tabela que ser atualizada. nome-coluna - Representa o nome da coluna que ser criada. tipo-do-dado - Clusula que define o tipo e tamanho dos campos definidos para a tabela. DROP nome-coluna - Realiza a retirada da coluna especificada na estrutura da tabela. ADD nome-coluna tipo-do-dado - Realiza a incluso da coluna especificada na estrutura da tabela. Na coluna correspondente a este campo nos registros j existentes ser preenchido o valor NULL
Linguagem de Programao III Prof. Anderson Pazin 10
(Nulo). As definies NOT NULL e NOT NULL WITH DEFAULT so semelhantes do comando CREATE TABLE. RENAME nome-coluna novo-nome-coluna - Realiza a troca do nome da coluna especificada. RENAME TABLE novo-nome-tabela - Realiza a troca do nome da tabela especificada. MODIFY nome-coluna tipo-do-dado - Permite a alterao na caracterstica da coluna especificada. ADD CONSTRAINT nome PRIMARY KEY nome-coluna - Esta opo utilizada quando acrescido um novo campo como chave primria da tabela. DROP PRIMARY KEY nome-coluna - Esta opo utilizada quando retirado um campo como chave primria da tabela. ADD CONSTRAINT nome FOREIGN KEY nome-coluna - Esta opo utilizada quando acrescido um novo campo sendo ele uma chave estrangeira. DROP FOREIGN KEY nome-coluna - Esta opo utilizada quando retirada uma chave estrangeira da estrutura da tabela.
[DESC]
onde: nome-ndice - Representa o nome da estrutura de ndice que ser criada. nome-tabela - Representa o nome da tabela que contem a coluna na qual ser criada o ndice de acesso. nome-coluna - Representa o nome da coluna que ser criada. Opo ASC/DESC - Representa a criao do ndice ordenada crescentemente (ASC) ou decrescentemente (DESC).
11
12
Ateno: Os comados DML desta apostila foram elaborados com o auxlio on-Line do banco MSACCESS, O SQL para este banco no totalmente compatvel com o SQL Padro ANSI, que o oficial na maioria dos bancos de dados, ento algumas clusulas podem no funcionar em outros bancos.
INSERT INTO nome-tabela [(nome-coluna, ...)] VALUES (relao dos valores a serem includos)
onde: nome-tabela - Representa o nome da tabela onde ser includa o registro. nome-coluna - Representa o nome da(s) coluna(s) tero contedo no momento da operao de incluso. Relao dos valores:- Representa os valores a serem includos na tabela. Obs.: Este comando pode ser executado de duas maneiras: Quando todos os campos da tabela tero contedo - Neste caso no necessrio especificar as colunas, entretanto a relao dos valores a serem includos devero obedecer a mesma seqncia da definio da tabela. Por exemplo: INSERT INTO Alunos VALUES (2, "Andre", "303569871", 27/03/1978, "14-5223778"); "R. Jaboticaba 37",
Quando apenas parte dos campos da tabela tero contedo - Neste caso devem ser especificadas todas as colunas que tero contedo e os valores relacionados devero obedecer esta seqncia. Para os campos que no tem contedo especificado ser preenchido o valor NULL, como mostra o exemplo abaixo: INSERT INTO Alunos (ra, nome, rg, endereco) VALUES (1, "Anderson", "2722589-1", "R. Vendaval, 75);
Obs: O Access permite usar INSERT INTO para acrescentar um conjunto de registros de uma outra tabela ou consulta utilizando a clusula SELECT ... FROM, como mostrado acima na sintaxe da consulta acrscimo de mltiplos registros. Nesse caso, a clusula SELECT especifica os campos a acrescentar tabela destino especificada. Veja no exemplo abaixo, a instruo SELECT cria uma tabela de consulta onde sero inseridos os valores passados por parmetro.
13
INSERT INTO Alunos ( ra, nome, rg, endereco, data_nascimento, telefone )SELECT ra, nome, rg, endereco, data_nascimento, fone;
Instruo UPDATE
Objetivo: Esse comando permite atualizar os dados de um ou um grupo de registros em uma tabela do Banco de Dados. Sua sintaxe :
UPDATE nome-tabela SET <nome-coluna = <novo contedo para o campo> [nome-coluna = <novo contedo para o campo>] WHERE condio
onde: nome-tabela - Representa o nome da tabela cujo contedo ser alterado. nome-coluna - Representa o nome da(s) coluna(s) tero seus contedos alterados com o novo valor especificado. condio - Representa a condio para a seleo dos registros que sero atualizados. Este seleo poder resultar em um ou vrios registros. Neste caso a alterao ir ocorrer em todos os registros selecionados.
Comentrios
UPDATE especialmente til quando se quer alterar muitos registros ou quando os registros que se quer alterar esto em vrias tabelas. possvel alterar vrios campos ao mesmo tempo. O exemplo abaixo altera o professor da disciplina de S.O. no perodo noturno, atribuindo a disciplina um novo Professor. UPDATE Leciona SET cod_pro = 3 WHERE cod_dis = 2 OR cod_dis = 7; 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
Essa instruo permite remover (deletar) um ou um grupo de registros em uma tabela do Banco de Dados. Sintaxe:
DELETE * FROM
onde: nome-tabela - Representa o nome da tabela cujos registros sero deletados. condio - Representa a condio para a deleo dos registros. Este seleo poder resultar em um ou vrios registros. Neste caso a operao ir ocorrer em todos os registros selecionados.
14
Comentrios DELETE especialmente til quando se quer excluir muitos registros. Para eliminar uma tabela inteira do banco de dados. Pode-se 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 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, no ser possvel 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. Exemplo de instruo DELETE Esse exemplo exclui todos os registros de Professores cujo cdigo seja 1. DELETE * FROM Professores WHERE codigo=1; Se fosse necessrio passar um parmetro para o delete a estrutura seria assim DELETE * FROM Professores WHERE Professores.nome=[nome professor];
Instruo Select
A instruo SELECT a mais poderosa da linguagem SQL. Ela permite selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma determinada condio definida pelo comando. Sua sintaxe :
SELECT ALL FROM nome-tabela [AS APELIDO] [,nome-tabela] DISTINCT WHERE condio GROUP BY nome-coluna HAVING condio ORDER BY nome-campo ASC DESC
onde: nome-tabela - Representa o nome da(s) tabela(s) que contem as colunas que sero selecionadas ou que sero utilizadas para a execuo da consulta. Apelido: Os nomes que sero usados como ttulos de colunas em vez dos nomes originais das colunas na tabela.
Linguagem de Programao III Prof. Anderson Pazin 15
condio - Representa a condio para a seleo dos registros. Este seleo poder resultar em um ou vrios registros. nome-coluna - Representa a(s) coluna(s) cujos resultados so grupados para atender consulta. ALL (*) - Opo default. Mostra todos os valores obtidos na seleo. DISTINCT - Opo que mostra os valores obtidos na seleo eliminando as duplicidades. WHERE - Especifica o critrio de seleo dos registros nas tabelas especificadas. GROUP BY - Especifica o(s) campo(s) que sero grupados para atender a consulta. HAVING - Especifica uma condio para seleo de um grupo de dados. Esta opo s utilizada combinada com a opo GROUP BY. ORDER BY - Esta opo quando utilizada apresenta o resultado da consulta ordenado de forma crescente ou decrescente pelos campos definidos.
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. A sintaxe mnima da instruo SELECT : SELECT <campos> FROM <tabela> Voc pode usar um asterisco (*) para selecionar todos os campos na tabela. O exemplo abaixo seleciona todos os campos na tabela Alunos: SELECT * FROM Alunos;
A Clausula WHERE
Freqentemente necessrio localizar registros em um banco de dados que satisfaam certos critrios de seleo. O SQL utiliza a clausula WHERE para especificar os critrios de seleo para a consulta. O formato mais simples para uma consulta com critrios : SELECT * FROM nome-tabela WHERE condio; SELECT * FROM Alunos WHERE ano_nascimento < 1984; A condio da clusula WHERE pode conter os operadores <, >, <=, >=, <> e LIKE. O operador LIKE utilizado para coincidncia de padro, o que permite a busca de valores semelhantes ao digitado utilizando os caracteres curinga (* e ?). O asterisco indica qualquer nmero de caracteres em seqncia na posio do asterisco dentro do padro. J a interrogao indica um nico caracter na posio. Por exemplo, em uma tabela que temos os alunos Anderson, Andre e Manoel. SELECT * FROM Alunos WHERE nome LIKE ?n*; No SELECT acima o retorno ser Anderson e Andre, uma vez que buscamos apenas os valores iniciados por qualquer letra, tendo a segunda letra um n e finalizado por qualquer seqncia SELECT * FROM Alunos WHERE nome LIKE *n*; Nesse SELECT procuramos qualquer aluno que tenha a letra n em seu nome, no caso Anderson , Andre e Manoel.
Linguagem de Programao III Prof. Anderson Pazin 16
A clausula ODER 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; 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.
A Clausula BETWEEN
A clausula BETWEEN permite fazer uma seleo de valores entre um determinado intervalo. Por exemplo deseja-se saber todos os alunos que esto matriculados entre os semestres 2001A ate o semestre 2002B
Linguagem de Programao III Prof. Anderson Pazin 17
A Clausula GROUP BY
Os dados resultantes de uma seleo podem ser agrupados de acordo com um critrio especfico. Este procedimento realizado usando a clusula GROUP BY. Apenas uma linha do grupo apresentada. Como condio de agrupamento somente podero aparecer itens do SELECT ou funes do grupo. Por exemplo, deseja-se saber o total de crditos cursados pelos alunos. Para resolver esse problema usamos um funo SUM (explicada mais adiante) e a clausula GROUP BY. SELECT cod_alu, SUM(Disciplinas.credito) AS [Total de Aula] FROM Disciplinas INNER JOIN Cursa ON Cursa.cod_dis= Disciplinas.codigo GROUP BY cod_alu; Nesse exemplo a quantidade de crditos est na tabela disciplinas, para cada aluno soma-se a quantidade de crditos das disciplinas que ele cursa.
ON Cursa.cod_dis= Disciplinas.codigo GROUP BY cod_alu; c) AVG (nome-campo) Retorna a mdia dos valores existentes no campo especificado. Por exemplo, deseja-se saber quantas aulas em mdia um aluno assiste por dia. SELECT AVG(Disciplinas.credito) AS [Media de Aulas] FROM Disciplinas INNER JOIN Cursa ON Disciplinas.codigo=Cursa.cod_dis d) MAX (nome-campo) Retorna o maior valor existente no campo especificado. Por exemplo, deseja-se saber qual aluno teve a nota mais alta na primeira prova da disciplina da Analise de Sistemas I (cdigo da disciplina igual a 1) no semestre 2001A. SELECT MAX(nota1) AS [Maior Nota], Alunos.nome AS nome FROM Cursa INNER JOIN Alunos ON Alunos.RA=Cursa.cod_alu WHERE Cursa.cod_dis=1 AND semestre=2001A" GROUP BY Cursa.cod_Alu, Alunos.nome; e) MIN (nome-campo) Retorna o menor valor existente no campo especificado. Por exemplo, deseja-se saber qual aluno teve a nota mais baixa na primeira prova da disciplina da Analise de Sistemas I (cdigo da disciplina igual a 1) no semestre de 2001A. SELECT MIN(nota1) AS [Menor Nota], Alunos.nome AS nome FROM Cursa INNER JOIN Alunos ON Alunos.RA=Cursa.cod_alu WHERE Cursa.cod_dis=1 AND semestre=2001A" GROUP BY Cursa.cod_Alu, Alunos.nome;
4.
Bibliografia
FERNANDES, Lcia; ORACLE 9i para Desenvolvedores Curso Completo. Rio de Janeiro: Axcel Books, 2002. DEITEL, H. M.; DEITEL, P. J.; Java Como Programar. 3 ed. So Paulo: Bookman, 2000. FANDERUFF, Damaris; Oracle 8i utilizando SQL* Plus e PL/SQL. So Paulo:Makron Books, 2000. HELP On-Line Microsoft Access 97. Apostilas Internet.
19