A SQL é a linguagem de consulta padrão para SGBDRs.
A SQL foi especificada pela primeira vez nos anos 70, e em 1986 foi adotada como padrão ANSI e em 1987 como ISO.
Em 1999 a SQL3 acrescenta características
(SQL3
-
http://en.wikipedia.org/wiki/Sql);
Em 1992 a SQL-92 (SQL2) teve sua maior revisão.
Visão Geral da SQL3
Em SGBDORs a SQL pode ser estendida para lidar ao mesmo tempo com tabelas do modelo relacional e classes e objetos do modelo orientado a objetos.
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3:
- --
- A operação SIMILAR, SIMILAR, SIMILAR, SIMILAR, que permite o uso de expressões regulares para combinar com strings de caracteres;
- --
- Valores booleanos foram estendidos com UNKNOWN
UNKNOWNUNKNOWN
UNKNOWN(DESCONHECIDO) quando uma comparação não resulta nem verdadeiro nem
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- --
- Uma nova operação importante é a recursão recursão recursão recursão linear
linearlinear
linear para especificar consultas recursivas;
Tabela_Peças(Peça 1, Peça 2) – tupla<p1, p2> sempre que a peça p1 contenha a peça p2 como componente. Uma consulta para produzir a lista de materiais para alguma peça p1 (ou seja, todas as peças componentes necessárias para produzir p1) está descrita a seguir:
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
WITH RECURSIVE
Lista_Materiais(Peça 1, Peça 2) As
(Select Peça 1, Peça 2, from Tabela_Peças where Peça 1 = ‘p1’ UNION ALL
Select Tabela_Peças (Peça 1), Tabela_Peças (Peça 2) from Lista_Materiais, Tabela_Peças
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- --
- rolerolerole(papel), é semelhante a uma “descrição de role serviço” e está sujeito à autorização de privilprivilprivilpriviléééégiosgiosgiosgios. As verdadeiras pessoas (contas de usuários) que são designadas para um papel podem ser alteradas, mas a autorização de papéis propriamente dita não precisa ser alterada;
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- --
- inclui sintaxe para especificação e uso de
triggers
triggerstriggers
triggers
como regras ativas. Eventos detriggers
incluem as operações INSERT, DELETE e UPDATE em uma tabela. O disparo pode ser especificado como sendo antes (BEFORE) ou após (AFTER) o evento de disparo.
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- A SQL3 está sendo estendida com facilidades de linguagem de programação.
- Rotinas escritas em SQL computacionalmente completa, com a plena combinação de tipos de dados e um ambiente integrado, denominam-se rotinas da SQL
rotinas da SQLrotinas da SQL rotinas da SQL.
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- Para tornar computacionalmente completa a linguagem, estão incluídas na sintaxe da SQL3 as seguintes estruturas de controle de programação: CALL/RETURN, BEGIN/END, FOR/END_FOR, IF/ THEN/ELSE/END_IF, CASE/END_CASE, LOOP/
Visão Geral da SQL3
Novos tipos de operações foram adicionados à SQL3: (cont)
- Variáveis são declaradas utilizando-se DECLARE e atribuições são especificadas utilizando-se SET.
Visão Geral da SQL3
A SQL3 estende a (SQL2/SQL-92) para incluir funcionalidades orientadas a objetos. Novos tipos de dados incluem objetos booleanos, objetos de caracteres e objetos binários grandes (LOBs).
Em função da SQL/Fundamentos, a SQL3 admite tipos de dados definidos pelo usuário, construtores de tipo, tipos de coleção, funções e procedimentos definidos pelo usuário, suporte pra
Visão Geral da SQL3
Os objetos na SQL3 são de dois tipos:
- tipos linhastipos linhastipos linhastipos linhas, cujas instâncias são tuplas em tabelas;
- tipos abstratos de dados (TAD)tipos abstratos de dados (TAD)tipos abstratos de dados (TAD), que significam tipos abstratos de dados (TAD) quaisquer tipos gerais.
Visão Geral da SQL3
Um tipo linhatipo linhatipo linhatipo linha pode ser definido utilizando-se a sintaxe:
CREATE ROW TYPE nome (< componentes >); Exemplo 1:
CREATE ROW TYPE empempempemp (nome VARCHAR (35), idade INTERGER ); CREATE ROW TYPE compcompcomp (nomecomp VARCHAR (20), localizaçãocomp VARCHAR (20));
Visão Geral da SQL3
Tabelas podem ser criadas com base nas declarações dos tipos linhas empempempemp e compcompcompcomp.
Exemplo 2:
CREATE TABLE EmpregadoEmpregadoEmpregadoEmpregado OF TYPE empempemp; emp CREATE TABLE CompanhiaCompanhiaCompanhiaCompanhia OF TYPE compcompcompcomp;
Um atributo componente de uma tupla pode ser uma referência (REF) referência (REF) referência (REF) referência (REF) para uma tupla de uma outra(ou talvez da mesma) relação.
Visão Geral da SQL3
Exemplo 3:
CREATE ROW TYPE empregoempregoempregoemprego (EmpregadoEmpregadoEmpregadoEmpregado REF (empempemp), emp
Companhia Companhia Companhia
Companhia REF (compcompcompcomp));
CREATE TABLE EmpregoEmpregoEmpregoEmprego OF TYPE empregoempregoemprego;emprego
A SQL3 utiliza notanotanotanotaçççção de doisão de doisão de doisão de dois pontos para construir expressões de caminho que se referem aos componentes de tuplas.
Exemplo 4:
Visão Geral da SQL3
Identificadores de objeto (Identificadores de objeto (Identificadores de objeto (Identificadores de objeto (OIDsOIDsOIDs)))) podem ser OIDs explicitamente declarados e acessados.
Exemplo 5:
CREATE ROW TYPE empempempemp (nome CHAR (35), idade INTENGER, Id REF (empempemp));emp
Valores de identificador de objeto podem ser gerados pelo sistema.
Exemplo 6:
CREATE TABLE Empregado OF TYPE emp VALUES FOR Id ARE SYSTEM GENERATED;
Visão Geral da SQL3
Tipos Abstratos de Dados (Tipos Abstratos de Dados (Tipos Abstratos de Dados (Tipos Abstratos de Dados (TADsTADsTADs))))TADs
Na SQL3, é fornecido um componente semelhante à definição de classe através do qual o usuário pode criar um tipo definido pelo usuáááário com sua própria especificação de comportamento e estrutura interna.
Exemplo 7:
CREATE TYPE <nome> (
Visão Geral da SQL3
Exemplo 8:
CREATE TYPE PessoaPessoaPessoaPessoa (nome VARCHAR (40), identidade INTEGER);
Um TAD tem inúmeras funções definidas pelo usuário a ele associadas. A sintaxe é:
Exemplo 9:
Visão Geral da SQL3
HeranHeranHeranHeranççççaaaa
- Todos o atributos são herdados;
- A ordem dos subtipos na clausula UNDER determina a hierarquia de herança;
- Uma instância de um subtipo pode ser utilizada em todos os contextos em que uma instância de supertipo seja utilizada.
Visão Geral da SQL3
SobrecargaSobrecargaSobrecargaSobrecarga
- Um subtipo pode redefinir qualquer função que esteja definida em seu supertipo, com a restrição de que a assinatura seja a mesma.
ResoluResoluResoluResoluçççção de Funão de Funão de Funão de Funççççõesõesõesões
- Quando uma função é chamada, a melhor combinação é selecionada com base nos tipos de todos os argumentos.
Visão Geral da SQL3
Tipos ColeTipos ColeTipos ColeTipos Coleççççõesõesõesões
- A SQL3 suporta construtores para tipos de coleção, que podem ser utilizadas para se criarem estruturas aninhadas para objetos complexos.
Exemplo 11: