Anda di halaman 1dari 21

UNIÃO EDUCACIONAL DO NORTE

CURSO DE ADMINISTRAÇÃO EM GESTÃO DA INFORMAÇÃO

INTRODUÇÃO A SQL

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

Rio Branco, Maio de 2006. 1/42

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/42

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/42

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/42

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/42

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/42

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/42

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/42

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/42

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/42

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/42

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/42

6
Ambiente de Estudo

Supondo que ..
“Uma empresa necessita de um banco de dados, onde serão
armazenados os dados dos clientes, fornecedores e das
vendas realizadas. Os produtos comercializados estão
organizados em categorias. E faz-se necessário o controle de
vendas por atendente e das mensagens enviadas entre eles.”

Rio Branco, Maio de 2006. 13/42

1 N N 1
1 N

1 N
N 1

N 1
N
1
N 1
Rio Branco, Maio de 2006. 14/42

7
Tabela: CLIENTES
Descrição: Possui os dados dos clientes.

Tipo Nulo Chave


Campo
Tabela: FORNECEDORES
CLI_CODIGO int(5) PK Descrição: Possui os dados dos fornecedores.
CLI_MUN_CODIGO int(4) FK
CLI_NOME varchar(50) Nul Cha
Tipo
Campo o ve
CLI_DATA_NASCIMENTO date
FOR_CODIGO int(5) PK
CLI_SEXO char(1) YES
FOR_MUN_CODIGO int(4) FK
CLI_CPF varchar(11) YES
FOR_RAZAO_SOCIAL varchar(100)
CLI_RG varchar(20) YES
FOR_NOME_FANTASIA varchar(50)
CLI_CNPJ varchar(14) YES
FOR_NOME_CONTATO varchar(50)
CLI_ENDERECO varchar(100) YES
FOR_CNPJ varchar(14)
CLI_EMAIL varchar(50) YES
FOR_ENDERECO varchar(100) YES
CLI_DATA_CADASTRO date
FOR_DATA_CADASTRO date YES
CLI_TIPO char(1)
FOR_FONE varchar(20) YES
CLI_STATUS char(1) YES
FOR_EMAIL varchar(50) YES
CLI_FONE varchar(20) YES
FOR_WEBSITE varchar(100) YES
CLI_NOME_CONTATO varchar(50) YES

Rio Branco, Maio de 2006. 15/42

Tabela: PRODUTOS
Descrição: Contém o cadastro de produtos.
Relacionando-se com seu fornecedor e categoria.

Tipo Nulo Chave


Campo
PRO_CODIGO int(5) PK
PRO_FOR_CODIGO int(5) FK
PRO_CAT_CODIGO int(3) FK
PRO_DESCRICAO varchar(100)
PRO_QNT_DISPONIVEL int(5) YES
PRO_ULTIMA_AQUISICAO date YES
Tabela: CATEGORIAS_PRODUTOS
PRO_VALOR_UNIT float YES Descrição: Armazena as categorias dos produtos.
PRO_FABRICANTE varchar(50) YES Livros, CDS, Material Escolar, Informática, etc
PRO_DETALHES text YES
Nul Chav
Tipo
Campo o e
CAT_CODIGO int(3) PRI
CAT_IDENTIFICADOR varchar(4) YES
CAT_DESCRICAO varchar(100)

Rio Branco, Maio de 2006. 16/42

8
Tabela: VENDAS
Descrição: Contém os registros das vendas realizadas.

Tipo Nulo Chave


Campo
VEN_CODIGO int(5) PK
VEN_CLI_CODIGO int(5) FK
VEN_ATE_CODIGO int(3) FK
VEN_BAN_CODIGO int(3) FK
VEN_VALOR_TOTAL float
VEN_FORMA_PAGAMENTO char(1) YES
Tabela: HIST_VENDAS
VEN_OBSERVACOES varchar(200) YES
Descrição: Possui o histórico das vendas.

Cha
Tipo Nulo
Campo ve
HVE_VEN_CODIGO int(5) FK
HVE_PRO_CODIGO int(5) FK
HVE_DATA_VENDA date
Criada através do relacionamento N:N entre HVE_DATA_RECEBIMENTO date YES
as tabelas VENDAS e PRODUTOS HVE_QNT_ITENS int(5) YES

Rio Branco, Maio de 2006. 17/42

Tabela: ATENDENTES
Descrição: Possui os dados dos atendentes.
Permite identificar quem realizou a venda.

Tipo Nulo Chave


Campo
ATE_CODIGO int(5) PRI
ATE_NOME varchar(50)
ATE_ULTIMO_ACESSO date
ATE_RAMAL varchar(4) YES Tabela: BANCOS
Descrição: Possui os dados dos principais bancos.
ATE_EMAIL varchar(50) YES
Permite identificar o local do pagamento.
ATE_PERFIL char(1)
ATE_STATUS char(1) YES Nul Chav
Tipo
Campo o e
BAN_CODIGO int(3) PRI
BAN_NOME varchar(50)

Rio Branco, Maio de 2006. 18/42

9
Tabela: MENSAGENS
Descrição: Possui as mensagens enviadas entre os atendentes.

Tipo Nulo Chave


Campo
MEN_CODIGO int(5) PK
MEN_ATE_CODIGO int(3) FK
MEN_TMS_CODIGO int(3) FK
MEN_TEXTO text
MEN_DATA_ENVIO date YES Tabela: TIPO_MENSAGENS
Descrição: Os tipos que caracterizam as mensagens.
Reclamações, dúvidas, sugestões, outras.

Tipo Nulo Chave


Campo
TMS_CODIGO int(3) PK
TMS_DESCRICAO varchar(50)

Rio Branco, Maio de 2006. 19/42

Tabela: MUNICIPIOS
Descrição: Contém o cadastro de municípios.
Auxilia no endereço de clientes/fornecedores.

Tipo Nulo Chave


Campo
MUN_CODIGO int(4) PK
MUN_NOME varchar(100)
MUN_UF_ESTADO char(2)
MUN_CEP varchar(8) YES

Rio Branco, Maio de 2006. 20/42

10
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. 21/42

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. 22/42

11
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. 23/42

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. 24/42

12
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. 25/42

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. 26/42

13
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. 27/42

ƒ 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. 28/42

14
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. 29/42

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. 30/42

15
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. 31/42

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. 32/42

16
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. 33/42

ƒ 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. 34/42

17
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. 35/42

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. 36/42

18
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. 37/42

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. 38/42

19
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. 39/42

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. 40/42

20
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. 41/42

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. 42/42

21

Anda mungkin juga menyukai