SQL-3 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. B’10011’ Date, time Timestamp c/s/ fuso: TIMESTAMP ‘2002-09-27 9:12:30 648302’ 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 SQL-92 eee 1 1r SQL-3 Curso( cod, nome) d 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, ALUNO ENDERECO endereco ROW (rua varchar(30), num int, bairro varchar(20), cidade varchar(30), uf char(2))) 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', '89200-100')) insert into aluno2 (matricula, endereco) values ( '300', ('RUA XV', 200,'SC', '89200-100')) select matricula, endereco from aluno2 where (endereco).rua like 'RUA XV%'