Está en la página 1de 24

Aprendemos durante o curso:

1) Lgica de programao atravs de algoritmos;


2) criar o diagrama _______ de banco de dados;
3) a usar um sistema de banco de dados chamado __________;
4) a utilizar ________ para incluir ou _______ para alterar dados
e em seguida utilizamos __________para gravar;
5) a pesquisar uma tabela utilizando ________;
6) percorrer uma tabela com a estrutura __________ em
conjunto com o comando ______ para ir para a prxima linha.

Controle acadmico

Resultado solicitado

Soluo tradicional
PROCEDURE EXIBIR_NOTAS;
BEGIN
TABAVALIACAO.FIRST;
WHILE (NOT TABAVALIACAO.EOF) DO
BEGIN
IF NOT TABASP.FINDKEY([TABAVALIACAO['NASP'])
THEN SHOWMESSAGE(ASPIRANTE NO EXISTE)
ELSE
IF NOT TABDISCI.FINDKEY([TABAVALIACAO[CODDISC'])
THEN SHOWMESSAGE(DISCIPLINA NO EXISTE)
ELSE
LISTBOX1.ITEMS.Add(TABASP['NOMEASP']+'
+TABDISCI['NOMEDISCI'] +
+ TABAVALIACAO[TIPO'] +
+ FLOATTOSTR(TABAVALIACAO[NOTA']));
TABAVALIACAO.NEXT;
END;
END;

Algumas Questes
Existe uma maneira de obter informaes
em um banco de dados de forma mais
fcil?
O sistema existente no fornece certa
informao. O que fazer?

SQL
S o qu?

SQL
Structured Query Language, ou Linguagem de Consulta
Estruturada ou SQL, uma linguagem de pesquisa para
banco de dados relacional. Muitas das caractersticas
originais do SQL foram inspiradas na lgebra relacional.

DDL - Linguagem de Definio de Dados


DDL (Data Definition Language - Linguagem de Definio de
Dados). Uma DDL permite ao usurio definir novas tabelas e
elementos associados.
Os comandos bsicos da DDL so:
CREATE cria um objeto (uma Tabela) dentro da base de dados.
DROP apaga um objeto do banco de dados.
ALTER, permite alterar um objeto, por exemplo, adicionando uma
coluna a uma tabela existente.

DML - Linguagem de Manipulao de Dados


DML (Data Manipulation Language - Linguagem de Manipulao
de Dados). A DML um subconjunto da linguagem usada para
selecionar, inserir, atualizar e apagar dados.
SELECT permite especificar uma consulta como uma descrio do
resultado desejado. A consulta no especifica como os resultados
deveriam ser localizados.
INSERT usada para somar uma linha a uma tabela existente.
UPDATE para mudar os valores de dados em uma linha de uma
tabela existente.
DELETE permite remover linhas existentes de uma tabela.

Vantagens de usar SQL


Simplifica o cdigo;
Reduz o tempo de desenvolvimento;
Permite consultas pelo usurio
independente do cdigo fonte (consultas
no previstas durante o desenvolvimento
do sistema).

Sistemas de Banco de Dados que usam SQL


Apache Derby
Cach
DB2
Firebird
Informix
Ingres
InterBase
Microsoft SQL Server
MySQL
Oracle
PostgreSQL
Sybase Adaptive Server Enterprise

Consulta SQL
Select Numasp, Nomeasp, Nomedisci,
Peso,Nota*Peso as Notapeso
From Aspirantes, Disciplinas, Avaliacoes, Tipoteste
Where Avaliacoes.Numasp = Aspirantes.Numasp
And Avaliacoes.Coddisci = Disciplinas.Coddisci
And Avaliacoes.Teste = Tipoteste.Teste
And Avaliacoes.NumAsp = 2002
Order By Aspirantes.Numasp, Avaliacoes.Coddisci;

Consultas SQL
SELECT Seleciona os campos a serem exibidos, usamos
* para exibir todos os campos (deve ser evitado para no
sobrecarregar a rede.
FROM Informamos as tabelas envolvidas na consulta.
AS Para modificar um nome de campo ou nomear um
campo calculado.
ORDER BY Ordena a consulta pelos campos informados.
WHERE Seleciona as linhas a serem exibidas de acordo
uma condio.
LIKE Usamos para pesquisar parte de uma string em uma
condio.

Exemplos
Select * From Aspirantes;
Select NomeAsp, TelAsp From Aspirantes;
Select NomeAsp as Nome, TelAsp as Tel
From Aspirantes;
Select Descricao, (Preco * Estoque) as Total
From Produtos
Order By Descricao;
Select Descricao From Produtos
Where Preco Between 10 and 20;

Exemplos
Select * From Aspirantes
Where NumAsp = 2001;
Select NomeAsp
From Aspirantes
Where Nome LIKE F% Or Nome LIKE % DE %;
Select Descricao, (Preco * Estoque) as Total
From Produtos
Where Total > 5000;

Relacionamento
Quando a clusula FROM especfica mais de uma
tabela devemos colocar o relacionamento na
clusula WHERE.
Select NomeAsp, CodDisci,TipoTeste, Nota
From Aspirantes, Avaliacoes
Where Aspirantes.NumAsp = Avaliacoes.NumAsp;

Evitando Repeties

Comandos de Agregao
Select COUNT(*) as TotAsp From Aspirantes;
Select SUM(Estoque) From Produtos;
Select AVG(Preco) From Produtos;
Select MIN(Preco) From Produtos;
Select MAX(Preco) From Produtos;

Percorrendo uma consulta SQL


PROCEDURE EXIBIR_NOTA;
BEGIN
TABCONSULTA.FIRST;
WHILE (NOT TABCONSULTA.EOF) DO
BEGIN
LISTBOX1.ITEMS.Add(TABCONSULTA['NOMEASP']+ ' '
+TABCONSULTA ['NOMEDISCI'] + ' '
+TABCONSULTA ['TIPO'] + ' '
+ FLOATTOSTR(TABACONSULTA ['NOTA']);
TABCONSULTA.NEXT;
END;
END;

Exerccio de SQL

1) Qual o valor a ser pago pelo titular "CARLOS SILVA?


2) Quais os nomes de titulares que comeam com a letra "F?
3) Quais os titulares que possuem dependentes que tenham "
de " no nome?
4) Quais so os dependentes do titular "PEDRO FONSECA ?
5) Quais so os dependentes do titular "020" em ordem
crescente ?
6) Qual o total de titulares ou dependentes por atividade ?
7) Quais os scios titulares que jogam futebol em ordem
crescente ?
8) Selecione os nomes dos dependentes menores de 18 anos.

SQL em Delphi
Query1.Close;
Query1.SQL.Clear;

{Fecha a query}
{Limpa o contedo da
propriedade SQL}
Query1.SQL.Add(Select *);
{Adiciona}
Query1.SQL.Add(From Aspirantes);
Query1.SQL.Add(Where BairroAsp = TIJUCA );
Query1.Open;
{Abre e executa a Query}