18
SQL e Infomaker universidadeciss

Apostila SQL e Infomaker.pdf

Embed Size (px)

Citation preview

Page 1: Apostila SQL e Infomaker.pdf

SQL e Infomaker

universidadeciss

Page 2: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 2

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

1. Introdução ........................................................................................................................ 4 2. A Linguagem SQL ............................................................................................................ 4

Linguagem Interativa de Consulta: ...................................................................................... 4 Acesso ao Banco de Dados por Linguagens de Programação: .......................................... 4 Administração de Banco de Dados: .................................................................................... 4

3. Subdivisões da Linguagem SQL ...................................................................................... 5 Linguagem de definição de dados (DDL) ............................................................................ 5 Linguagem de manipulação de dados (DML) ...................................................................... 5 Conhecendo os Tipos de Dados: ........................................................................................ 5 Operadores Lógicos ............................................................................................................ 6 Operadores Aritméticos ....................................................................................................... 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 Funções de Agregadas ........................................................................ 10 COUNT .............................................................................................................................. 11 SUM ................................................................................................................................... 11 AVG ................................................................................................................................... 11 MIN .................................................................................................................................... 11 MAX ................................................................................................................................... 11

7. Conhecendo as Expressões CASE: ............................................................................... 12

Page 3: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 3

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

Page 4: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 4

1. Introdução

A primeira versão da linguagem SQL, chamada SEQUEL (Structured Query English

Language), surgiu em 1974 nos laboratórios da IBM (Califórnia). Entre 1976 e

1977 ela foi revisada e ampliada, tendo então o seu nome alterado para SQL. Devido

ao sucesso da nova forma de consulta e manipulação de dados dentro de um

ambiente de banco de dados, sua utilização tornou-se cada vez maior, atualmente a

maioria dos Sistemas Gerenciadores de Banco de Dados (SGBD) utilizam o SQL

como a linguagem padrão 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 padrão para a manipulação de dados em ambiente relacional.

2. A Linguagem SQL

A linguagem SQL pode ter vários focos de utilização, como por exemplo:

Linguagem Interativa de Consulta: Através de comandos SQL os usuários podem montar consultas para extração de dados para diversos fins, sem a necessidade da criação de um programa para tal necessidade, podendo utilizar ferramentas front-end para a construção de relatórios e/ou análises de BI (Business Intelligence).

Acesso ao Banco de Dados por Linguagens de Programação: Comandos SQL embutidos em programas de aplicação (escritos em C, C++, Java, Visual Basic e etc) acessam os dados armazenados em uma base de dados relacional.

Administração de Banco de Dados: O responsável pela administração do banco de dados (DBA) pode utilizar comandos SQL para realizar tarefas relacionadas com a manutenção dos schemas do banco de dados.

Page 5: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 5

3. Subdivisões da Linguagem SQL

Linguagem de definição de dados (DDL) Permite ao usuário a definição da estrutura e organização dos dados armazenados, e das relações existentes entre eles.

Ex: CREATE, ALTER, DROP.

Linguagem de manipulação de dados (DML) Permite a um usuário, ou a um programa de aplicação, a execução de operações de inclusão, remoção, seleção ou atualização 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 estão 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, descrições.

LONGVARCHAR Textos muitos grandes.

NUMERIC Números decimais.

DECIMAL Números decimais.

BOOLEAN Verdadeiro ou Falso (TRUE, FALSE).

INTEGER Números inteiros (até nove casas).

BIGINT Números 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

Page 6: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 6

Operadores Lógicos

Muitas vezes, apenas uma condição não é o suficiente para determinarmos o critério de busca. Sempre que isso ocorrer, podemos utilizar operadores lógicos, veja na tabela a seguir os operadores lógicos:

Operador Significado Exemplo

AND E Condição 1 AND condição 2

OR Ou Condição 1 OR condição 2

NOT Não/Negação NOT condição

Operadores Aritméticos

Operador Significado Exemplo

- Subtração (Coluna1 – Coluna2)

+ Adição (Coluna1 + Coluna2)

/ Divisão (Coluna1 / Coluna2)

* Multiplicação (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> (

<Descrição_Coluna> <Tipo_De_Dado> <Aceita Nulos> <Chave Primária>,

<Descrição_Coluna> < Tipo_De_Dado >,

<Descrição_Coluna> < Tipo_De_Dado > );

Page 7: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 7

Definição

<Nome_Tabela> Nome da tabela a ser criada.

<Descrição_Coluna> Descrição/Nome da coluna que está sendo criada.

<Tipo_De_Dado> Define o tipo dos dados que serão armazenados na coluna (Números Inteiros, Números Decimais, Textos, Datas e etc).

<Aceita Nulos> Define se a coluna em questão aceita armazenar valores nulos.

<Chave Primária> Define se a coluna é a chave primária da tabela que além de não poder receber valores nulos, deve ser uma coluna UNIQUE (sem repetições; isto é, chave primária).

Criando a tabela FUNCIONARIO:

CREATE TABLE FUNCIONARIO

(

IDFUNCIONARIO INTEGER NOT NULL PRIMARY KEY,

NOME VARCHAR(30),

DTNASCIMENTO DATE,

VALSALARIO DECIMAL(15,6),

FLAGINATIVO CHAR(1)

);

ALTER TABLE O comando ALTER TABLE é utilizado para alterar a estrutura de uma tabela. A sua forma geral é:

ALTER TABLE <nome_tabela> <alteração>;

Definição

<nome_tabela> dever ser substituído pelo nome da tabela a ser alterada.

<alteração> deve ser substituído pela sintaxe da alteração que será feita na tabela.

Alterando a tabela FUNCIONARIO

ALTER TABLE FUNCIONARIO ADD COLUMN SEXO CHAR(1);

Page 8: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 8

DROP TABLE O comando DROP TABLE é utilizado para deletar uma tabela. A sua forma geral é:

DROP TABLE <nome_tabela>;

Definição

<nome_tabela> dever ser substituído pelo nome da tabela a ser excluída.

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>);

Definição

<nome_tabela> dever ser substituído pelo nome da tabela a ser alterada.

<nome_coluna> deve ser substituído pelo nome da(s) coluna(s) que terão valor.

<valor> deve ser substituído pelo valor inserido para a coluna correspondente.

Inserindo dados na tabela FUNCIONARIO:

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

Page 9: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 9

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>;

Definição

<nome_tabela> dever ser substituído pelo nome da tabela a ser alterada.

<nome_coluna> deve ser substituído pelo nome da(s) coluna(s) que terão valor atualizado.

<valor> deve ser substituído pelo valor atualizado para a coluna correspondente.

<condicao> deve ser substituído pela condição 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>;

Definição

<nome_tabela> dever ser substituído pelo nome da tabela a ser alterada.

<condicao> deve ser substituído pela condição que o comando vai respeitar.

Deletando dados na tabela FUNCIONARIO:

DELETE FROM FUNCIONARIO WHERE IDFUNCIONARIO =1;

Page 10: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 10

SELECT O comando SELECT é utilizado para selecionar os dados de uma tabela. A sua forma geral é:

SELECT <nome_coluna> FROM <nome_tabela> WHERE <condicao>;

Definição

<nome_coluna> dever ser substituído pelo nome da coluna a ser selecionada.

<nome_tabela> deve ser substituído pelo nome da tabela a qual serão selecionados os dados.

<condicao> deve ser substituído pela condição que o comando vai respeitar.

Selecionando dados na tabela FUNCIONARIO:

SELECT IDFUNCIONARIO, NOME FROM FUNCIONARIO WHERE IDFUNCIONARIO =1;

6. Conhecendo as Funções de Agregadas

Existem diversas funções que são implementadas pelo padrão SQL. Essas funções auxiliam a computar uma variedade de medidas baseadas em valores das colunas do banco de dados. As principais funções de agregação são:

Função Ação

COUNT Retorna o número de linhas afetadas pelo comando.

SUM Retorna o somatório do valor das colunas especificadas.

AVG Retorna a média aritmética 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.

Page 11: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 11

COUNT

Diferentemente das outras funções, o COUNT retorna o número de linhas que atende a uma determinada condição. Podemos utilizá-lo com um asterisco entre parênteses, para indicar que queremos saber a quantidade total de linhas, independentemente de haver linhas com colunas nulas ou não. 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 preço de um determinado produto, utilizamos o comando:

SELECT SUM(PRECO) FROM PRODUTO

AVG

Extrai a média aritmética de um determinado grupo de linhas. Para saber o preço médio 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 alfanuméricas. Para saber o preço 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 alfanuméricas. Para saber qual é o produto mais caro da loja, execute o seguinte comando:

SELECT MAX(PRECO) FROM PRODUTO;

Page 12: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 12

7. Conhecendo as Expressões CASE:

O padrão SQL prevê a possibilidade de utilizar a expressão CASE, presente em diversas linguagens de programação. Utilizando essa cláusula é possível criar complexas estruturas de controle tanto nas diversas linguagens de programação como nos comandos SQL. Ao ser utilizada a cláusula CASE em comandos SQL é possível economizar diversas linhas de código, pois não é necessário criar blocos de programação para testar condições.

A expressão CASE será testada em tempo de execução do comando SELECT ou UPDATE. Como o CASE faz parte de outro comando, será possível colocá-lo em qualquer situação em que um valor deva ser testado.

É possível utilizar o comando SELECT, UPDATE, DELETE prevendo diversas condições para extração 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 necessário um relacionamento entre elas para que os dados apresentados sejam íntegros, esse relacionamento também chamado JOIN garante essa integridade. Abaixo os principais tipo de JOIN’s.

Page 13: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 13

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 estão na tabela A (mesmo que não estejam na tabela B) e os registros da tabela B que são comuns na tabela A.

Page 14: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 14

Para entender melhor, executaremos o seguinte código:

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 estão na tabela B (mesmo que não estejam na tabela A) e os registros da tabela A que são comuns na tabela B.

Figura - Usando Right Join

Para entender melhor, executaremos o seguinte código:

SELECT a.Nome, b.Nome

FROM TabelaA as A

RIGHT JOIN TabelaB as B

on a.Nome = b.Nome

Page 15: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 15

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 execução. Para utilizar o UNION ou UNION ALL, o número e a ordem das colunas precisam ser idênticos em todas as consultas e os tipos de dados precisam ser compatíveis.

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 execução das duas consultas e então elimina as linhas duplicadas. Este processo é executado mesmo que não haja registros duplicados.

UNION ALL

O operador UNION ALL tem a mesma funcionalidade do UNION, porém, não 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

Utilização

Tipicamente utilizamos subqueries na filtragem de pesquisas (Cláusula WHERE) nas cláusulas IN() e EXISTS(), mas subqueries podem aparecer também na cláusula FROM ou como substituto de colunas na Cláusula SELECT.

Page 16: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 16

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

Page 17: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 17

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

(

Page 18: Apostila SQL e Infomaker.pdf

CISS Software e Serviços 18

SELECT

CLIENTE_FORNECEDOR.IDCLIFOR

FROM

CLIENTE_FORNECEDOR

WHERE

CLIENTE_FORNECEDOR.FLAGINATIVO = 'F'

)

ESPAÇO RESERVADO PARA EXERCÍCIOS.