Você está na página 1de 37

v 1.

0 10f02 Copyright, 2002 +Quality 1


Copyright, 1999 Gilson Tavares.
Structured
Query
Language
v 1.0 10f02 Copyright, 2002 +Quality 2
Ndulo 1
Objetivo.
A Linguagem SQL.
O Ambiente do Laboratrio.
Tipos de Dados.
Laboratrio 1
v 1.0 10f02 Copyright, 2002 +Quality 3
Objetivo do Curso
Apresentar os comandos basicos da
linguagem SQL, ou seja inserao, atualizaao,
exclusao e consulta a dados armazenados.
Para os exercicios praticos sera utilizado o
produto Nicrosoft Access 2000, embora tudo
que for exposto possa ser aplicado, com
minimas modificaoes, em qualquer outro
produto que suporte o padrao SQL ANS!-
1992.
v 1.0 10f02 Copyright, 2002 +Quality +
O que SQL ?
SQL (Structured Query Language) uma
linguagem de consulta, manipulaao e
administraao de dados.
Foi desenvolvida pela !BN.
uma linguagem de + Geraao.
Tornou-se um padrao de interface com banco
de dados relacionais.
Atualmente padronizada pelo ANS! (SQL
ANS!-92 ou SQL2).
v 1.0 10f02 Copyright, 2002 +Quality 5
Exemplo de uso do SQL
!ncluir e excluir registros no banco de dados
Alterar dados dentro de registros no banco
Recuperar dados que atendam determinada
condiao
Criar objetos (e.g. tabelas) dentro do banco
Criar regras de negcio e integridade
Administrar a segurana de acesso a objetos
Desenvolver aplicaoes (discutivel)
v 1.0 10f02 Copyright, 2002 +Quality 6
Como usar o SQL ?
!nterativamente atravs de utilitarios de
consulta
!ntegrado em Linguagens de + Geraao.
Embutido em Linguagens de 3 Geraao.
Atravs de bibliotecas de interface (ODBC).
Em procedimentos armazenados no banco.
Em fluxos (scripts) de execuao "batch".
v 1.0 10f02 Copyright, 2002 +Quality 7
!nstalaao do Ambiente
Cada maquina
pode ser
cliente e
servidor ao
mesmo tempo.
Ou pode existir um
unico servidor que
atenda a todas as
outras maquinas.
v 1.0 10f02 Copyright, 2002 +Quality 8
Tabelas, Registros e Campos
Um banco de dados formado por uma
coleao de tabelas.
Cada tabela contm uma coleao de
registros.
Cada registro contm uma coleao de
campos.
Todos os registros de uma mesma tabela
possuem os mesmos campos (colunas).
As propriedades de cada campo (uma coluna)
valem para todos os registros de uma tabela.
Cada coluna de uma tabela de um tipo de
dado.
v 1.0 10f02 Copyright, 2002 +Quality 9
Tipos de Dados
Tipos de dados padrao:
caractere
data
numrico (inteiro, real, monetario)
texto, imagem, binario.
Tipo de dados definidos pelo usuarios
v 1.0 10f02 Copyright, 2002 +Quality 10
Tipos de Dados - Caractere
Cadeia de carac. de tamanho fixo - char(n)
Cadeia de tamanho variavel - varchar(n)
Texto longo (6+K caracteres) - text
Exemplo:
tabela paciente:
nome varchar(50)
quarto char(+)
diagnostico text
v 1.0 10f02 Copyright, 2002 +Quality 11
Tipos de Dados - Numero
!nteiro - int (+), smallint (2), tinyint (1 byte)
Ponto flutuante - real (+), float (8 bytes)
Ponto fixo - decimal (n,d) ou numeric (n,d)
(n" o numero de digitos e d" o numero de
decimais. O tipo decimal" pode conter mais
digitos que o especificado, pois pode ser
implementado usando os tipos real" ou float")
Dinheiro - money (8), smallmoney (+ bytes)
v 1.0 10f02 Copyright, 2002 +Quality 12
Tipos de Dados - Data etc.
Data com horario
Datetime (8)
Smalldatetime (+ bytes)
Binario - bit, binary (n), varbinary(n)
!magem (6+ Kb) - image
v 1.0 10f02 Copyright, 2002 +Quality 13
Laboratrio 1
v 1.0 10f02 Copyright, 2002 +Quality 1+
Ndulo 2
Criaao de tabelas.
valor Nulo.
valor Default.
O comando SELECT.
Lista de expressoes.
Renomeando os resultados.
Laboratrio 2.
v 1.0 10f02 Copyright, 2002 +Quality 15
Criaao de Tabelas
O comando CREATE TABLE
CREATE TABLE aluno (
cod_aluno int NOT NULL,
nome_aluno char(30) NOT NULL,
endereco char(50) NOT NULL,
telefone char(20) NULL,
e_mail_aluno char(50) NULL
)
v 1.0 10f02 Copyright, 2002 +Quality 16
valor Nulo
O dado pode ser obrigatrio (NOT NULL) ou
de preenchimento opcional (NULL)
!ndica um dado nao preenchido, de valor
ignorado, ou um campo que nao tem valor
naquele registro.
Exemplo: C.P.F. da esposa na declaraao de
!.R.
Nao participa nas computaoes.
mdia (2,4,0 ) = 2 ( 6 / 3 )
mdia (2,4,NULL) = 3 ( 6 / 2 )
v 1.0 10f02 Copyright, 2002 +Quality 17
valor Default
valor que o campo recebe se nao for
especificado nenhum outro valor na inserao
do registro.
Exemplo:
Create table paciente (
nome varchar(50) NOT NULL,
quarto char(4)default "INFM" NOT
NULL,
diagnostico text NULL )
v 1.0 10f02 Copyright, 2002 +Quality 18
O Comando SELECT
o comando usado para recuperar
informaoes.
O comando SELECT incondicional:
select * from tabela
select * from aluno
select col1 {,col } from tabela
select nome, telefone from aluno
v 1.0 10f02 Copyright, 2002 +Quality 19
Lista de Expressoes
Select lista-de-expresses from
tabela
Onde lista-de-expressoes uma lista
separada por virgulas que pode conter:
nome de colunas
constantes
funoes
expressoes aritmticas
v 1.0 10f02 Copyright, 2002 +Quality 20
Exemplo de Lista de
Expressoes
Select nome_curso,
preco_turma * 0.8,
preco_turma /
minimo_alunos
from curso
Select avg(preco_turma)
from curso
v 1.0 10f02 Copyright, 2002 +Quality 21
Renomeando os Resultados
Pode-se mudar os nomes das colunas ou
atribuir-se nomes as expressoes.
Sintaxes:
expresso-ou-coluna AS nome_novo
nome_novo = expresso-ou-coluna
Exemplo:
Select nome_curso as curso,
preco_turma * 0.8 as "preco
reduzido"
from curso
v 1.0 10f02 Copyright, 2002 +Quality 22
Laboratrio 2
v 1.0 10f02 Copyright, 2002 +Quality 23
Ndulo 3
Ordenaao.
Eliminaao de repetiao.
Qualificaao de resultados.
Criando novas tabelas a partir de
consultas.
Laboratrio 3.
v 1.0 10f02 Copyright, 2002 +Quality 2+
Ordenaao
Pode-se ordenar o resultado de um comando
SELECT por uma coluna ou por uma lista de
colunas, e cada coluna por ser ordenada de
forma ascendente ou descendente.
Select from
order by nome-coluna {asc|desc}
{, nome-coluna-2 {asc|desc}
}
v 1.0 10f02 Copyright, 2002 +Quality 25
Exemplos de Ordenaao
Select * from aluno order by
nome_aluno
Select nome_curso as curso,
preco_turma * 0.8 as preco
from curso
order by preco desc, curso asc
v 1.0 10f02 Copyright, 2002 +Quality 26
Resultado sem Repetiao
Pode-se eliminar as linhas repetidas do
resultado de um comando SELECT. !sto
sempre implicara em uma ordenaao
implicita.
Select distinct bairro,
cidade
from aluno
v 1.0 10f02 Copyright, 2002 +Quality 27
Qualificaao dos Resultados
Pode-se restringir o conjunto que sera
selecionado pelo comando SELECT.
Select from where condio
{ order by }
Select nome_aluno from aluno
where cod_aluno = 1
v 1.0 10f02 Copyright, 2002 +Quality 28
Expressoes de Qualificaao
As expressoes que qualificam quais registros
vao ser selecionados pelo comando SELECT
podem conter
operaoes de comparaao (=, <, !=, <=, etc.)
operaao lgicas (AND, OR, NOT)
modelos (L!KE)
conjuntos (!N, NOT !N)
subconsultas
v 1.0 10f02 Copyright, 2002 +Quality 29
Exemplo de Qualificaoes (1)
Select nome_aluno from aluno
where cidade = "Rio de Janeiro"
Select nome_curso, preco_turma
from curso
where carga_horaria > 10
v 1.0 10f02 Copyright, 2002 +Quality 30
Exemplo de Qualificaoes (2)
Select nome_professor from
professor
where area != "ASI"
Select nome_professor from
professor
where not area = "ASI"
Select nome_curso from curso
where NOT preco_turma > 7200
v 1.0 10f02 Copyright, 2002 +Quality 31
Exemplo de Qualificaoes (3)
Select conceito from inscricao
where cod_turma = 1
and conceito >= "8.0"
Select nome_aluno from aluno
where bairro = "Tijuca"
or bairro = "Meier"
v 1.0 10f02 Copyright, 2002 +Quality 32
Exemplo de Qualificaoes (+)
Select cod_aluno, conceito
from inscricao
where conceito >= "5.0
and conceito <= "9.5"
Select cod_aluno, conceito
from inscricao where
conceito between "5.0" and
"9.5"
v 1.0 10f02 Copyright, 2002 +Quality 33
Exemplo de Qualificaoes (5)
Select nome_aluno from aluno
where bairro in ("Tijuca", "Meier")
Select nome_aluno from aluno
where nome_aluno between "M" and
"MZ
and (bairro = "Tijuca" or
cidade = "Niteroi")
v 1.0 10f02 Copyright, 2002 +Quality 3+
Exemplo de Qualificaoes (6)
Neta-caracteres: "_" - uma ocorrncia de
qualquer caractere, "%" nenhuma ou varias
ocorrncias de quaisquer caracteres.
Select nome_aluno from aluno
where nome_aluno like "Maria%"
Select nome_aluno from aluno
where nome_aluno like "Lui_
Eduardo%"
v 1.0 10f02 Copyright, 2002 +Quality 35
Exemplo de Qualificaoes (7)
Select nome_aluno from aluno
where cod_aluno in
( select cod_aluno from
inscricao
where conceito = "10.0" )
Select distinct cod_turma
from inscricao
where conceito is null
v 1.0 10f02 Copyright, 2002 +Quality 36
Criando Tabelas via Consultas
Select nome_aluno as nome_mark,
telefone as telefone_mark,
"N" as contactado
into tele_marketing from aluno
where telefone is not null
Select nome_mark from tele_marketing
where nome_mark like "Maria%"
v 1.0 10f02 Copyright, 2002 +Quality 37
Laboratrio 3