Laboratório de Banco de Dados II Aula 04 Prof. Érick de Souza Carvalho 1
SQL (Structured Query Language ) Prof. Érick de Souza Carvalho 2
SQL Structured Query Language - Introdução É uma Linguagem para BD Relacional e Objeto-Relacional Padrão aceito pela ANSI e pela ISO Os Comandos SQL são os mesmos em qualquer SGBD Cada SGBD pode implementar funções particulares (estender SQL padrão) É uma linguagem declarativa (Você diz o que quer sem especificar como obter a resposta) Comandos em Várias Linhas (ou em uma única linha) Comandos Não Podem Ser Abreviados Comandos Terminados com ; Ponto e Vírgula (No Oracle e em vários SGBDs, mas não em todos ) UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 3
Tipos de Comandos SQL DRL Data Retrieval Language Linguagem de recuperação(consulta) de dados. Query. * Alguns autores não usam o termo DRL e chamam apenas de SELECT SELECT DML Data Manipulation Language Linguagem de manipulação de dados. Altera só os dados s/ alterar estrutura. INSERT, UPDATE, DELETE COMMIT, ROLLBACK DDL Data Definition Language Linguagem de definição de dados. Altera a estrutura e seus dados CREATE, ALTER, DROP, TRUNCATE DCL Data Control Language Linguagem de controle de acesso aos dados. Controla o acesso aos dados. Adiciona ou remove privilégios GRANT, REVOKE UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 4
SELECT x ÁLGEBRA RELACIONAL Seleção ou Restrição Projeção Tabela1 Tabela1 Junção Tabela1 Tabela2 UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 5
Estrutura (Cláusulas) do comando SELECT Todo comando select vai sempre seguir esta estrutura Cada parte é chamada de cláusula Obrigatório Opcional SELECT FROM WHERE GROUP BY HAVING ORDER BY Especifica as colunas que serão projetadas Especifica as tabelas que desejamos consultar Especifica as condições (filtros) que desejamos fazer Quais linhas desejamos selecionar Especifica por quais colunas que desejamos agrupar Usamos para calcular: médias, somas, contagens etc... (conhecidas como funções de grupo) Especifica as condições (filtros) sobre os dados agrupados Só é usado em conjunto com o GROUP BY. Normalmente as condições são implementadas sobre as funções de grupo. Especifica por quais colunas desejamos ordenar o resultado UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 6
SELECT Básico SELECT * Coluna1 [Apelido1], Coluna2 [Apelido2]... FROM [schema.]tabela; SELECT * FROM emp; SELECT empno, ename, sal FROM emp; SELECT empno matricula, ename nome, sal salario FROM emp; [ ] Opcional * Todos os Campos From - View ou Tabela UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 7
SELECT Cabeçalho e Alinhamento (No Oracle) Alinhamento Default dos Dados e do Cabeçalho: Esquerda: Dados de Character e Data Direita: Dados Numérico Cabeçalho em Letras Maiúsculas Dados conforme cadastrado SELECT empno, ename, sal FROM emp; EMPNO ENAME SAL ---------- ---------- ---------- 7900 JAMES 950 7902 FORD 3000 7934 MILLER 1300 1 Miller UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 8
Operadores Aritméticos Operador Descrição + Adição - Subtração * Multiplicação / Divisão Criar Expressões com Dados Numéricos e Data Qualquer Operação com NULL Retorna NULL SELECT ename, sal, sal/2, hiredate, hiredate+1 Data_Nova FROM emp; ENAME SAL SAL/2 HIREDATE DATA_NOVA ---------- ---------- ---------- --------- --------- JAMES 950 475 03-DEC-81 04-DEC-81 FORD 3000 1500 03-DEC-81 04-DEC-81 MILLER 1300 650 23-JAN-82 24-JAN-82 Miller UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 9
Operador de Concatenação Operador Descrição Concatenação São Duas Barras Verticais ou Dois Pipes Criar Expressões com Dados Character, Numéricos, Data, Strings etc... O Resultado é sempre Character SELECT empno, ename, empno ename FROM emp; EMPNO ENAME EMPNO ENAME ---------- ---------- ------------- 7900 JAMES 7900JAMES 7902 FORD 7902FORD SELECT O Salario do ename é sal FROM emp; 'OSALARIODO' ENAME 'É' SAL ----------------------------- O salario do JAMES é 950 O salario do MILLER é 1300 O salario do Miller é UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 10
Operador de Concatenação para Geração de Scripts SELECT 'SELECT COUNT(*) FROM ' TABLE_NAME ';' FROM USER_TABLES; 'SELECTCOUNT(*)FROM' TABLE_NAME ';' -------------------------------------- SELECT COUNT(*) FROM BONUS; SELECT COUNT(*) FROM DEPT; SELECT COUNT(*) FROM DEPT2; SELECT COUNT(*) FROM DEPT3; SELECT COUNT(*) FROM DEPT4; SELECT COUNT(*) FROM DEPT5; SELECT COUNT(*) FROM EMP; O resultado do comando é um conjunto de comandos, ou seja, um script gerado dinamicamente. UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 11
Eliminando Linhas Duplicadas no SELECT DISTINCT Retorna Linhas Distintas e Ordenadas SELECT deptno FROM emp; DEPTNO ---------- 20 30 30 30 10 20 10 30 20 30 20 10 SELECT DISTINCT deptno FROM emp; DEPTNO ---------- 10 20 30 4 rows selected. 13 rows selected. UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 12
Limitando Linhas Selecionadas no SELECT WHERE Especifica Condições Separadas por AND ou OR SELECT ename, deptno FROM emp WHERE deptno = 10; ENAME DEPTNO ---------- ---------- CLARK 10 KING 10 MILLER 10 3 rows selected. SELECT ename, deptno FROM emp WHERE deptno = 10 AND ename = MILLER ; ENAME DEPTNO ---------- ---------- MILLER 10 1 row selected. UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 13
Operadores de Comparação Operador Descrição =, <>, >, >=, <, <= Operadores Básicos BETWEEN valor1 AND valor2 Range de Valores IN (valor1, valor2, valor3...) LIKE IS NULL IS NOT NULL Lista de Valores Procura parte de uma string usando % e _ Um valor é nulo (NULL) Um valor não é nulo UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 14
Operadores de Comparação - Exemplos SELECT ename, deptno FROM emp WHERE ename = MILLER ; SELECT ename, deptno FROM emp WHERE ename <> MILLER ; SELECT ename, deptno FROM emp WHERE deptno >= 30; SELECT ename, deptno, sal FROM emp WHERE sal BETWEEN 1000 AND 2000; SELECT ename, job, sal FROM emp WHERE job IN ('CLERK', 'SALESMAN'); SELECT ename FROM emp WHERE ename LIKE '%AR% ; SELECT ename FROM emp WHERE ename LIKE '_L% ; SELECT ename, deptno FROM emp WHERE deptno IS NULL; SELECT ename, deptno FROM emp WHERE deptno IS NOT NULL; UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 15
Operadores Lógicos Operador AND OR NOT Descrição E Retorna TRUE Se Todas as Condições forem TRUE Ou Retorna TRUE Se Pelo menos uma Condição for TRUE Negação Retorna TRUE se a condição for FALSE UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 16
Operadores de Lógicos - Exemplos SELECT ename, deptno FROM emp WHERE ename = MILLER AND deptno >= 30; SELECT ename, deptno, sal FROM emp WHERE sal NOT BETWEEN 1000 AND 2000; SELECT ename, job, sal FROM emp WHERE job NOT IN ('CLERK', 'SALESMAN'); SELECT ename FROM emp WHERE ename LIKE %AR% OR ename LIKE '_L% ; UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 17
Classificando as Linhas Selecionadas no SELECT ORDER BY Especifica a(s) coluna(s) que Classifica(m) (Ordena(m)) o Resultado ASC Ordem Crescente (Default) DESC Ordem Decrescente A Ordenação é feita inicialmente na Memória PGA (SORT_AREA_SIZE) Se não for suficiente usa a Tablespace Temporária Se ainda não for Suficiente Retorna Erro SELECT [DISTINCT] * Coluna1 [Apelido1], Coluna2 [Apelido2]... FROM [schema.]tabela [WHERE condições] ORDER BY Coluna1 [ASC DESC], Coluna2 [ASC DESC]...; UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 18
Classificando Dados - Exemplos SELECT ename, hiredate FROM emp ORDER BY hiredate; SELECT ename, hiredate FROM emp ORDER BY hiredate DESC; SELECT ename, job, sal, comm FROM emp WHERE job NOT IN ('CLERK', 'SALESMAN') ORDER BY sal, comm, ename; UniFOA Centro Universitário de Volta Redonda Prof. Érick de S. Carvalho LabBD2_4P_Aula04A 19