SQL-3
Novo contexto e necessidade de : Manipular imagens Outros tipos de dados além de texto e números Recuperação de dados mais complexos Níveis distintos de detalhamento
SQL-3 Surgimento de SGBDO-R / ORDBMS Manter compatibilidade com BD relacional Mais funções novos dados complexos SQL foi estendida para atender esses dados complexos
Anterior ao SQL-3 SQL-92 – puramente relacional Criação e manipulação do SCHEMA Tipos de dados de atributos e domínios –Numéricos: inteiros, reais, de dupla precisão,... –Cadeia de caracter: char(n), varchar(n) –Bit-string: bit(n), bit varying(n) ex. B10011 –Date, time –Timestamp c/s/ fuso: TIMESTAMP :12: –Interval: valores relativos em formatos year/month ou day/time
Anterior ao SQL-3 SQL-92 CREATE DOMAIN tipo_nome AS varchar(45) Ex. CREATE TABLE tabPessoa ( cod int, nome tipo_nome); SQL procedural ( inclusão de estruturas de bloco, repetição, cursores) ASSERÇÕES CREATE ASSERTION nota_aluno_disciplina CHECK ( nota >0 AND nota <10) CREATE ASSERTION limite_salario CHECK ( NOT EXISTS (SELECT* FROM empregado E, empregado M, depto D where E.salario > M.salario NA E.DNO = D.numero AND D.ssgerente = M.ssn)
SQL-3 Tabela: estrutura fundamental –manipulação –armazenamento Construção / armazenamento diferenciados eee11rd SQL-92SQL-3Curso( cod, nome) Endereco(rua, num, bairro, cidade, UF)
SQL-3 Inclusão de tipos fora do padrão Solução –surgimento de tipos não-convencionais –suporte à recuperação destes
SQL-3- Tipos do sistema Boolean Binary large objects (BLOB) Character large objects (CLOB) Enumeration National character large objects Row type Set type Multiset List Abstract data type (ADT)
SQL-3: boolean Tipo explicitamente incluído Comportamento de boolean realmente Permite definir funções boolean com argumentos Suporte a operações definidas pelo usuário Admite somente valores TRUE e FALSE Ex. > create table a ( cod int, matriculado boolean); > select * from a where matriculado = TRUE
SQL-3: BLOB Esse tipo serve como suporte a dados binários Assinaturas eletrônicas, figuras, dados musicais Definição requer tamanho Manipulação do BLOB via aplicação Possui um identificador distinto para localização na BD e unicidade Operadores próprios : LIKE, UNION ALL* É possível –Concatenação –Substituição –Verificação do tamanho Ex. Tabela Aluno ( num_matricula char(10), foto BLOB (1M));
SQL-3: BLOB Não é possível –UNION –ORDER BY –>, >=, <,<= –Chaves não são aplicáveis –GROUP BY
Postgres: BLOB Suportado pelo tipo BYTEA
SQL3-CLOB Adicionar registros de texto Possui identificador distinto(localização no BD e unicidade) Manipulação do CLOB via aplicação Operadores próprios : LIKE, UNION ALL* É possível –Concatenação –Substituição –Verificação do tamanho Ex. campo para incluir currículo de um funcionário CREATE TABLE func ( num_func int, curriculo CLOB(50k))
SQL-3: CLOB Suporta recuperação parcial ou total Não é possível –UNION –ORDER BY –>, >=, <,<= –Chaves não são aplicáveis –GROUP BY * CLOB e BLOB são recuperados de depósitos no BD
Postgres: CLOb Suportado por tipo TEXT
SQL 3: ROW É um tipo estrutural Amplia o conceito da tabela Seqüência de atributos e nome e tipo de dados como a definição de uma tabela Tabela aninhada Ex. CREATE aluno ( cod int, endereco ROW (rua varchar(30), num int, bairro varchar(20), cidade varchar(30), uf char(2))) ALUNO ENDERECO
SQL: ROW Postgres: ROW é um COMPOSITE TYPE create type tipoendereco AS( rua varchar(20), num int, estado char(2), cep char(15)); create table aluno2 ( matricula char(30) primary key, endereco tipoendereco); insert into aluno2 (matricula, endereco) values ( '300', ('RUA XV', 200,'SC', ' ')) insert into aluno2 (matricula, endereco) values ( '300', ('RUA XV', 200,'SC', ' ')) select matricula, endereco from aluno2 where (endereco).rua like 'RUA XV%'