Você está na página 1de 9

Apresentao

Nesta apostila veremos como funciona a estrutura bsica da construo de um bando de dados, sua integridade e como realizar pesquisas em SQL. Cada banco de dados usa uma linguagem diferenciada e nesta apostila temos de uma maneira genrica os comandos mais utilizados e suas funes.

Treinamento em SQL Bsico


Pgina 1 de 9

Banco de Dados
Um banco de dados uma estrutura lgica de organizao de informaes de diversos tipos, como textos e valores numricos. Como podemos ver na figura abaixo, o banco de dados dividido em tabelas e campos.

Estrutura
Aplic - Aplicao
Campo
ativo codapl codcen codmod codtipapl coduni datalt dataqu datavenda datgar datins Cdigo do Tipo de Aplicao Cdigo da Unidade Data de Alterao Data de Aquisio Data da Venda Data Limite de Garantia Data de Instalao Descrio Agrupamento Lgico- S/N Categoria Modelo de Aplicao Nmeros de Pontos Produtivos Nmero do Patrimnio Nmero de Srie Observao Cdigo do defeito (DEFEITO) Cdigo Agrupamento da aplicao Agrupamento para Interferncia Tempo Operacional Dia Ativo S/N Cdigo da Aplicao Cdigo do Centro de Custo

Descrio
char (1)

Tipo
double precision double precision double precision double precision double precision timestamp timestamp timestamp timestamp timestamp varchar (100) char (1) varchar (100) varchar (60) double precision varchar (20) varchar (100) blob double precision varchar (20) varchar (255) varchar (255) double precision

Obr.
Sim Sim Sim

Tabela

descricao gruapl g_gruvis modelo numfus numpat numser obs r_defeito_coddef tag taggru taggru_1 temope

Sim Sim

Sim

Nesta figura temos os campos (gruapl) e a tabela (APLIC). Os campos se agrupam para formar uma tabela. E as tabelas se agrupam para formar o banco de dados. Quando vamos construir uma pesquisa em SQL temos que saber quais campos queremos como resultado e quais tabelas sero pesquisadas. As tabelas apenas agrupam os campos, na verdade toda a informao esta gravada no campo da tabela.

Tipos de campos
Existem alguns campos com diferentes formatos e dados suportados. Estes campos de dividem nos seguintes formatos: Datatime : Suporta datas e horrios. Integer / Numero: Como o prprio nome diz, suporte nmeros inteiros.

Treinamento em SQL Bsico


Pgina 2 de 9

Memo: um campo que permite a digitao de grandes textos, alm de permitir a alterao de fonte e insero de imagens e objetos. Ao trabalhar com este campo em relatrios, geralmente necessrio um tratamento prvio, pois a configurao da fonte geralmente carregada junta ao campo. String / Texto: Neste campo possvel inserir textos e nmeros com um limite mximo de 250 caracteres. Lista: Neste campo permito somente gravar valores pr-configurados pelo programador. importante ressaltar que uma vez definido o tipo de campo impossvel alterar esta configurao.

SQL? O que esta ferramenta?


Utilizamos esta linguagem para fazer buscas orientadas no banco de dados a fim de gerar relatrios, rastrear erros ou mesmo analisar a estrutura das tabelas. A sigla SQL vem do ingls Structure Query Language, Linguagem de Consulta Estruturada e esta linguagem classificada com uma Linguagem de 4 nvel. As funes variam de acordo com cada banco de dados, mas o bsico sempre ser igual em todos eles. Principais comandos e funes: Existem varias palavras reservadas, que compem as funes e comandos, que quando usados ficam destacados na maioria dos editores Sql. Estes devem ser usados com uma estrutura j definida ou de uma forma especifica e no podem ser usadas de outra forma. Suas principais estruturas sero vistas abaixo. Para a manipulao e controle do banco de dados temos os comandos bsicos: Select Seleo de dados Insert Insero de dados Update Alterao de dados Delete Excluso de dados Cada comando acima tem sua funo definida e especifica, com resultados diferenciados.

Clusula Select
O comando Select tem como principal funo o retorno de informaes do banco de dados. Sua estrutura bsica simples, mas com a possibilidade quase infinita de manipular os dados e trazer ao usurio as mais complexas informaes possveis. Esta Clusula no altera as informaes contidas no banco de dados. Estrutura:

Treinamento em SQL Bsico


Pgina 3 de 9

Select (Campo / Tabela.campo / * ) from Tabela O smbolo * (asterisco) indica que todos os campos da tabela sero mostrados na execuo do comando. Informaes adicionais: Tabela: O nome da tabela que contm os campos que sero selecionados. Pode-se usar varias tabelas ao mesmo tempo. Campo: Os nomes dos campos dos quais os dados sero listados. Se voc incluir mais de um campo, de forma que sero listados na ordem seqencial de incluso. Voc tambm pode mudar o nome de exibio deste campo na pesquisa usando a palavra as ou simplesmente colocando um novo nome na frente do campo. Alguns editores exigem a presena do nome da tabela e do campo. Quando mais de uma tabela usada e ambas possuem o mesmo campo, a estrutura exige que seja ligado o campo a tabela. Para a execuo dos exemplos iremos usar uma base Demo Hospitalar. Select Tag, Descricao as Aplicacao from aplic A instruo SELECT no muda os dados no banco de dados e normalmente a primeira palavra em uma instruo SQL. A maior parte das instrues SQL so clusulas Select.

Complementos da Clusula Select


Como uma tabela pode ter milhares de registros, temos algumas funes que filtram os dados que so selecionados para que o nmero de informao seja precisa e a consulta otimizada. No podemos esquecer que estas funes no funcionam sozinhas, elas obrigatoriamente devem acompanhar a clausula Select, sendo que o mesmo funciona sem estas funes adicionais. Veja no final deste documento algumas dicas de como otimizar a consulta ao bando de dados e solucionar problemas comuns. Where Esta funo serve para filtrar os dados de acordo com uma condio no comando, por exemplo, uma determinada data ou nome. Quando se usa como filtros campos que so do tipo String (texto) deve escrever o valor deste campo entre aspas simples. Estrutura: Select * from Aplic where Codapl = 10 Neste comando, a pesquisa ir retornar todos os dados da tabela que possuem no campo Codapl o valor 10. Podemos tambm usar vrios filtros na mesmo instruo, para isso basta adicionar os seguintes termos:

Treinamento em SQL Bsico


Pgina 4 de 9

And (E): Implica em uma nova situao, para isso, os filtros devem ser complementares, seno, nenhum resultado ser dado. Select * from Aplic where Tag = BOT-0001 and Descricao = BLENDOMAT Or (Ou): Implica em condies complementares, ou seja, busca pelos dois valores descritos nos filtros. Select * from Aplic where Tag = BOT-0001 or Descricao = BLENDOMAT Not (No): uma negativa ao filtro, sendo assim o filtro torna-se o oposto do que esta sendo proposto. Select * from Aplic where Tag = BOT-0001 and not Descricao = BLENDOMAT Between (Entre): Usado para datas e nmeros, significa que o filtro ser aplicado respeitando um intervalo de inicio e fim. S ser mostrado o resulto que suprir o perodo ou intervalo do primeiro valor e o do segundo valor. Select * from Aplic where Tag = BOT-0001 and Descricao = BLENDOMAT and Datalt between 01/01/2006 and 01/01/2007 Usando o Case A funo Case serve para alterar o valor impresso no comando SQL. Somente se pode usar o Case quando o campo que trar o resultado for numrico. Select Tipmanut.Tag, Tipmanut.Descricao, Case Tipmanut.Prioridade When 1 then 'Muito Alto' When 2 then 'Alto' When 3 then 'Media' When 4 then 'Baixo' When 5 then 'Muito Baixa' End Prioridade From Tipmanut Order by 1 Usando o If A funo IF uma funo similar ao case, mas esta funciona com qualquer tipo de dado. Atravs de comparao um resultado pode ser alterado por este comando.

Treinamento em SQL Bsico


Pgina 5 de 9

Select Count(*), IIF(Ordserv.Statord,'A','Aberto', IIF(Ordserv.Statord,'F','Fechada','Cancelada')) From Ordserv Group by Statord Funes avanadas: Order by: Apresenta os dados de forma organizada pela tabela selecionada. Quando mais de um campo secionado, a ordem obedece sempre primeira seleo. Select Descricao, from Aplic Order by Aplic.Codapl Group by: Esta funo agrupa os valores de um determinado campo da pesquisa. Este comando s pode ser usado com uma funo aggregate (relatrio sinttico) e todos os campos usados na listagem necessariamente devem estar agrupados na funo. Para que a funo Group by seja satisfatria, muitas vezes necessrio complementar estas funes com informaes complementares. Principais Funes: Count Conta quantos resultados possuem a condio estipulada.

Select Cencus.Descricao, Count(*) from Aplic Inner join Cencus on Cencus.codcen = Aplic.Codcen Group by Cencus.Descricao Sum Soma os valores do campo selecionado (apenas valores numricos)

Select Aplic.Descricao, SUM(CUSHHTREA) as Total From Ordserv Inner Join Aplic on Aplic.Codapl = Ordserv.codapl Where Cushhtrea is not null Group by Aplic.Descricao MAX / MIN Retornam apenas o valor mximo ou mnimo do campo selecionado.

Select Max / Min(codord) From Ordserv AVG A funo AVG retorna a mdia dos valores de determinada coluna. S deve-se usar esta funo quando o campo for numrico.

Select AVG(CUSHHTREA) from Ordserv

Treinamento em SQL Bsico


Pgina 6 de 9

Funo Having
A funo 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 Codapl, MAX(Tempo_Decorrido) from Ordserv Group by Codapl Having MAX(tempo_decorrido) > 5 Subconsultas: Outra grande vantagem da clusula Select a possibilidade de subconsultas, ou seja, pode-se fazer uma consulta dentro de outra consulta. Podendo assim adicionar ou remover resultados de uma consulta. Temos como exemplo a clusula abaixo: Select * from Ordserv Where codapl = (Select codapl From aplic) Where tag = 'CAS-0001') Sendo assim, a pesquisa ir retornar todos os resultados que satisfazem a subconsulta desta clusula. Este o exemplo mais simples que pode ser montada. Existem funes mais precisas para executar a sub-consulta, sendo que os smbolos de igualdade podem ser: = (Igual): Compara apenas um resultado da sub-consulta, sendo assim, a resultado trazido tem que ser apenas um valor. Sua aplicao geralmente satisfaz a busca em campos chaves. <, >, <>, >= ,<= (Maior, menor, diferente, maior ou iqual, menor ou iqual): retorna apenas os valores que satisfazem estas condies. Muito usado para campos numricos e datas. In, not in (incluso, no incluso): lista apenas os resultados que esta dentro da condio estabelecida na sub-consulta.

SELECT NOMTAB, DESCRICAO FROM TABELAS ORDER BY NOMTAB

Interligando mais de uma tabela na Clusula Select


Na maioria dos casos para se montar uma consulto em SQL necessrio incluir mais de uma tabela de consulta. Muitas tabelas guardam apenas um cdigo de uma outra tabela, ento, para que o resultado seja til, devemos buscar estas informaes de outras tabelas. Para se utilizar mais de uma tabela na Clusula Select preciso observar certos parmetros para a execuo correta da pesquisa. A maneira mais simples de gerar este relacionamento apontar direto os campos comuns para ambas tabelas. Como no exemplo abaixo: Select * from ordserv, aplic where ordserv.codapl = aplic.codapl

Treinamento em SQL Bsico


Pgina 7 de 9

and aplic.tag = 'CAS-0001' O grande problema deste tipo de consulta que o resultado ser todos os dados de ambas as tabelas, podendo causar um demora excessiva na gerao de um relatrio e as informaes que podem confundir a leitura do mesmo. Outra maneira de fazer esta ligao usando a instruo INNER JOIN. Esta funo liga as tabelas atravs do campo desejado. Existem varias variaes da Instruo Inner Join, como Left Outer join, Right outer Join, Full outer join, pois cada uma reage de uma forma diferente. Se um campo comum entre as tabelas estiver vazio, o resultado no trar nenhuma informao sobre aquele dado. Exemplo: Select * from ordserv Inner join aplic on aplic.codapl = ordserv.codapl where Aplic.tag = 'CAS-0001' A tabela a ser relacionada indica aps a instruo Inner Join, sendo assim a mesma tabela pode ser usada varias vezes para a realizao da consulta e no caso de uso de demais tabelas, o resultado no trar informaes da tabela relacionada, a no ser que este seja solicitado pelo usurio na determinao dos campos.

Funes Diversas pr-definidas


A linguagem SQL fornece diversas funes predefinidas que podem ser chamadas a partir de uma instruo SQL. Por exemplo, a seguinte instruo SELECT utiliza a funo UPPER para retornar os cdigos dos equipamentos, escritos em letras maisculas, em vez da maneira como que eles foram armazenados. Cada tipo de campo possui certos tipos de funes. Select upper(tag) from Aplic Abaixo uma lista com algumas destas funes:

Funes Numricas
ABS COUNT SUM AVG MAX MIN

Comando Insert
Este comando serve para inserir dados em uma tabela qualquer. Complexo de se utilizar, este comando tem pouca utilidade para a maioria dos casos, pois geralmente este processo feito diretamente pelo sistema e no pelo banco de dados. Para a utilizao deste comando preciso tem um grande conhecimento na estrutura da tabela, pois para inserir os dados preciso respeitar os campos chaves, verificar o tipo de

Treinamento em SQL Bsico


Pgina 8 de 9

campo, quais campos aceitam valor, quais os valores que so aceitos e a interao com outras tabelas, caso exista. Sua estrutura se resume em: Insert into Tabela (Campos) Values (Valores) Exemplo: Insert into Cencus (CODEMP, TAG, DESCRICAO) Values(1, '1107', 'TREINAMENTO')
* A palavra reservada Null quer dizer que campo ficara vazio, sem informao.

Para o comando Insert no existe a necessidade de clausulas complementares, como a clausula Where ou Order by.

Comando Update
Este comando tem grande utilidade para manuteno do banco de dados. Serve para modificar dados j gravados no banco de dados. Muito simples de ser usado, devese ter muito cuidado ao execut-lo, a seleo de dados a ser alterado deve ser muito bem desenvolvida e analisada, pois sua modificao no banco de dados permanente e irreversvel. Update Cencus Set Descricao = 'treinamento sql' Where descricao = 'treinamento' Para o comando Update essencial o uso da clausula Where, pois esta define quais os registros sero afetados, caso o contrario, todos os registros da tabela sero alterados pelo comando. Vale lembrar que para inserir dados em branco, deve se usar a palavra reservada Null ou espaos em branco da seguinte forma: .

Comando Delete
Este comando apaga todas as informaes selecionadas pelo usurio. Deve-se tomar muito cuidado, pois o comando mais arriscado de se utilizar e com conseqncias irreversveis. O filtro de pesquisa deve ser muito bem elaborado para evitar a perda de dados. Vale lembrar que se um registro esta relacionado a uma outra tabela, este registro devera ser apagado na seqncia de utilizao em outras tabelas. Delete from Cencus Where Descricao = 'TREINAMENTO SQL'

Treinamento em SQL Bsico


Pgina 9 de 9

Você também pode gostar