170 likes | 296 Views
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
E N D
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 SQL-3 Curso( 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', '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%'