Introdução ao SQL

INTRODUÇÃO

SQL (Structured Query Language) é a linguagem padrão utilizada para armazenar, manipular e recuperar informações de bancos de dados. Colocando de forma simples, é através do SQL que é possível criar e atualizar nossos dados através de um modelo relacional. Os maiores usuários da linguagem são os DBAs (Database Administrators), responsáveis por toda a gestão dos dados, desde criar tabelas até dar acesso às demais áreas (para os mais curiosos há um podcast brasileiro com foco nos DBAs chamado DatabaseCast).

Cientistas de dados também fazem uso constante da linguagem SQL para extração de dados, criação de suas próprias tabelas – pois os dados no repositório nem sempre estarão organizados para alguma tarefa específica -, dentre outras coisas.

BANCO DE DADOS RELACIONAL

A principal linguagem para lidar com bancos de dados relacionais é o SQL. Mas o que seria um banco de dados relacional (relational database)?

Um banco de dados relacional é uma organização de dados em diferentes tabelas, isto é, em relações. Basicamente, o modelo relacional é um conjunto de tabelas de diversas colunas e linhas com uma chave de identificação em comum para ligar as diferentes tabelas.

Um exemplo bem básicos seria um banco comercial que organiza as informações dos clientes em um banco de dados relacional cuja chave de identificação é o CPF (que na tabela foram incluídos com o nome id). Os dados foram separados em três tabelas diferentes: uma com o número de telefone e CEP dos clientes; outra com as transações efetuadas no Internet Banking e a data em que foram realizadas; e outra com as informações referentes ao crédito tomado e o número de parcelas da dívida. Teríamos então:

sql_1

Tabela 1 – Cadastro

sql_2

Tabela 2 – Transacoes

sql_3

Tabela 3 – Credito

Note que uma única tabela com todas essas informações ficaria muito mais desorganizada, pois em alguns casos temos várias linhas para um único cliente. Ou seja, CEP e telefone ficariam se repetindo em uma tabela com o cadastro e as transações do cliente. No entanto, caso alguém deseja fazer a união de quaisquer tabelas isso é facilmente feito utilizando como ligação o campo id. Assim, é possível montar uma tabela com o id, crédito tomado, quantidade de parcelas da dívida, CEP e telefone.

sql_4

Tabela 4: Cadastro_Credito

Poderíamos ter também um caso em que nem todas tabelas se ligassem por um mesmo campo. Dessa forma, você precisaria fazer as ligações utilizando campos comuns entre as tabelas. Pense nos dados de vendas de uma loja virtual. Uma forma de organizá-los, seria montar uma tabela com todas as informações de compras (identificador da ordem, data da compra, status, identificação do cliente), em outra colocar os detalhes de cada compra (identificador da ordem, identificador do produto, quantidade) e em uma outra tabela os detalhes de cada produto (identificador do produto, nome, descrição). Visualmente, teríamos:

sql_0

COMANDOS BÁSICOS

Abaixo, uma lista de comandos básicos no SQL e a foto da tabela de saída de cada comando:

Criar tabela:


/*Cria tabela e define tipo de cada variavel*/
CREATE TABLE Cadastro (
id varchar(11)
, CEP varchar(8)
, Telefone double
);

/*Insere informacoes na tabela*/
INSERT INTO Cadastro (id, CEP, Telefone)
VALUES
('45875426887', '12402007', 9564142365)
, ('87445789652', '97610003', 4501023254)
, ('38954265874', '32560000', 9987546544)
;

sql_1

Selecionar todos os campos e elementos de uma tabela (o resultado é o mesmo da tabela acima):

 SELECT * FROM CADASTRO; 

sql_1

Selecionar todos os campos e elementos de uma tabela, limitando o número de linhas (nesse caso n = 3):

 SELECT *
FROM TRANSACOES
LIMIT 3
; 

sql_5

Selecionar algumas colunas específicas de uma tabela:

SELECT CEP, Telefone FROM Cadastro;

sql_6

Criar uma nova tabela com campos específicos selecionados pelo usuário (o resultado é o mesmo da tabela acima):

CREATE TABLE TELEFONE AS
SELECT CEP, Telefone
FROM Cadastro;

Selecionar apenas os campos que atendam a alguma condição dada (e.g.: selecionar apenas os clientes do CEP 12402-007):

SELECT * FROM Cadastro
where CEP = '12402007';

sql_7

Agrupar somando os valores de uma coluna. Por exemplo, calcular o valor total das transações de cada cliente da tabela Transações:

SELECT id, SUM(transacao) as soma_transacoes
from TRANSACOES
group by id;

sql_8

Poderíamos ter também o cálculo do valor médio das transações de cada cliente:

 SELECT id, AVG(transacao) as media_transacoes
from TRANSACOES
group by id; 

sql_9

Unir tabelas por um campo comum. Por exemplo, trazer as informações de crédito para a tabela CADASTRO e formar assim a tabela 4 apresentada anteriormente:

SELECT A.*, B.*
from CADASTRO A
left join CREDITO
on A.id = B.id;

Mais sobre join você pode ver em Como combinar tabelas no SAS utilizando left join e full join e Combinando três tabelas com o left join.

SQL NO SAS

Por ser a referência em manipulação de dados, você consegue fazer uso de SQL dentro do SAS através do comando proc sql. Todos os comandos realizados acima podem ser executados no SAS acrescentando ‘proc sql;’ antes e ‘run;’ em seguida:

PROC SQL;
    SELECT * FROM CADASTRO;
RUN;

Leia também:
Wikipedia: Banco de Dados Relacional
Como combinar tabelas no SAS utilizando left join e full join
Empilhando bases no SQL
Charada de SQL

Formatar/Identar o código feito em SQL para deixá-lo mais legível, mais agradável de se ler: SQLFormat

Fonte das tabelas da loja virtual: ntu.edu.sg

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s