Você está na página 1de 18

UNIÃO EDUCACIONAL DO NORTE

DIRETORIA ACADÊMICA
EXTENSÃO UNIVERSITÁRIA

INTRODUÇÃO A SQL

FACILITADOR:
LUIZ AUGUSTO MATOS DA SILVA
lzomatos@gmail.com

CAMPUS CIDADE UNIVERSITÁRIA


DE 06 A 27 DE MAIO DE 2006

Rio Branco, Maio de 2006. 1/35

INTRODUÇÃO A SQL

ƒ A Structured Query Language (SQL)

ƒ Histórico
ƒ Características
ƒ Composição
ƒ Instruções SQL
ƒ Comandos Básicos

Rio Branco, Maio de 2006. 2/35

1
Histórico

Para acesso a um banco de dados relacional, é


necessário uma linguagem.
O SQL é a linguagem usada pela maioria destes bancos
de dados.

A Structured Query Language (SQL), ou Linguagem


Estruturada de Consulta, foi criada pela IBM no início dos
anos 70.
Tornou-se um padrão mundial em meados da década de 80.
Esse padrão é regido atualmente pela norma ISO/IEC 9075
de 1999 e suas atualizações.
Rio Branco, Maio de 2006. 3/35

Enquanto isso ...

Paralelamente muita coisa acontecia no mundo da


tecnologia durante o surgimento da linguagem ..

¾ Estabelecimento dos BD Relacionais no mercado;


¾ Disseminação dos PCs nas organizações;
¾ Surgimento das Redes de Computadores;
¾ etc ..

Rio Branco, Maio de 2006. 4/35

2
Características

ƒ É baseada no inglês, e usa palavras como:


SELECT, INSERT, DELETE como parte de seu conjunto de comandos;

ƒ É uma linguagem onde se especifica qual informação queremos e não


como trazê-la;

ƒ Oferece uma série de comandos para uma variedade de tarefas


diferentes, incluindo:
seleção de dados;
inserção, alteração, e deleção de linhas em uma tabela;
criar, deletar e alterar objetos do banco de dados;
controlar o acesso aos dados e aos objetos do banco de dados;
garantir a consistência da base de dados;
etc.
Rio Branco, Maio de 2006. 5/35

Composição

A SQL é composta por:


ƒ DML (Data Manipulation Language) – permite recuperar e
alterar os dados do BD. Pode ser embutida em outra
linguagem de programação.

ƒ DDL (Data Definition Language) – descreve a estrutura do


BD.

ƒ DCL (Data Control Language) – usada para controlar o


acesso aos dados, os usuários, etc.

SQL = DML + DDL + DCL


Rio Branco, Maio de 2006. 6/35

3
Exemplos

ƒ Linguagem de Manipulação de Dados (DML)


SELECT CLI_NOME, CLI_ENDERECO
FROM CLIENTES;
ƒ Linguagem de Definição de Dados (DDL)
CREATE table "CATEGORIAS_PRODUTOS" (
"CAT_CODIGO" NUMBER NOT NULL Primary Key,
"CAT_DESCRICAO" VARCHAR2(100) NOT NULL,
);
ƒ Linguagem de Controle de Dados (DCL)
GRANT DBA TO SYS;

Rio Branco, Maio de 2006. 7/35

Instruções SQL
SELECT Recuperaç
Recuperação de dados

INSERT
UPDATE DML (Data Manipulation Language)
Language)
DELETE

CREATE
ALTER
DROP DDL (Data Definition Language)
RENAME Language)
TRUNCATE

COMMIT
ROLLBACK Controle de transaç
transação

GRANT
REVOKE DCL (Data Control Language)
Language)

Rio Branco, Maio de 2006. 8/35

4
Instruções SQL

Comando Descrição
select seleciona dados de uma base de dados
insert Insere linhas emuma tabela
update altera valores de linhas na base de dados
delete elimina linhas na tabela
create cria objetos na base de dados
alter altera a estrutura de umobjeto da base
drop elimina determinado objeto da base de dados
grant dá direitos de acessos aos objetos do banco de dados
revoke retira direitos de acesso aos objetos do banco

Rio Branco, Maio de 2006. 9/35

Instruções SQL

Os comandos podem ser escritos em mais de uma linha;


ƒ Cláusulas diferentes são colocadas usualmente em linhas
diferentes;
ƒ Podem ser usadas tabulações;
ƒ Comandos podem ser escritos em letras maiúsculas e/ou
minúsculas;
ƒ Finaliza-se a query com o sinal de ponto e vírgula (;)
ƒ Qualquer forma abaixo do comando é válida:

select * select select


from * *
aluno; from aluno; from
aluno;

Rio Branco, Maio de 2006. 10/35

5
Exemplos de comandos SQL

SELECT * FROM FORNECEDORES;


SELECT CLI_NOME, CLI_DATA_NASCIMENTO
FROM CLIENTES
WHERE CLI_MUN_CODIGO = 5556;
SELECT CLI_NOME, CLI_ENDERECO, CLI_EMAIL
FROM CLIENTES
ORDER BY CLI_NOME DESC;
UPDATE PRODUTOS
SET PRO_VALOR_UNIT = VALOR * 1,15;
DELETE PRODUTO WHERE DTVALIDADE <= “01-01-2001”;
INSERT INTO DEPTO VALUES (534,”VENDAS”,”VDS”);
COMMIT;
Rio Branco, Maio de 2006. 11/35

A instruç
instrução SQL
é informada A instruç
instrução é enviada
SQL> para o banco de dados
SQL> SELECT
SELECT locais
locais
22 FROM
FROM dept;
dept;

Banco de
Dados

Os dados são
exibidos
LOCAIS
LOCAIS
-------------
-------------
RIO
RIO BRANCO
BRANCO
BRASILEIA
BRASILEIA
FEIJO
FEIJO
SENA
SENA MADUREIRA
MADUREIRA

Rio Branco, Maio de 2006. 12/35

6
Escrevendo Comandos SQL

O comando SELECT traz dados de uma tabela de banco de dados:

Exemplo:
Para trazer todos os códigos, nomes e endereços de todos os clientes da
tabela CLIENTES:
SELECT cli_codigo, cli_nome, cli_endereco
FROM clientes;

ƒ Note que o nome das colunas é separado por vírgulas.


ƒ É possível também selecionar todas as colunas de uma tabela.
SELECT * FROM clientes;

ƒ A seguir, outros itens que podem ser incluídos em uma cláusula SELECT:

Rio Branco, Maio de 2006. 13/35

Comandos Básicos

Expressões aritméticas em determinada coluna:

SELECT pro_codigo, pro_descricao, pro_valor_unit*1.15


FROM produtos;

PRO_CODIGO PRO_DESCRICAO PRO_VALOR_UNIT*1.15


1 Calca Coton Belissima 51,75
2 Mouse Optico 17,25
3 Camiseta da Copa 25,3
4 Camiseta de Corrida

Rio Branco, Maio de 2006. 14/35

7
Apelidos (aliases) para colunas:

SELECT pro_codigo, pro_descricao,


pro_valor_unit*1.15 REAJUSTE
FROM produtos;

PRO_CODIGO PRO_DESCRICAO REAJUSTE


1 Calca Coton Belissima 51,75
2 Mouse Optico 17,25
3 Camiseta da Copa 25,3
4 Camiseta de Corrida

Rio Branco, Maio de 2006. 15/35

Tratamento de Valores Nulos:


ƒ Se determinada coluna não tem um valor, este valor é denominado
nulo. Quando uma operação aritmética é feita com um valor nulo, o
resultado é sempre nulo:

SELECT pro_codigo, pro_descricao, pro_valor_unit*1.15


FROM produtos;

PRO_CODIGO PRO_DESCRICAO PRO_VALOR_UNIT*1.15


1 Calca Coton Belissima 51,75
2 Mouse Optico 17,25
3 Camiseta da Copa 25,3
4 Camiseta de Corrida

Rio Branco, Maio de 2006. 16/35

8
Evitando a seleção de valores idênticos em uma tabela:
ƒ Na seleção de colunas de uma tabela sem nenhuma cláusula de
distinção, são trazidos todos os valores mesmo que sejam idênticos:

SELECT cli_endereco
FROM clientes;

CLI_ENDERECO
R ANTONIO SOUTO, 110
R DAS OLIVEIRAS, 123
AV TIRADENTES, 211
R DAS OLIVEIRAS, 123
R DAS OLIVEIRAS, 123

Rio Branco, Maio de 2006. 17/35

Utilizando a cláusula DISTINCT:


ƒ Serve para selecionar valores distintos de determinadas colunas.

SELECT DISTINCT cli_endereco


FROM clientes;

CLI_ENDERECO
AV TIRADENTES, 211
R ANTONIO SOUTO, 110
R DAS OLIVEIRAS, 123

Para listar os atributos de uma tabela, utilize o comando DESC.


Exemplo: DESC clientes;
Rio Branco, Maio de 2006. 18/35

9
Ordenando colunas:
ƒ A cláusula ORDER BY é utilizada para trazer os dados em uma ordem
específica.

SELECT cli_nome, cli_endereco, cli_data_nascimento


FROM clientes
ORDER BY cli_nome;
CLI_NOME CLI_ENDERECO CLI_DATA_NASCIMENTO
Francisco Conde R DAS OLIVEIRAS, 123 07/12/75
Joaquim da Silva AV TIRADENTES, 211 05/06/80
Joaquina Conde R DAS OLIVEIRAS, 123 23/08/98
Maria Madalena R DAS OLIVEIRAS, 123 23/08/78
XPC Representacoes R ANTONIO SOUTO, 110 01/02/95
Rio Branco, Maio de 2006. 19/35

ƒ Para mudar a ordem de pesquisa:

SELECT cli_nome, cli_endereco, cli_data_nascimento


FROM clientes
ORDER BY cli_nome DESC;

CLI_NOME CLI_ENDERECO CLI_DATA_NASCIMENTO


XPC Representacoes R ANTONIO SOUTO, 110 01/02/95
Maria Madalena R DAS OLIVEIRAS, 123 23/08/78
Joaquina Conde R DAS OLIVEIRAS, 123 23/08/98
Joaquim da Silva AV TIRADENTES, 211 05/06/80
Francisco Conde R DAS OLIVEIRAS, 123 07/12/75

Rio Branco, Maio de 2006. 20/35

10
A cláusula WHERE:
ƒ A cláusula WHERE corresponde ao operador relacional de restrição.
Ela contém as condições que as linhas da relação devem satisfazer
para serem mostradas.
ƒ O WHERE quando utilizado deve vir após a cláusula FROM.

SELECT colunas
FROM tabela
WHERE condições que devem ser respeitadas;

ƒ Operadores lógicos utilizados com a cláusula WHERE:


O p e ra d o r S ig n ific a d o
= ig u a l a
> m a io r q u e
>= m a io r o u ig u a l a
< menor que
<= m e n o r o u ig u a l a
Rio Branco, Maio de 2006. 21/35

Para listar os produtos da categoria de Livros (001):

SELECT pro_descricao, pro_qnt_disponivel, pro_valor_unit


FROM produtos
WHERE pro_cat_codigo='001‘;

PRO_DESCRICAO PRO_QNT_DISPONIVEL PRO_VALOR_UNIT


Harry Poter e a Pedra Filosofal - -
Redes de Computadores: Guia
8 85,99
Completo

Rio Branco, Maio de 2006. 22/35

11
Para listar os produtos que tem valor unitário maior ou igual a 50,00:

SELECT pro_descricao, pro_qnt_disponivel, pro_valor_unit


FROM produtos
WHERE pro_valor_unit >= '50,00';

PRO_DESCRICAO PRO_QNT_DISPONIVEL PRO_VALOR_UNIT


Gargantilha Dourada 18k 2 1545
Mochila Company 4 57,5
Redes de Computadores: Guia
8 85,99
Completo

Rio Branco, Maio de 2006. 23/35

Comparando o valor entre duas colunas da tabela:


ƒ Exemplo: Vendas que tiveram o recebimento realizado após a dia da
venda.

SELECT hve_ven_codigo, hve_pro_codigo


FROM hist_vendas
where hve_data_venda < hve_data_recebimento

HVE_VEN_CODIGO HVE_PRO_CODIGO
11223 1
11223 3
11226 6

As colunas que estão sendo comparadas não precisam constar


no resultado da query.
Rio Branco, Maio de 2006. 24/35

12
Operadores SQL:
ƒ Existem quatro operadores que podem ser utilizados em
qualquer tipo de dados.

Operador Significado:
between ___ and ____ valores que estão entre os dois valores
especificados (inclusive os valores).
in ( lista ) valor que seja igual a algum dos valores
especificados na lista.
like valores correspondentes ao valor especificado
is null seleciona os valores nulos

Todos os operadores podem ser utilizados em suas formas


negativas.

Rio Branco, Maio de 2006. 25/35

ƒ Exemplos:
Operador BETWEEN:

SELECT for_codigo, for_nome_fantasia


FROM fornecedores
WHERE for_codigo BETWEEN '003' AND '005';

FOR_CODIGO FOR_NOME_FANTASIA
3 Coletanea Musical
4 Relojoaria Latao de Ouro
5 Tem de Tudo Bazar

Na utilização do between o menor valor da comparação deve vir


antes.

Rio Branco, Maio de 2006. 26/35

13
Operador IN:

SELECT mun_nome, mun_uf_estado


FROM municipios
WHERE mun_nome IN ('RIO BRANCO', 'XAPURI',
'SENA MADUREIRA');

MUN_NOME MUN_UF_ESTADO
SENA MADUREIRA AC
XAPURI AC

Valores de caracteres devem vir entre aspas simples.

Rio Branco, Maio de 2006. 27/35

Operador LIKE:

SELECT cli_codigo, cli_nome, cli_sexo


FROM clientes
WHERE cli_nome LIKE 'J%';

CLI_CODIGO CLI_NOME CLI_SEXO


2 Joaquim da Silva M
5 Joaquina Conde F

Rio Branco, Maio de 2006. 28/35

14
O símbolo % significa qualquer caracter (ou conjunto) de caracteres.
Outro operador que pode ser usado junto com a clausula LIKE é o ‘_’
(underscore) que substitui um número específico de caracteres.

SELECT ate_codigo, ate_nome


FROM atendentes
WHERE ate_nome LIKE '_____';

ATE_CODIGO ATE_NOME
3 MARIA
4 CELIO
5 PEDRO
A combinação dos dois operandos ( % e _ ) também pode ser
usada.

Rio Branco, Maio de 2006. 29/35

Selecionar as cidades que contenham o substring ‘LA’ em qualquer


posição.

SELECT MUN_NOME
FROM municipios
WHERE mun_nome LIKE '%LA%';

MUN_NOME
ACRELANDIA
EPITACIOLANDIA
PLACIDO DE CASTRO

Rio Branco, Maio de 2006. 30/35

15
Operador LIKE:
SELECT mun_nome
FROM municipios
WHERE mun_nome LIKE '%__ND%';

Operador IS NULL:
SELECT cli_codigo, cli_nome
FROM clientes
WHERE cli_email IS NULL;
CLI_CODIGO CLI_NOME
4 Maria Madalena

Rio Branco, Maio de 2006. 31/35

Selecionando dados com múltiplas condições.


ƒ Os operadores and e or podem ser utilizados para compor
expressões lógicas.
ƒ Exemplo:
Localizar todos os clientes do sexo masculino que estejam ativos:
SELECT cli_codigo, cli_nome
FROM clientes
WHERE cli_sexo='M'
AND cli_status = 'A';

CLI_CODIGO CLI_NOME
1 Francisco Conde
2 Joaquim da Silva
Rio Branco, Maio de 2006. 32/35

16
Para encontrar os clientes do sexo masculino ou os ativos:
SELECT cli_codigo, cli_nome
FROM clientes
WHERE cli_sexo='M'
OR cli_status = 'A';

CLI_CODIGO CLI_NOME
3 XPC Representacoes
1 Francisco Conde
2 Joaquim da Silva
4 Maria Madalena
5 Joaquina Conde

Rio Branco, Maio de 2006. 33/35

Podem ser utilizadas diversas combinações das cláusulas


and/or:
SELECT cli_codigo, cli_nome
FROM clientes
WHERE cli_sexo='F'
AND cli_status = 'A'
OR cli_status = 'I';

CLI_CODIGO CLI_NOME
4 Maria Madalena
5 Joaquina Conde

Rio Branco, Maio de 2006. 34/35

17
//

Introdução a SQL II

//

Rio Branco, Maio de 2006. 35/35

18

Você também pode gostar