Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LINGUAGENS DE
CONSULTA .......................................................................................................................
............... 2 LINGUAGENS COMERCIAIS
–
LINGUAGEM SQL .................................................................................................. 2
I
NTRODUÇÃO
............................................................................................................................................
......................... 2 PARTE
C
OMANDOS DA
L
INGUAGEM
DDL/SQL ........................................................................................................... 2
Comando CREATE DATABASE
................................................................................................................................ 2
Comando CREATE TABLE
......................................................................................................................................... 3
Comando CREATE INDEX
......................................................................................................................................... 5
Comando DROP INDEX
............................................................................................................................................
.. 5
Comando DROP TABLE
............................................................................................................................................
.6
Comando ALTER TABLE
...........................................................................................................................................
6
P
ARTE
II
C
OMANDOS DA
L
INGUAGEM
DML/SQL ........................................................................................................... 9
Comando SELECT
............................................................................................................................................
........... 9
Inserções, Alterações e Exclusões
.............................................................................................................................. 16
Visões
............................................................................................................................................
............................. 17
CENTRO TECNOLÓGICO UNIVERSIDADE DE CAXIAS DO SUL
CETEC
CAXIAS DO SUL
Linguagens de Consulta
Uma linguagem de consulta é uma linguagem na qual um usuário requisita informações
do banco de dados. Estas linguagens são tipicamente de mais alto nível do que as
linguagens de programação padrão. A álgebra relacional é uma linguagem de consulta
procedural
. Ela consiste de um conjunto de operações que tornam uma ou duas relações como
entrada e produzem uma nova relação como resultado.
Linguagens Comerciais
–
Linguagem SQL
Introdução
Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas
linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM,
desenvolveu a SQL como forma de interface para o sistema de BD relacional
denominado SYSTEM R, início dos anos 70. Em 1986 o American National Standard
Institute (ANSI), publicou um padrão SQL. A SQL estabeleceu-se como linguagem
padrão de Banco de Dados Relacional. SQL apresenta uma série de comandos que
permitem a definição dos dados, chamada de DDL (Data Definition Language),
composta entre outros pelos comandos Create, que é destinado a criação do Banco de
Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como
exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. Os
comandos da série DML (Data Manipulation Language), destinados a consultas,
inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de
maneira simultânea. Como exemplo de comandos da classe DML temos os comandos
Select, Insert, Update e Delete. A Linguagem SQL tem como grandes virtudes sua
capacidade de gerenciar índices, sem a necessidade de controle individualizado de
índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo
registro a registro. Outra característica muito importante disponível em SQL é sua
capacidade de construção de visões, que são formas de visualizarmos os dados na forma
de listagens independente das tabelas e organização lógica dos dados.
Este comando permite a criação do banco de dados. Sintaxe: CREATE DATABASE <
nome_db >; onde: nome_db: indica o nome do Banco de Dados a ser criado. OBS: O
comando CREATE DATABASE não está disponível no SGBD Access.
3
1
Era para ser Tinyint, mas não funciona.
2
É um real, com uma precisão de 18 casas decimais, mas não funciona.
3
É alfanumérico que aceita até 255 caracteres, mas não funciona.
Binary
–
Qualquer tipo de dados pode ser armazenado em um campo deste tipo. Não é feita
nenhuma conversão dos dados. O modo como os dados são inseridos em um campo
binário dita o modo como eles aparecerão como saída. Ocupa 1 byte por caracter.
Texto
- Texto ou combinações de textos e números, como endereços. Até 255 caracteres.
Memorando - Textos e números muito extensos, como anotações ou descrições. Ocupa
até 64.000 caracteres.
Número
- Dados numéricos a serem utilizados em cálculos matemáticos, exceto cálculos
envolvendo dinheiro (utilize o tipo Moeda). Configure a propriedade
TamanhoDoCampo para definir o tipo de Número específico. Ocupa 1, 2, 4 ou 8 bytes.
Data/Hora
- Ocupa 8 bytes.
Moeda
- Precisão de 15 dígitos à esquerda do ponto decimal e quatro dígitos à direita. 8 bytes.
AutoNumeração
- Números seqüenciais inseridos automaticamente quando um registro é adicionado.
Ocupa 4 bytes. No SQL do Access 2000, o
counter
pode ser usado com os
4
parâmetros semente e incremento. Ex: counter (50,2) onde a semente (valor inicial) do
campo é 50 e o incremento é 2.
Tamanhos de Números:
Byte
- Armazena números inteiros de 0 a 255, ocupa 1 byte.
Inteiro
- Armazena números inteiros de
–
32.768 a 32.767, ocupa 2 bytes.
Inteiro Longo
(Padrão) - Armazena números inteiros de -2.147.483.648 a 2.147.483.647. Ocupa 4
bytes
Simples
- Armazena números reais de
–
3,402823E38 a
–
1,401298E
–
45 para valores negativos e de 1,401298E
–
45 a 3,402823E38 para valores positivos. Tem uma precisão de 7 casas decimais e
ocupa 4 bytes.
Duplo
- Armazena números reais de
–
1,79769313486231E308 a
–
4,94065645841247E
–
324 para valores negativos e de 1,79769313486231E308 a 4,94065645841247E
–
324 para valores positivos. Tem uma precisão de 15 casas decimais e ocupa 8 bytes.
Tipos de dados do Oracle:
Char( ) - Alfanumérico de até 255 caracteres. Os espaços não utilizados ocupam
memória. Varchar2( ) - Alfanumérico de até 2000 caracteres. Os espaços não
utilizados não ocupam memória. Number( ) - Numérico Date - Data OBS: A opção
NOT NULL somente está disponível no SGBD Access a partir da versão 97. Também
existe no Oracle. A definição da chave primária da tabela pode ser definida na última
linha do comando CREATE TABLE da seguinte forma: Sintaxe (igual no Access e
Oracle): Constraint < nome_chave_primária > primary key (< nome_atributo(s) >)
onde: <nome_chave_primária>: indica um nome qualquer usado para identificar a
chave primária. <nome_atributo(s)>: indica o nome do(s) atributo(s) que compõe a
chave. Se mais de um atributo for usado para compor a chave, estes devem ser
colocados separados por vírgula. Exemplo: CREATE TABLE PRODUTOS (códprod
short, descr text(40) not null, um text(2), preçovenda currency, constraint
pk_produtos primary key (códprod)) Também é possível criar uma chave única,
definindo-a com o tipo
unique
, da mesma forma como a definição da chave primária. Complementando o exemplo
acima: Exemplo: CREATE TABLE PRODUTOS (códprod short, descr text(40) not
null,
5
Um
índice
é uma estrutura que permite a recuperação de linhas de uma tabela mais rapidamente.
Isto significa que quando um campo da tabela possui um índice, quando buscarmos
informações na tabela pelo campo indexado, o retorno será bem mais rápido.
Remoção de chave:
O comando ALTER TABLE também pode ser utilizado para eliminar uma constraint.
Sintaxe (igual no Access e Oracle): ALTER TABLE < nome_tabela > drop constraint
<nome_chave> onde: nome_tabela: indica o nome da tabela que contém a chave.
nome_chave: indica o nome da chave. Ex: ALTER TABLE vender drop constraint
fk_vender_relation_produtos No exemplo acima o comando
alter table
juntamente com o drop - que é um comando de remoção, é usado para remover a
constraint
de chave estrangeira da tabela vender, ou seja, o relacionamento entre vender e
produtos é eliminado.
Comando SELECT
O comando SELECT permite a consulta de dados de uma ou mais tabelas. Sintaxe
(igual no Access e Oracle): SELECT [ALL|DISTINCT|DISTINCTROW|TOP n] * |
nome_campo1, nome_campo2, ... FROM nome_tabela1, ... WHERE condição GROUP
BY nome_coluna1, ... HAVING condição ORDER BY nome_coluna1 ASC|DESC, ...
onde: SELECT: usado para indicar o(s) campo(s) que será(ão) exibido(s). O
“*” é usado para indicar
todos os campos. FROM: usado para indicar a(s) tabela(s) de onde provém os campos.
WHERE: usado para estabelecer tuplas individuais candidatas (não pode conter
funções de grupo). GROUP BY: usado para fixar grupos. HAVING: usado para
selecionar grupos para exibição. ORDER BY: usado para classificar as tuplas por um
ou mais campos, em ordem ascendente ou descendente. Obs: Todas as cláusulas após o
FROM são opcionais. Alguns analistas costumam afirmar em tom jocoso que SQL não
passa de "Selecione algo De algum lugar Onde se verificam tais relações" Exemplo:
SELECT * FROM Produtos ORDER BY Código ASC; O exemplo acima lista todos
os campos tabela Produtos em ordem crescente de Código.
Diferença entre ALL, DISTINCT, DISTINCTROW e TOP n:
ALL - Seleciona todos os campos das tabelas em questão. DISTINCT - Omite registros
que contêm dados duplicados nos campos selecionados. DISTINCTROW - Omite dados
baseado em registros duplicados completos, e não somente campos duplicados. TOP n -
Retorna um certo número de registros que caem no topo ou na base de um intervalo
especificado por uma cláusula ORDER BY. Suponha que você deseje obter os nomes
dos 25 melhores estudantes da classe de 1994: SELECT TOP 25 Nome, Sobrenome
FROM Estudantes WHERE AnoDeGraduação = 1994 ORDER BY MédiaDeNotas
DESC;
10
Operadores
Os seguintes operadores podem ser usados na cláusula WHERE: Sintaxe da cláusula
WHERE: WHERE <nome_campo> <operador> <valor> Operadores relacionais:
Operador Significado
= igual a <> diferente > maior que >= maior que ou igual
a< menor que <= menor que ou igual a Operadores lógicos:
11
função retorno
avg(< nome_campo >) média ignorando nulos count(< nome_campo >) conta os
valores do campo para valores não nulos max(< nome_campo >) maior valor do campo
min(< nome_campo >) menor valor do campo sum(< nome_campo >) soma dos
valores do campo ignorando nulos Sintaxe: SELECT < função > (< nome_campo >)
FROM (< nome_tabela >) Exemplos:
12
Nota: Observe que a cláusula EXISTS indica se o resultado de uma pesquisa contém ou
não tuplas. Observe também que poderemos verificar a não existência (NOT EXISTS)
caso esta alternativa seja mais conveniente.
Recuperando Dados de Várias Tabelas (JOINS)
Quando é preciso recuperar dados de mais de uma tabela, em geral, precisamos realizar
uma junção (JOIN) entre as tabelas, a fim de extrair as informações necessárias para a
consulta formulada.
INNER JOIN
Combina registros de duas tabelas sempre que houver valores correspondentes em um
campo comum. Sintaxe: FROM tabela1 INNER JOIN tabela2 ON tabela1.campo1
opercomp tabela2.campo2 Você pode usar uma operação INNER JOIN em qualquer
cláusula FROM. Este é o tipo mais comum de associação. As associações internas
combinam registros de duas tabelas sempre que houver valores correspondentes em um
campo comum a ambas. Ex: SELECT NomeDaCategoria, NomeDoProduto FROM
Categorias INNER JOIN Produtos ON Categorias.CódigoDaCategoria =
Produtos.CódigoDaCategoria;
LEFT JOIN OU RIGHT JOIN
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2 ON tabela1.campo1 opercomp
tabela2.campo2 Utilize uma operação LEFT JOIN para criar uma associação externa
esquerda. As associações externas esquerdas incluem todos os registros da primeira
(esquerda) de duas tabelas, mesmo que não haja valores correspondentes para os
registros na segunda tabela (direita). Utilize uma operação RIGHT JOIN para criar uma
associação externa direita. As associações externas direitas incluem todos os registros
da segunda (direita) de duas tabelas, mesmo que não haja valores correspondentes para
registros na primeira (esquerda) tabela. Por exemplo, você poderia usar LEFT JOIN
com as tabelas Departamentos (esquerda) e Funcionários (direita) para selecionar todos
os departamentos, inclusive os que não tenham funcionários designados para eles. Para
selecionar todos os funcionários, inclusive os que não estão designados para um
departamento, você usaria RIGHT JOIN. O exemplo a seguir mostra como você poderia
associar as tabelas Categorias e Produtos no campo CódigoDaCategoria. A consulta
produz uma lista de todas as categorias, inclusive aquelas que não contêm produtos:
SELECT NomeDaCategoria, NomeDoProduto FROM Categorias LEFT JOIN Produtos
ON Categorias.CódigoDaCategoria = Produtos.CódigoDaCategoria;
15
Comando UPDATE
Sintaxe: UPDATE <tabela> SET <campo> = <expressão> [WHERE <condição>];
Exemplo: UPDATE Empregados SET salário = salário * 1.2 WHERE salário < 1000;
Comando DELETE
Sintaxe: DELETE FROM <tabela> [WHERE <condição>]; Exemplo: DELETE
FROM Empregados WHERE salário > 5000;
Visões
As tabelas criadas em um banco de dados relacional existem fisicamente no sistema
computacional. Se desejarmos criar tabelas que não ocupem espaço físico, mas que
possam ser utilizadas como tabelas normais, devemos criar visões (VIEWS) que são
tabelas virtuais. OBS: O SGBD Access não dispõe do recurso de criação de visões.
Sintaxe: CREATE VIEW < nome_da_VIEW > (< nome_campo(s) >) AS SELECT <
nome_campo(s) > FROM < nome_tabela > WHERE < expressão_condição >; As
visões são utilizadas para se ter uma visão particular de uma ou mais tabelas, para que
não seja necessária a utilização do conjunto como um todo. Devemos observar que: 1-
Uma visão definida sobre uma única tabela somente será atualizável se os atributos da
tal visão contiverem a chave primária de tal tabela. 2- Visões sobre várias tabelas não
são passíveis de atualizações. 3- Visões que se utilizam de funções de agrupamentos,
também não poderão ser atualizadas.