Banco de Dados - Senado



Documentos relacionados
Structured Query Language (SQL) Aula Prática

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Comandos de Manipulação

Linguagem de Consulta - SQL

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Linguagem SQL. Comandos Básicos

Linguagem SQL Sub-linguagem DDL

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Linguagem de Consulta Estruturada SQL- DML

SQL Structured Query Language

EXEMPLOS DE COMANDOS NO SQL SERVER

SQL - Criação de Tabelas

PHP INTEGRAÇÃO COM MYSQL PARTE 1

O que são Bancos de Dados?

Linguagem de Consulta Estruturada (SQL)

BANCO DE DADOS Parte 4

Structured Query Language (SQL)

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

SQL. Autor: Renata Viegas

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

A linguagem SQL

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Programação SQL. Introdução

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

ROTEIRO. A Linguagem SQL (I parte) CEFET.PHB - PI Prof. Jefferson Silva. As partes da linguagem SQL. A Linguagem de Definição de Dados (SQL-DDL)

Comandos DDL. id_modulo = id_m odulo

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

Banco de Dados. Prof. Antonio

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

SQL. Prof. Márcio Bueno.

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

Banco de Dados. Maurício Edgar Stivanello

SQL. Hélder Antero Amaral Nunes

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

SQL (Structured Query Language)

SQL (Structured Query Language)

Exercícios de Lógica Exercícios de Fixação 08

SQL DDL. Frederico D. Bortoloti

SQL (Structured Query Language)

Formação em Banco de Dados

Introdução à linguagem SQL

SQL (Structured Query Language)

SQL (Linguagem de Consulta Estruturada)

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

EXERCÍCIOS PRÁTICOS. Banco de Dados

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

Linguagem SQL (Parte I)

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

SQL (Tópicos) Structured Query Language

AULA 2 INTERAÇÃO COM O BANCO DE DADOS


Introdução ao SQL. Aécio Costa

Fundamentos do Sistema Gerenciador de Banco de Dados

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Linguagem SQL (Parte II)

Linguagem SQL Parte I

SQL DML. Frederico D. Bortoloti

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

Linguagem de Consulta - SQL

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

SQL: Definição de tabelas, Modificações à Base de Dados

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

1. Domínio dos Atributos

Bases de Dados 2005/2006. Aula 5

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Transcrição:

Banco de Dados - Senado Structured Query Language (SQL) Material preparado :Prof. Marcio Vitorino

Ambiente Simplificado de um SGBD 2

Características dos SGBDs Natureza auto-contida de um sistema de banco de dados: q metadados armazenados num catálogo ou dicionário de dados. Independência entre programas e dados: q estrutura dos arquivos de dados armazenada no catálogo separadamente dos programas de acesso. Abstração de dados: q representação conceitual dos dados através de modelos de dados. Suporte de múltiplas visões de dados: q diferentes perspectivas ou visões de usuários. Suporte a transações: q compartilhamento de dados e processamento multiusuário. 3

Esquemas, Instâncias e Estado do BD Esquema: descrição do banco de dados. É definido durante o projeto de banco de dados e não se espera que seja alterado frequentemente. Estado ou Instância: composto pelos dados do banco de dados em um determinado momento. 4

Arquitetura de Três-Esquemas 5

Arquitetura de Três-Esquemas Tem por objetivo separar o usuário da aplicação do banco de dados físico. É organizada em três níveis: q Nível Interno: descreve a estrutura de armazenamento físico do banco de dados. q Nível Conceitual: descreve a estrutura de todo o banco de dados para a comunidade de usuários. q Nível Externo ou Visão: cada esquema externo descreve a parte do banco de dados que um dado grupo de usuários tem interesse e oculta o restante do banco de dados desse grupo. A maioria dos SGBDs não separa completamente os níveis, mas suporta essa arquitetura de alguma forma. 6

Independência de Dados Consiste da capacidade de mudar o esquema em um nível do sistema de banco de dados sem que ocorram alterações do esquema no próximo nível mais alto. Independência lógica de dados: é a capacidade de alterar o esquema conceitual sem mudar o esquema externo ou os programas. Independência física de dados: é a capacidade de alterar o esquema interno sem mudar o esquema conceitual. 7

Linguagens de SGBD Durante o desenvolvimento do sistema R, pesquisadores da IBM desenvolveram a linguagem SEQUEL, primeira linguagem de acesso para Sistemas Gerenciadores de Banco de Dados Relacionais. ISO e ANSI lançou em 1986 a primeira versão do padrão da linguagem SQL, o SQL-86. A linguagem passou por aperfeiçoamentos em 1989 e, em 1992, foi lançada a SQL-92 ou SQL2. Um novo padrão, chamado de SQL-99 ou SQL3 foi lançado no ano de 2000. Foi o primeiro padrão a estender a linguagem para permitir a utilização de tipos de dados complexos e a incorporar características da orientação a objetos. Após uma grande revisão do padrão SQL3 foi lançada a SQL:2003. Nesta verão foi adicionada uma nova parte ligada ao tratamento de XML. 8

Linguagens de SGBD Linguagem de Definição de Dados (DDL): q usada para especificar o esquema conceitual. Linguagem de Definição de Armazenamento (SDL): q usada para especificar o esquema interno, mas na maioria dos SGBDs a DDL é usada para definir este esquema. Linguagem de Definição de Visões (VDL): q usada para especificar as visões dos usuários e os seus mapeamentos para o esquema conceitual, mas na maioria dos SGBDs a DDL é usada para definir ambos os esquemas, o conceitual e o externo. Linguagem de Manipulação de Dados (DML): q usada para manipular os dados em um banco de dados. As manipulações típicas são a recuperação, inserção, remoção e modificação dos dados. 9

Tipos de Dados (4 GB) (4 GB) 10

Modelo Utilizado 11

Modelo Utilizado Pessoa (CPF, Nome, Sexo) Piloto (CPF, Cart_Trab) CPF Referencia Pessoa Passageiro(CPF, Dieta) CPF Referencia Pessoa Voo(Numero, Data, P_CPF) CPF Referencia Piloto Reserva(V_Numero, P_CPF) V_Numero Referencia Voo P_CPF Referencia Passageiro Telefone(Numero, P_CPF) CPF Referencia Pessoa 12

Linguagem de Definição de Dados (DDL) Criação de Tabelas: CREATE TABLE NOME_TABELA( COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL] ) 13

Linguagem de Definição de Dados (DDL) Na criação de tabelas, é possível especificar vários tipos de restrições: q Chave Primária: PRIMARY KEY ; q Chave Estrangeira: FOREIGN KEY; q Chave Alternativa (ou alternada): UNIQUE; q Restrição de Domínio: CHECK. Pode-se atribuir nomes às restrições de integridade: q CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO. 14

Linguagem de Definição de Dados (DDL) CREATE TABLE Pessoa(CPF VARCHAR(11) NOT NULL, Nome VARCHAR(30) NOT NULL UNIQUE, Sexo VARCHAR(1) NOT NULL, PRIMARY KEY (CPF)); CREATE TABLE Piloto(CPF VARCHAR(11) NOT NULL, Cart_Trab VARCHAR(13) NOT NULL UNIQUE, PRIMARY KEY (CPF), FOREIGN KEY (CPF) REFERENCES Pessoa (CPF)); 15

Linguagem de Definição de Dados (DDL) CREATE TABLE Passageiro(CPF VARCHAR(11) NOT NULL CONSTRAINT PK_PASSAGEIRO PRIMARY KEY CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF), Dieta VARCHAR(1) CHECK (Dieta IN( S, N ))); CREATE TABLE Voo(Numero Numeric NOT NULL CONSTRAINT PK_VOO PRIMARY KEY, Data Date NOT NULL, TIPO VARCHAR2(15) DEFAULT NACIONAL, P_CPF VARCHAR(11) NOT NULL CONSTRAINT FK_PILOTO DEFERRABLE INITIALY DEFERRED); REFERENCES Piloto (CPF) 16

Linguagem de Definição de Dados (DDL) Deleção de item referenciado:... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE RESTRICT); -- impede a exclusão (default)... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE SET NULL); -- transforma o valor em nulo... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE CASCADE); -- exclui a linha da tabela 17

Linguagem de Definição de Dados (DDL) Criação de uma tabela com linhas de outra: CREATE TABLE Pessoa_Nova AS SELECT CPF, Nome, Sexo FROM Pessoa; 18

Linguagem de Definição de Dados (DDL) CREATE VIEW <nome-de-visão> [ (lista-de-colunas) ] AS <comando-de-seleção> [WITH CHECK OPTION] CREATE VIEW Empregados_Sede AS SELECT (Nome, Endereco, Sexo, Data-nasc) FROM EMPREGADO q Atualização (INSERT, UPDATE, DELETE) de visão: q A query não pode conter join, ou seja, deve ser baseada apenas em uma tabela. q A query deve conter todas as colunas nott null da tabela referenciada. q A query não pode conter operadores de conjunto: UNION, EXCEPT e INTERSECT. q A query não pode conter o operador DISTINCT. q A query não pode conter funções de agregação. q A query não pode conter GROUP BY. 19

Linguagem de Definição de Dados (DDL) Alteração de Tabelas: q Incluir novas colunas em uma tabela; q Excluir colunas existentes em uma tabela; q Adicionar a definição de uma restrição em uma tabela; q Excluir a definição de uma restrição existente em uma tabela; q Modificar uma coluna. 20

Linguagem de Definição de Dados (DDL) CREATE TABLE Reserva(V_Numero Numeric NOT NULL, P_CPF VARCHAR(11) NOT NULL); CREATE TABLE Telefone(Numero VARCHAR(15) NOT NULL, P_CPF VARCHAR(11) NOT NULL, PRIMARY KEY (Numero, P_CPF), FOREIGN KEY (P_CPF) REFERENCES Pessoa(CPF)); 21

Linguagem de Definição de Dados (DDL) ALTER TABLE Telefone ADD COLUMN TIPO VARCHAR2(5) DEFAULT FIXO NOT NULL; ALTER TABLE Telefone DROP COLUMN Tipo; ALTER TABLE TELEFONE ADD CONSTRAINT TIPO_TELEFONE CHECK (TIPO IN( Fixo, Movel )); ALTER TABLE TELEFONE DROP CONSTRAINT TIPO_TELEFONE; ALTER TABLE TELEFONE MODIFY (TIPO VARCHAR2(5)); -- para diminuir tamanho a coluna precisa estar vazia. 22

Linguagem de Definição de Dados (DDL) ALTER TABLE Reserva ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero) REFERENCES Voo (Numero); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF) REFERENCES Passageiro (CPF); ALTER TABLE Reserva ENABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; ALTER TABLE Reserva DISABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; 23

Linguagem de Definição de Dados (DDL) Renomear Tabela: q Não é um comando SQL:2003. RENAME Pessoa TO Pessoa_Nova; -- Oracle RENAME TABLE Pessoa TO Pessoa_Nova; Deletar Tabela (estrutura): DROP TABLE Pessoa; 24

Linguagem de Manipulação de Dados (DML) Inclusão de dados: INSERT INTO NOME_TABELA (COL1, COL2,...,COLN) VALUES (VAL1, VAL2,...,VALN); Exemplo: Insert Into PESSOA (CPF, NOME, SEXO) values ('11122233344','Paulo Abreu', 'M'); Insert Into PESSOA (CPF, NOME, SEXO) Select CPF, NOME, SEXO From Aluno 25

Consulta Simples SELECT COL1, COL2,...,COLN FROM NOME_TABELA WHERE (expressão lógica) GROUP BY (atributos de agrupamento) HAVING (condição de agrupamento) ORDER BY (lista de atributos) Where: filtra antes do agrupamento. Having: filtra depois do agrupamento. 26

Linguagem de Manipulação de Dados (DML) Exemplo: Select * From PESSOA; Select CPF, NOME, SEXO, IDADE From PESSOA Where sexo = M or sexo = F ; ou Where sexo in ( M, F ); Select CPF, NOME, SEXO, IDADE From PESSOA Where IDADE > ANY (10,20,30); ou Where IDADE > ALL (10,20,30); 27

Linguagem de Manipulação de Dados (DML)

Linguagem de Manipulação de Dados (DML) Exemplo: SELECT * FROM DEPT WHERE DNAME LIKE '/_%' ESCAPE '/ Select CPF, NOME, SEXO From PESSOA Where nome like P% ; ( [CK]% ) ( [C-K]% intervalo) (not like) Select CPF, NOME, SEXO From PESSOA Where idade is null; (not null) Select CPF, NOME, SEXO From PESSOA Where idade >= 10 and idade <= 20; (between 10 and 20) 29

Linguagem de Manipulação de Dados (DML) Exemplo com Alias (apelidos): Select CPF as Meu_CPF From PESSOA Select CPF, NOME, SEXO From PESSOA as P Where P.idade is null; Select NOME, IDADE + 5 AS NOVA_IDADE From PESSOA; 30

Linguagem de Manipulação de Dados (DML) Atualização: UPDATE NOME_TABELA SET COL1=VAL1, COL2=VAL2,...,COLN=VALN WHERE (expressão lógica) Exemplo: UPDATE PESSOA SET idade = 30 WHERE nome = Paulo ; 31

Linguagem de Manipulação de Dados (DML) Deleção: DELETE FROM NOME_TABELA WHERE (expressão lógica) Exemplo: DELETE FROM PESSOA WHERE nome = Paulo ; TRUNCATE TABLE NOME_TABELA (sem rollback): q O comando TRUNCATE remove rapidamente todas as linhas da tabela. Tem o mesmo efeito do comando DELETE sem a cláusula WHERE, mas como não varre a tabela é mais rápido. É mais vantajoso para tabelas grandes. q O comando TRUNCATE não pode ser utilizado dentro de um bloco de transação (delimitado por BEGIN/COMMIT), porque não existe a possibilidade de desfazê-lo. 32

Linguagem de Manipulação de Dados (DML) Funções Agregadas: SELECT COUNT(*) FROM PESSOA; SELECT COUNT(NOME) FROM PESSOA; SELECT SUM(idade) FROM PESSOA; SELECT AVG(idade) FROM PESSOA; SELECT MAX(idade) FROM PESSOA; SELECT MIN(idade) FROM PESSOA; 33

Linguagem de Manipulação de Dados (DML) Tabela Livro: (Codigo, Titulo, Preco, Lancamento, Assunto, Editora) Assunto References Assunto(Sigla) Editora References Editora(Codigo) Tabela Assunto: (Sigla, Descricao) Tabela Editora: Editora(Codigo, Nome) 34

Exemplo (DML) Editora Assunto Livro 35

Funções Agregadas Funções Agregadas: SELECT ASSUNTO, AVG(PRECO) FROM LIVRO GROUP BY ASSUNTO; q Preço médio dos livros por assunto SELECT ASSUNTO, COUNT(*) FROM LIVRO GROUP BY ASSUNTO; q Quantidade de livros por assunto 36

Funções Agregadas SELECT ASSUNTO, MAX(PRECO) FROM LIVRO GROUP BY ASSUNTO; q Preço do livro mais caro de cada assunto. SELECT ASSUNTO FROM LIVRO GROUP BY ASSUNTO HAVING AVG(PRECO) > 50; q Assuntos cuja média de preço dos livros seja maior que R$ 50,00. 37

Funções Agregadas SELECT ASSUNTO, COUNT(*) FROM LIVRO GROUP BY ASSUNTO HAVING COUNT(*) > 2; q Assuntos que possuem pelo menos três livros. 38

Eliminação de Repetições SELECT DISTINCT ASSUNTO AS ASSUNTO FROM LIVRO; q Assuntos distintos. SELECT COUNT (ASSUNTO) AS Qtd_ASSUNTO FROM LIVRO; q Quantidade de ocorrência de assuntos. SELECT COUNT (DISTINCT ASSUNTO) AS Dif_ASSUNTO FROM LIVRO; q Quantidade de assuntos distintos. 39

Linguagem de Manipulação de Dados (DML) Ordenação de Resultados: SELECT ASSUNTO, TITULO, PRECO FROM LIVRO ORDER BY ASSUNTO ASC, PRECO DESC SELECT ASSUNTO, TITULO, PRECO FROM LIVRO ORDER BY ASSUNTO, PRECO DESC; SELECT ASSUNTO, TITULO, PRECO FROM LIVRO ORDER BY 2, PRECO DESC; 40

Linguagem de Manipulação de Dados (DML) Selecionar as 4 pessoas mais jovens e apresentar o resultado ordenado pelo campo COD. SELECT * FROM (SELECT * FROM PESSOA ORDER BY IDADE) WHERE ROWNUM < 5 ORDER BY COD Inline View 41

Funções Para Cadeias de Caracteres - LOWER(col) = apresenta o resultado em minúsculas. - UPPER (col)= apresenta o resultado em maiúsculas. - INITCAP (col)= apresenta o resultado com a primeira letra maiúscula de cada palavra. - REPLACE (col, cadeia1, cadeia2)= Substitui um caractere ou caracteres de uma cadeia com 0 ou mais caracteres. Ex: REPLACE(nome, be, da ) Abel - SUBSTR (col, inicio, qtd)= Obtém parte de uma cadeia. Ex: SUBSTR(nome,2,2) Abel - CONCAT (col1, col2)= Devolve col1" concatenada com col2". 42

Funções Para Cadeias de Caracteres - LPAD (col, tam, char )= Adiciona caracteres à esquerda do resultado até que tenha uma certa longitude. - RPAD (col, tam, char )= Adiciona caracteres à direita do resultado até que tenha uma certa longitude. Ex: LPAD(nome, 10, * ) = ******Abel Ex: RPAD(nome, 10, * ) = Abel****** - LTRIM (col, chars )= Suprime um conjunto de caracteres à esquerda do resultado. - RTRIM (col, chars )= Suprime um conjunto de caracteres à direita da cadeia. Ex: LTRIM(nome, a ) = Abel - bel Ex: RTRIM(nome, el ) = Abel - Ab 43

Funções Para Números ABS(n)= Devolve o valor absoluto de (n). CEIL(n)=Obtém o valor inteiro imediatamente superior ou igual a "n". FLOOR(n) = Devolve o valor inteiro imediatamente inferior ou igual a "n". MOD (m, n)= Devolve o resto resultante de dividir "m" por "n". NVL (col, valor)= Substitui um valor nulo por outro valor. NULLIF(col, valor) = retorna NULL se col = valor; POWER (m, exponente)= Calcula a potência de um número. SQRT(n)= Devolve a raiz quadrada de "n". 44

Funções Para Conversão de Tipos q CAST q Sintaxe: CAST(dado_origem as tipo_dado_destino) SELECT CAST (AVG(PRECO) AS DECIMAL (10,2)) FROM PRODUTO; SELECT CAST ( 11/02/2002 AS DATE) FROM DUAL; 45

Junção Interna (INNER JOIN) q Select Titulo, Descricao From Livro INNER JOIN Assunto on Assunto = Sigla Where Preco > 100 Select Titulo, Descricao From Livro, Assunto Where Assunto = Sigla and Preco > 100 q Select Nome, Titulo From Livro INNER JOIN Editora E on Editora = E.Codigo INNER JOIN Assunto on Assunto = Sigla Select Nome, Idade From Pessoa INNER JOIN Gente USING (CPF) 46

Junção Externa à Esquerda (LEFT OUTER JOIN) q Select * From Livro li LEFT OUTER JOIN Assunto a on li.cod_assunto = a.cod_assunto 47

Junção Externa à Direita (RIGHT OUTER JOIN) q Select * From Livro li RIGHT OUTER JOIN Assunto a on li.cod_assunto = a.cod_assunto 48

Junção Externa Completa (FULL OUTER JOIN) q Select * From Livro li FULL OUTER JOIN Assunto a on li.cod_assunto = a.cod_assunto 49

Junção Cruzada (CROSS JOIN) Junção Cruzada (Produto Cartesiano): q Select Cod_Pac, Nome_Pac, Cod_Med, Nome_Med From Paciente CROSS JOIN Medico PACIENTE PACIENTE X MEDICO MEDICO 50

Subconsultas Não-Correlacionadas SELECT Nome FROM Editora WHERE Codigo IN (SELECT Editora FROM Livro WHERE Lancamento IS NOT NULL) Nome das editoras que já lançaram livros. Editora Livro 51

Subconsultas Não-Correlacionadas q SELECT Descricao FROM Assunto WHERE Sigla NOT IN (SELECT Assunto FROM Livro WHERE Lancamento IS NOT NULL) q Assuntos que não foram lançados livros. Livro Assunto 52

Subconsultas Correlacionadas SELECT Nome FROM Editora ED WHERE EXISTS (SELECT Editora FROM Livro L WHERE Lancamento IS NOT NULL AND ED.Codigo = L.Editora) Editora Livro 53

Subconsultas Correlacionadas q SELECT Descricao FROM Assunto A WHERE NOT EXISTS (SELECT Assunto FROM Livro L WHERE Lancamento IS NOT NULL AND A.Sigla = L.Assunto) Livro Assunto 54

UNION SELECT Titulo FROM Livro WHERE Assunto = B Union [ALL] (com linhas repetidas) SELECT Titulo FROM Livro WHERE Assunto = P Livro 55

UNION SELECT * FROM Livro WHERE Assunto = B UNION CORRESPONDING BY (Nome, Autor, Data_Lancamento) SELECT * FROM Obra WHERE Area_Concentracao = P ; 56

INTERSECT (Intersecção) SELECT Titulo FROM Livro WHERE Assunto IN ( B, R ) INTERSECT SELECT Titulo FROM Livro WHERE Assunto IN ( B, P ) Livro 57

EXCEPT (Diferença) SELECT Titulo FROM Livro WHERE Assunto IN ( B, R ) EXCEPT SELECT Titulo FROM Livro WHERE Assunto IN ( B, P ) Livro 58

MERGE (UPSERT) MERGE INTO Cliente C USING AUTOR A ON (A.CPF = C.CPF) WHEN MATCHED THEN UPDATE SET C.NOME = A.NOME C.ENDERECO = A.ENDERECO C.DATA_NASCIMENTO = A. DATA_NASCIMENTO WHEN NOT MATCHED THEN INSERT (CODIGO, NOME, CPF, ENDERECO, DATA_NASCIMENTO) VALUES (A.MATRICULA, A.NOME, A.CPF, A.ENDERECO, A.DATA_NASC) Atualização da tabela Cliente a partir da tabela Autor 59

Índice Sobre Campo Chave CREATE INDEX ind-nome ON EMPREGADO (CPF); DROP INDEX ind-nome ON tabela-nome; 60

Controle de Segurança em SQL GRANT CREATE TAB ON DATABASE TO usuario; GRANT INSERT, DELETE ON EMPREGADO, PROJETO TO usuario; GRANT SELECT ON EMPREGADO TO usuario; GRANT CONTROL ON INDEX ind-dep TO usuario1, usuario2; GRANT ALL PRIVILEGES ON EMPREGADO TO usuario1; CREATE ROLE role1; GRANT role1 TO usuario1; REVOKE role1 FROM usuario1; REVOKE CONTROL ON INDEX ind-dep FROM usuario2; REVOKE DELETE ON EMPREGADO FROM usuario2; REVOKE ALL PRIVILEGES ON EMPREGADO FROM usuario1; 61