Você está na página 1de 18

SQL e Infomaker

universidadeciss

ndice
SQL e Infomaker ........................................................................................ 1
1.

Introduo ........................................................................................................................4

2.

A Linguagem SQL ............................................................................................................4


Linguagem Interativa de Consulta: ......................................................................................4
Acesso ao Banco de Dados por Linguagens de Programao: ..........................................4
Administrao de Banco de Dados: ....................................................................................4

3.

Subdivises da Linguagem SQL ......................................................................................5


Linguagem de definio de dados (DDL) ............................................................................5
Linguagem de manipulao de dados (DML) ......................................................................5
Conhecendo os Tipos de Dados: ........................................................................................5
Operadores Lgicos ............................................................................................................6
Operadores Aritmticos .......................................................................................................6

4.

Construindo Comandos DDL ............................................................................................6


CREATE TABLE ..................................................................................................................6
ALTER TABLE .....................................................................................................................7
DROP TABLE ......................................................................................................................8

5.

Construindo Comandos DML ...........................................................................................8


INSERT ................................................................................................................................8
UPDATE ..............................................................................................................................9
DELETE ...............................................................................................................................9
SELECT .............................................................................................................................10

6.

Conhecendo as Funes de Agregadas ........................................................................10


COUNT ..............................................................................................................................11
SUM ...................................................................................................................................11
AVG ...................................................................................................................................11
MIN ....................................................................................................................................11
MAX ...................................................................................................................................11

7.

Conhecendo as Expresses CASE: ...............................................................................12

CISS Software e Servios


2

8.

Conhecendo o Operador JOIN .......................................................................................12


JOIN ou INNER JOIN ........................................................................................................13
RIGHT JOIN ou RIGHT OUTER JOIN ...............................................................................14

9.

Operadores UNION e UNION ALL .................................................................................15


UNION ...............................................................................................................................15
UNION ALL ........................................................................................................................15

10.

Trabalhando com SubConsultas (SubQuery) ..............................................................15

Subquery na Clausula SELECT .........................................................................................16


Subquery na Clausula FROM ............................................................................................16
Subquery na Clausula WHERE .........................................................................................17

CISS Software e Servios


3

1. Introduo
A primeira verso da linguagem SQL, chamada SEQUEL (Structured Query English
Language), surgiu em 1974 nos laboratrios da IBM (Califrnia). Entre 1976 e
1977 ela foi revisada e ampliada, tendo ento o seu nome alterado para SQL. Devido
ao sucesso da nova forma de consulta e manipulao de dados dentro de um
ambiente de banco de dados, sua utilizao tornou-se cada vez maior, atualmente a
maioria dos Sistemas Gerenciadores de Banco de Dados (SGBD) utilizam o SQL
como a linguagem padro para o acesso de dados. Entre eles podemos citar: DB2
(IBM), ORACLE (Oracle Corporation) e SQL Server (Microsoft).
Em 1982 o American National Standard Institute (ANSI) tornou a SQL a linguagem
padro para a manipulao de dados em ambiente relacional.

2. A Linguagem SQL
A linguagem SQL pode ter vrios focos de utilizao, como por exemplo:
Linguagem Interativa de Consulta:
Atravs de comandos SQL os usurios podem montar consultas para extrao de
dados para diversos fins, sem a necessidade da criao de um programa para tal
necessidade, podendo utilizar ferramentas front-end para a construo de relatrios
e/ou anlises de BI (Business Intelligence).
Acesso ao Banco de Dados por Linguagens de Programao:
Comandos SQL embutidos em programas de aplicao (escritos em C, C++, Java,
Visual Basic e etc) acessam os dados armazenados em uma base de dados
relacional.
Administrao de Banco de Dados:
O responsvel pela administrao do banco de dados (DBA) pode utilizar comandos
SQL para realizar tarefas relacionadas com a manuteno dos schemas do banco de
dados.

CISS Software e Servios


4

3. Subdivises da Linguagem SQL


Linguagem de definio de dados (DDL)
Permite ao usurio a definio da estrutura e organizao dos dados armazenados, e
das relaes existentes entre eles.
Ex: CREATE, ALTER, DROP.
Linguagem de manipulao de dados (DML)
Permite a um usurio, ou a um programa de aplicao, a execuo de operaes de
incluso, remoo, seleo ou atualizao de dados previamente armazenados na
base de dados.
Ex: INSERT, UPDATE, DELETE, SELECT.
Conhecendo os Tipos de Dados:
Para que possamos construir corretamente uma estrutura de banco de dados,
precisamos conhecer os tipos de dados utilizados, abaixo esto especificados os
principais tipos de dados utilizados pelos SGBDs.

Tipo de Dados SQL

Dados Armazenados Pelas Colunas

CHAR

Caracteres de texto (at oito caracteres).

VARCHAR

Textos, nomes, descries.

LONGVARCHAR

Textos muitos grandes.

NUMERIC

Nmeros decimais.

DECIMAL

Nmeros decimais.

BOOLEAN

Verdadeiro ou Falso (TRUE, FALSE).

INTEGER

Nmeros inteiros (at nove casas).

BIGINT

Nmeros inteiros muito grandes (acima de 9 casas).

DATE

Datas (YYYY/MM/DD).

TIME

Tempo (HH:MM:SS).

TIMESTAMP

Date e Tempo (DD/MM/YYYY :HH:MM:SS.MMMMMM

CISS Software e Servios


5

Operadores Lgicos
Muitas vezes, apenas uma condio no o suficiente para determinarmos o critrio
de busca. Sempre que isso ocorrer, podemos utilizar operadores lgicos, veja na
tabela a seguir os operadores lgicos:
Operador

Significado

Exemplo

AND

Condio 1 AND condio 2

OR

Ou

Condio 1 OR condio 2

NOT

No/Negao

NOT condio

Operadores Aritmticos
Operador

Significado

Exemplo

Subtrao

(Coluna1 Coluna2)

Adio

(Coluna1 + Coluna2)

Diviso

(Coluna1 / Coluna2)

Multiplicao

(Coluna1 * Coluna2)

>

Maior

Coluna1 > 0

<

Menor

Coluna1 < 1

>=

Maior ou Igual

Coluna1 >= 1

<=

Menor ou igual

Coluna1 <= 0

<>

Diferente

Coluna1 <> 0

4. Construindo Comandos DDL


CREATE TABLE
O comando CREATE TABLE utilizado para criar uma tabela. A sua forma geral
:
CREATE TABLE <nome_tabela> (
<Descrio_Coluna> <Tipo_De_Dado> <Aceita Nulos> <Chave Primria>,
<Descrio_Coluna> < Tipo_De_Dado >,
<Descrio_Coluna> < Tipo_De_Dado > );

CISS Software e Servios


6

Definio
<Nome_Tabela> Nome da tabela a ser criada.
<Descrio_Coluna> Descrio/Nome da coluna que est sendo criada.
<Tipo_De_Dado> Define o tipo dos dados que sero armazenados na coluna
(Nmeros Inteiros, Nmeros Decimais, Textos, Datas e etc).
<Aceita Nulos> Define se a coluna em questo aceita armazenar valores nulos.
<Chave Primria> Define se a coluna a chave primria da tabela que alm de no
poder receber valores nulos, deve ser uma coluna UNIQUE (sem repeties; isto ,
chave primria).
Criando a tabela FUNCIONARIO:
CREATE TABLE FUNCIONARIO
(
IDFUNCIONARIO

INTEGER

NOT NULL

NOME

VARCHAR(30),

DTNASCIMENTO

DATE,

VALSALARIO

DECIMAL(15,6),

FLAGINATIVO

CHAR(1)

PRIMARY KEY,

);

ALTER TABLE
O comando ALTER TABLE utilizado para alterar a estrutura de uma tabela. A
sua forma geral :
ALTER TABLE <nome_tabela> <alterao>;

Definio
<nome_tabela> dever ser substitudo pelo nome da tabela a ser alterada.
<alterao> deve ser substitudo pela sintaxe da alterao que ser feita na tabela.
Alterando a tabela FUNCIONARIO
ALTER TABLE FUNCIONARIO ADD COLUMN SEXO CHAR(1);

CISS Software e Servios


7

DROP TABLE
O comando DROP TABLE utilizado para deletar uma tabela. A sua forma geral
:
DROP TABLE <nome_tabela>;

Definio
<nome_tabela> dever ser substitudo pelo nome da tabela a ser excluda.
Deletando a tabela FUNCIONARIO:
DROP TABLE FUNCIONARIO;

5. Construindo Comandos DML


INSERT, UPDATE, DELETE, SELECT.
INSERT
O comando INSERT utilizado para inserir dados em uma tabela. A sua forma
geral :
INSERT INTO <nome_tabela> (<nome_coluna>,<nome_coluna>) VALUES
(<valor>,<valor>);

Definio
<nome_tabela> dever ser substitudo pelo nome da tabela a ser alterada.
<nome_coluna> deve ser substitudo pelo nome da(s) coluna(s) que tero valor.
<valor> deve ser substitudo pelo valor inserido para a coluna correspondente.

Inserindo dados na tabela FUNCIONARIO:


INSERT INTO FUNCIONARIO (IDFUNCIONARIO, NOME) VALUES (1,Joao Carlos);

CISS Software e Servios


8

UPDATE
O comando UPDATE utilizado para atualizar ou modificar os dados de uma
tabela. A sua forma geral :
UPDATE <nome_tabela> SET <nome_coluna> = <valor> WHERE <condicao>;

Definio
<nome_tabela> dever ser substitudo pelo nome da tabela a ser alterada.
<nome_coluna> deve ser substitudo pelo nome da(s) coluna(s) que tero valor
atualizado.
<valor> deve ser substitudo pelo valor atualizado para a coluna correspondente.
<condicao> deve ser substitudo pela condio que o comando vai respeitar.

Atualizando dados na tabela FUNCIONARIO:


UPDATE FUNCIONARIO SET NOME = MARIA WHERE IDFUNCIONARIO =1;

DELETE
O comando DELETE utilizado para deletar os dados de uma tabela. A sua
forma geral :
DELETE FROM <nome_tabela> WHERE <condicao>;

Definio
<nome_tabela> dever ser substitudo pelo nome da tabela a ser alterada.
<condicao> deve ser substitudo pela condio que o comando vai respeitar.

Deletando dados na tabela FUNCIONARIO:


DELETE FROM FUNCIONARIO WHERE IDFUNCIONARIO =1;

CISS Software e Servios


9

SELECT
O comando SELECT utilizado para selecionar os dados de uma tabela. A sua
forma geral :
SELECT <nome_coluna> FROM <nome_tabela> WHERE <condicao>;

Definio
<nome_coluna> dever ser substitudo pelo nome da coluna a ser selecionada.
<nome_tabela> deve ser substitudo pelo nome da tabela a qual sero selecionados
os dados.
<condicao> deve ser substitudo pela condio que o comando vai respeitar.

Selecionando dados na tabela FUNCIONARIO:


SELECT IDFUNCIONARIO, NOME FROM FUNCIONARIO WHERE IDFUNCIONARIO =1;

6. Conhecendo as Funes de Agregadas


Existem diversas funes que so implementadas pelo padro SQL. Essas funes
auxiliam a computar uma variedade de medidas baseadas em valores das colunas do
banco de dados. As principais funes de agregao so:
Funo

Ao

COUNT

Retorna o nmero de linhas afetadas pelo comando.

SUM

Retorna o somatrio do valor das colunas especificadas.

AVG

Retorna a mdia aritmtica dos valores das colunas.

MIN

Retorna o menor valor da coluna de um grupo de linhas.

MAX

Retorna o maior valor da coluna de um grupo de linhas.

CISS Software e Servios


10

COUNT
Diferentemente das outras funes, o COUNT retorna o nmero de linhas que atende
a uma determinada condio. Podemos utiliz-lo com um asterisco entre parnteses,
para indicar que queremos saber a quantidade total de linhas, independentemente de
haver linhas com colunas nulas ou no. Assim se quisermos saber quantos produtos
existem na tabela PRODUTO rodamos o seguinte comando.
SELECT COUNT(*) FROM PRODUTO

SUM
Retorna o valor total de uma determinada coluna em um determinado grupo de linhas.
Assim, se quisermos saber o total do preo de um determinado produto, utilizamos o
comando:
SELECT SUM(PRECO) FROM PRODUTO

AVG
Extrai a mdia aritmtica de um determinado grupo de linhas. Para saber o preo
mdio dos Produtos, execute o seguinte comando:
SELECT AVG(PRECO) FROM PRODUTO;

MIN
Retorna o menor valor de uma coluna em um grupo de linhas. Podemos utiliz-la para
colunas do tipo data ou alfanumricas. Para saber o preo de venda mais barato da
loja, execute o seguinte comando:
SELECT MIN(PRECO) FROM PRODUTO;

MAX
Retorna o maior valor de uma coluna em um grupo de linhas. Igualmente ao MIN,
pode-se utiliz-la para colunas do tipo data ou alfanumricas. Para saber qual o
produto mais caro da loja, execute o seguinte comando:
SELECT MAX(PRECO) FROM PRODUTO;

CISS Software e Servios


11

7. Conhecendo as Expresses CASE:


O padro SQL prev a possibilidade de utilizar a expresso CASE, presente
em diversas linguagens de programao. Utilizando essa clusula possvel criar
complexas estruturas de controle tanto nas diversas linguagens de programao
como nos comandos SQL. Ao ser utilizada a clusula CASE em comandos SQL
possvel economizar diversas linhas de cdigo, pois no necessrio criar blocos de
programao para testar condies.
A expresso CASE ser testada em tempo de execuo do comando SELECT
ou UPDATE. Como o CASE faz parte de outro comando, ser possvel coloc-lo em
qualquer situao em que um valor deva ser testado.
possvel utilizar o comando SELECT, UPDATE, DELETE prevendo diversas
condies para extrao dos dados. A sintaxe para a seguinte:
SELECT
IDOPERACAO,
CASE WHEN IDOPERACAO > 1000 THEN
'SAIDA'
ELSE
'ENTRADA'
END AS TIPO
FROM
NOTAS_ENTRADA_SAIDA

8. Conhecendo o Operador JOIN


Quando precisamos selecionar dados e envolver duas ou mais tabelas, se faz
necessrio um relacionamento entre elas para que os dados apresentados sejam
ntegros, esse relacionamento tambm chamado JOIN garante essa integridade.
Abaixo os principais tipo de JOINs.

CISS Software e Servios


12

JOIN ou INNER JOIN


Usando o inner join, conforme mostra a figura, teremos como resultado todos os
registros comuns nas duas tabelas.

Figura 1 - Usando Inner Join.


Para isso executaremos os seguintes comandos:
SELECT a.Nome, b.Nome
FROM TabelaA as A
INNER JOIN TabelaB as B
on a.Nome = b.Nome

LEFT JOIN ou LEFT OUTER JOIN:


Usando o Left Join, conforme mostra a figura, teremos como resultado todos os
registros que esto na tabela A (mesmo que no estejam na tabela B) e os registros
da tabela B que so comuns na tabela A.

CISS Software e Servios


13

Para entender melhor, executaremos o seguinte cdigo:


SELECT a.Nome, b.Nome
FROM TabelaA as A
LEFT JOIN TabelaB as B
on a.Nome = b.Nome

RIGHT JOIN ou RIGHT OUTER JOIN


Usando o Right Join, conforme mostra a figuta, teremos como resultado todos os
registros que esto na tabela B (mesmo que no estejam na tabela A) e os registros
da tabela A que so comuns na tabela B.

Figura - Usando Right Join


Para entender melhor, executaremos o seguinte cdigo:
SELECT a.Nome, b.Nome
FROM TabelaA as A
RIGHT JOIN TabelaB as B
on a.Nome = b.Nome

CISS Software e Servios


14

9. Operadores UNION e UNION ALL


O operador UNION combina os resultados de duas ou mais consultas em um nico
resultado, retornando todas as linhas pertencentes a todas as queries envolvidas na
execuo. Para utilizar o UNION ou UNION ALL, o nmero e a ordem das colunas
precisam ser idnticos em todas as consultas e os tipos de dados precisam ser
compatveis.
Existem dois tipos de operador UNION, sendo eles UNION e UNION ALL.
UNION
O operador UNION, por default, executa o equivalente a um SELECT DISTINCT no
resultado final. Em outras palavras, ele combina o resultado de execuo das duas
consultas e ento elimina as linhas duplicadas. Este processo executado mesmo
que no haja registros duplicados.
UNION ALL
O operador UNION ALL tem a mesma funcionalidade do UNION, porm, no executa
o SELECT DISTINCT no resultado final e apresenta todas as linhas, inclusive as
linhas duplicadas.

10. Trabalhando com SubConsultas (SubQuery)


O que uma subquery ?
Subquery um comando SELECT "embutido" em outro comando SELECT, UPDATE,
DELETE ou dentro de outra subquery.
A finalidade da subquery retornar um conjunto de linhas para a query principal
Utilizao
Tipicamente utilizamos subqueries na filtragem de pesquisas (Clusula WHERE) nas
clusulas IN() e EXISTS(), mas subqueries podem aparecer tambm na clusula
FROM ou como substituto de colunas na Clusula SELECT.

CISS Software e Servios


15

Exemplos:

Subquery na Clausula SELECT


SELECT
IDTITULO,
IDCLIFOR,
(
SELECT
CLIENTE_FORNECEDOR.NOME
FROM
CLIENTE_FORNECEDOR
WHERE
CLIENTE_FORNECEDOR.IDCLIFOR = CONTAS_RECEBER.IDCLIFOR
) AS NOME_CLIENTE,
VALTITULO
FROM
CONTAS_RECEBER

Subquery na Clausula FROM


SELECT
CONTAS_RECEBER.IDTITULO,
CLIENTES.IDCLIFOR,
CLIENTES.NOME,
CONTAS_RECEBER.VALTITULO

CISS Software e Servios


16

FROM
CONTAS_RECEBER,
(
SELECT
CLIENTE_FORNECEDOR.IDCLIFOR,
CLIENTE_FORNECEDOR.NOME
FROM
CLIENTE_FORNECEDOR
WHERE
CLIENTE_FORNECEDOR.FLAGINATIVO = 'F'
) AS CLIENTES
WHERE
CONTAS_RECEBER.IDCLIFOR = CLIENTES.IDCLIFOR

Subquery na Clausula WHERE


SELECT
CONTAS_RECEBER.IDTITULO,
CONTAS_RECEBER.IDCLIFOR,
CONTAS_RECEBER.VALTITULO
FROM
CONTAS_RECEBER
WHERE
CONTAS_RECEBER.IDCLIFOR IN
(

CISS Software e Servios


17

SELECT
CLIENTE_FORNECEDOR.IDCLIFOR
FROM
CLIENTE_FORNECEDOR
WHERE
CLIENTE_FORNECEDOR.FLAGINATIVO = 'F'
)

ESPAO RESERVADO PARA EXERCCIOS.

CISS Software e Servios


18