Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

45
Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br

Transcript of Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Page 1: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Conceitos básicos de SQL

Professor:Virgílio Fries Müller

www. vfm.com.br

Page 2: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Criando e Manipulando Tabelas

Page 3: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Tabela▫Unidade básica de armazenamento da

base de dados, formada por colunas e linhas (tuplas)

Page 4: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Criando Tabelas▫Criando a tabela depto.

SQL> CREATE TABLE depto 2 (depto_num NUMBER(2), 3 depto_nom VARCHAR2(14), 4 depto_loc VARCHAR2(13));Table created.Table created.

– Listando a estrutura da tabela criada.

SQL> DESCRIBE depto

Name Null? Type --------------------------- -------- --------- DEPTO_NUM NOT NULL NUMBER(2) DEPTO_NOME VARCHAR2(14) DEPTO_LOC VARCHAR2(13)

Page 5: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

CRIAÇÃO DA TABELA CLIENTE▫CREATE TABLE CLIENTE(

    CODIGO INTEGER,    NOME VARCHAR(10))

Page 6: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

CRIAÇÃO DA TABELA CLIENTE COM CHAVE PRIMÁRIA.

Alter table clienteAdd constraint PK_CLIENTEPrimary key (codigo)

Page 7: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

CRIAÇÃO DA TABELA CLIENTE –GENERATOR PARA UTILIZAÇÃO DE AUTO-INCREMENTO.CREATE SEQUENCE GEN_CLIENTE_ID

Page 8: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

CRIAÇÃO DA TABELA CLIENTE▫CREATE TABLE CLIENTE(

    CODIGO INTEGER,    NOME VARCHAR(10))

Page 9: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

TRIGGER PARA AUTO-INCREMENTO NA TABELA CLIENTE

create trigger CLIENTE_bi for CLIENTEactive before insert position 0asbegin  if (new.codigo is null) then    new.codigo = gen_id(gen_CLIENTE_id,1);end

Page 10: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Select

Page 11: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

O Comando SELECT

▫SELECT identifica as colunas▫FROM identifica as tabelas

SELECT [DISTINCT] {*, column [alias],...}FROM table;

Page 12: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Selecionando linhas SQL> SELECT * 2 FROM depto;

SQL> SELECT depto_num, depto_loc 2 FROM depto;

SQL> SELECT enome, sal, sal+300 2 FROM emp;

SQL> SELECT enome, sal, 12*sal+100 2 FROM emp;

Page 13: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Definindo Alias para Colunas

SQL> SELECT enome AS nome, sal AS salario 2 FROM emp;

NOME SALARIO

------------- ---------

...

SQL> SELECT enome "Nome", 2 sal*12 “Salario Anual" 3 FROM emp;

Nome Salario Anual

------------- -------------

...

Page 14: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Eliminando Linhas Duplicadas▫DISTINCT

SQL> SELECT DISTINCT depto_num 2 FROM emp;

DEPTO_NUM--------- 10 20 30

Page 15: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Restringindo consultas e ordenando resultados

Page 16: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Utilizando a Cláusula WHERESQL> SELECT enome, cargo, depto_num 2 FROM emp 3 WHERE cargo='CAIXA';

ENOME CARGO DEPTO_NUM---------- --------- ---------RONALDO CAIXA 30MANUEL CAIXA 20PAULO CAIXA 20LUCIANO CAIXA 10

Page 17: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Operadores de Comparação

Operador

=

>

>=

<

<=

<>

Significado

Igual a

Maior que

Maior ou igual a

Menor que

Menor ou igual a

Diferente de

Page 18: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Outros OperadoresOperador

BETWEEN

...AND...

IN(lista)

LIKE

IS NULL

Significado

Entre dois valores (inclusive)

Satisfaz uma lista de valores

Satisfaz um padrão de caracteres

É um valor nulo (null)

Page 19: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Operador BETWEEN

ENOME SAL---------- ---------MARIA 1250SERGIO 1500MATHEUS 1250PAULO 1100LUCIANO 1300

SQL> SELECT enome, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500;

limite inferior

limite superior

Page 20: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Operador INSQL> SELECT enum, enome, sal, ger 2 FROM emp 3 WHERE ger IN (7902, 7566, 7788);

ENUM ENOME SAL GER--------- ---------- --------- --------- 7902 JOSE 3000 7566 7369 MANUEL 800 7902 7788 FABIO 3000 7566 7876 PAULO 1100 7788

Page 21: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

SQL> SELECT enome 2 FROM emp 3 WHERE enome LIKE ‘M%';

Operador LIKE▫Utilize o operador LIKE para realizar

pesquisas por padrões (wildcards). % substitui zero ou mais caracteres _ substitui um único caracter

Page 22: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

SQL> SELECT enome, ger 2 FROM emp 3 WHERE ger IS NULL;

ENOME GER---------- ---------CARLOS

Operador IS NULL▫Testando valores nulos (null)

Page 23: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Operadores LógicosOperador

AND

OR

NOT

Significado

Retorna TRUE se a condição de

ambos os componentes for TRUE

Retorna TRUE se a condição de um

dos componentes for TRUE

Retorna TRUE se a condição for

FALSE (vise-versa)

Page 24: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Operador NOTSQL> SELECT enome, cargo 2 FROM emp 3 WHERE cargo NOT IN('CAIXA','GERENTE','ANALISTA');

ENOME CARGO---------- ---------CARLOS PRESIDENTEMARIA VENDEDORCELSO VENDEDORSERGIO VENDEDORMATHEUS VENDEDOR

Page 25: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Cláusula ORDER BYSQL> SELECT enome, cargo, depto_num, dtinicio 2 FROM emp 3 ORDER BY dtinicio DESC;

ENOME CARGO DEPTO_NUM DTINICIO---------- --------- --------- ---------PAULO CAIXA 20 12-JAN-83FABIO ANALISTA 20 09-DEC-82LUCIANO CAIXA 10 23-JAN-82RONALDO CAIXA 30 03-DEC-81JOSE ANALISTA 20 03-DEC-81CARLOS PRESIDENTE 10 17-NOV-81MARIA VENDEDOR 30 28-SEP-81...14 rows selected.

Page 26: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Manipulando dados

Page 27: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

O Comando INSERT▫Adicione linhas a uma tabela

utilizando o comando INSERT.

▫O comando INSERT insere apenas uma linha por vez.

Não esqueça o COMMIT

INSERT INTO table [(column [, column...])]VALUES (value [, value...]);

Page 28: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Inserindo Novas Linhas▫Insira uma nova linha informando os

valores para cada coluna da tabela.▫Liste os valores na mesma ordem das

colunas na tabela. ▫Opcionalmente, liste as colunas na

cláusula do INSERT.

▫Strings e datas devem ser informando entre aspas simples.

SQL> INSERT INTO depto (depto_num, depto_nome, depto_loc) 2 VALUES (50, 'DESENVOLVIMENO', ‘RECIFE');1 row created.1 row created.

Page 29: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

O Comando UPDATE▫Modificando linhas existentes com o

comando UPDATE.

▫Modifique mais de uma linha por vez especificando uma condição na cláusula WHERE.

Não esqueça o COMMIT

UPDATE tableSET column = value [, column = value][WHERE condition];

Page 30: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Atualizando linhas em uma tabela▫Linhas específicas podem ser

modificadas utilizando a cláusula WHERE.

▫Todas as linhas da tabela são modificadas se a cláusula WHERE for omitida.

SQL> UPDATE emp 2 SET depto_num = 20 3 WHERE enum = 7782;1 row updated.1 row updated.

SQL> UPDATE emp 2 SET depto_num = 20;14 rows updated.14 rows updated.

Page 31: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Eliminando Linhas de uma Tabela▫Linhas específicas podem ser eliminadas

utilizando a cláusula WHERE.

▫Todas as linhas da tabela são eliminadas se a cláusula WHERE for omitida.

SQL> DELETE FROM depto 2 WHERE depto_nome = 'DESENVOLVIMENTO'; 1 row deleted.1 row deleted.

SQL> DELETE FROM depto;4 rows deleted.4 rows deleted.

Page 32: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Exibindo dados de múltiplas tabelas

Page 33: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Joins▫Utilize uma junção para consultar dados de mais de uma tabela.

▫Especifique a condição de junção na cláusula WHERE.

▫Informe o nome da tabela junto com o nome da coluna, se tabelas diferentes possuírem colunas com os mesmos nomes.

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

Page 34: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Criando Alias para TabelasSQL> SELECT emp.enum, emp.enome, emp.depto_num,

2 depto.depto_num, depto.depto_loc

3 FROM emp, depto

4 WHERE emp.depto_num = depto.depto_num;

SQL> SELECT e.enum, e.enome, e.depto_num,

2 d.depto_num, d.depto_loc

3 FROM emp e, depto d

4 WHERE e.depto_num = d.depto_num;

Page 35: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Funções de Grupo(Agregação)

Page 36: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

O que são Funções de Grupo?▫Funções de grupo operam em conjuntos de

linhas, produzindo um resultado por grupo.

EMPEMP

““o maior salário o maior salário da tabela EMP”da tabela EMP”

DEPTO_NUM SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250

MAX(SAL)

---------

5000

Page 37: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)-------- --------- --------- --------- 1400 1600 1250 5600

SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE cargo LIKE ‘VEND%';

Funções AVG e SUM

▫Utilize o AVG e SUM apenas para dados numéricos

Page 38: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

SQL> SELECT MIN(dtinicio), MAX(dtinicio) 2 FROM emp;

MIN(DTINI MAX(DTINI--------- ---------17-DEZ-80 12-JAN-83

Funções MIN e MAX▫Utilize MIN e MAX para qualquer tipo de

dado

Page 39: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

COUNT(*)--------- 6

SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE depto_num = 30;

Função COUNT▫COUNT(*) retorna o número de linhas na

tabela

Page 40: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

COUNT(COMIS)------------ 4

SQL> SELECT COUNT(comis) 2 FROM emp 3 WHERE depto_num = 30;

Função COUNT▫COUNT(coluna) retorna o número de linhas

não nulas da tabela

Page 41: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Criando Grupos de Dados

EMPEMP

““média salarial média salarial por por

departamento”departamento”

2916.66672916.6667

21752175

1566.66671566.6667

DEPTO_NUM SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250

DEPTO_NUM

AVG(SAL)

---------

---------

10

2916.6667

20

2175

30

1566.6667

Page 42: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

Criando Grupos de Dados: A Cláusula GROUP BY

▫Divida as linhas de uma tabela em pequenos grupos usando a cláusula GROUP BY.

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

Page 43: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY depto_num;

A Cláusula GROUP BY▫Colunas utilizadas em funções de grupo

não precisam estar listadas no GROUP BY.

AVG(SAL)--------- 2916.6667 21751566.6667

Page 44: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

SQL> SELECT depto_num, cargo, sum(sal) 2 FROM emp 3 GROUP BY depto_num, cargo;

Utilizando GROUP BY em Múltiplas Colunas

DEPTO_NUM CARGO SUM(SAL)--------- --------- --------- 10 CAIXA 1300 10 GERENTE 2450 10 PRESIDENTE 5000 20 ANALISTA 6000 20 CAIXA 1900...9 rows selected.

Page 45: Conceitos básicos de SQL Professor: Virgílio Fries Müller www. vfm.com.br.

FIM!

POR FAVORESTUDE-ME EM CASA!