TERADATA SQL AVANÇADO

Esta série de posts sobre Teradata SQL avançado oferece experiência prática e prática com Teradata Structured Query Language (SQL), usando as convenções padrão ANSI e extensões Teradata para a linguagem. Este é um conjunto de quatro seções:

  • Objetos e modos de sessão - inclui restrições, modos Teradata e ANSI, tabelas temporárias e voláteis e criação de tabelas a partir de outras tabelas.

  • Consultas complexas - inclui subconsultas correlacionadas, tabelas derivadas, consultas recursivas e sintaxe MERGE.

  • Agregações complexas - inclui a recuperação e manipulação de agregações.

  • Data, hora e formatação - inclui data, hora e formatação, tipos e números de dados datetime.

E o material aqui abordado, é uma resumo que usei para tirar minhas certificações, então, eu sugiro começar com o primeiro tópico e continuar na ordem dos posts. Estude o conteúdo de todas as quatro seções antes de fazer o pós-teste.


Observação: o servidor de laboratório disponível para estes posts é o Teradata versão 15. Alguns recursos discutidos neste curso podem não estar disponíveis no servidor de laboratório disponibilizado. Mas a parte teórica destes posts te dará uma boa base, caso você já tenha conhecimento sólido em programação SQL.


Teradata Advanced SQL: objetos e modos de sessão


1: Modos Teradata e ANSI> TERADATA SQL


Para se tornar uma linguagem 'padrão ANSI', todos os fornecedores de SQL devem ser certificados nos padrões ANSI (American National Standards Institute) pelo NIST (Instituto Nacional de Padrões e Tecnologia), uma agência de certificação do governo dos Estados Unidos.


Existem diferentes níveis de conformidade: Core e Enhanced.


O Teradata SQL evoluiu de uma sintaxe compatível com DB2 em V1 para uma sintaxe compatível com ANSI em V2 para uma versão compatível com ANSI SQL: 2011. Em todos os casos, o banco de dados Teradata sempre teve suas próprias extensões para a linguagem. A certificação atual está no nível básico ou básico do com extensões Teradata e alguns recursos aprimorados implementados.


A Teradata, no desenvolvimento histórico de seu RDBMS, produziu uma série de elementos inovadores da linguagem SQL que não se adequavam ao padrão ANSI SQL, padrão que não existia quando esses recursos foram concebidos.


MODOS DE OPERAÇÃO


O Teradata SQL permite dois modos diferentes de operação de sessão:

  • Modo ANSI

  • Modo Teradata (BTET)

A escolha do modo afeta:

  • Comportamento do protocolo de transação

  • Padrões de sensibilidade a maiúsculas e minúsculas

  • Agrupando sequências

  • Conversões de dados

  • Funções de exibição

Esteja ciente de que a mesma instrução SQL pode ter um desempenho diferente em cada modo com base nas considerações acima. Independentemente do modo que você selecionar, toda a sintaxe, seja ou não compatível com ANSI, pode ser usada. Nenhuma funcionalidade é inibida pela escolha do modo.


Além disso, você pode observar que, por padrão, o Teradata Studio e o Teradata Studio Express se conectam no modo ANSI. A propriedade da conexão é "TMODE".


MODOS DE TRANSAÇÃO


Uma transação é uma unidade de trabalho executada em uma ou mais tabelas de um banco de dados. Pode consistir em uma ou mais declarações de alteração de dados.


Por definição, uma transação deve confirmar todas as alterações associadas ou todas devem ser revertidas, o que significa que todas as alterações são retornadas ao estado original de pré-transação. Uma transação é uma proposição tudo ou nada, ou seja, ela é totalmente bem-sucedida ou totalmente revertida. Saber que as transações não podem ser concluídas parcialmente fornece garantia da integridade dos dados.


TRANSAÇÕES DO MODO ANSI

O modo ANSI também é conhecido como modo COMMIT. Ele acumula automaticamente todas as solicitações até que um COMMIT explícito seja enviado. Nesse ponto, todas as transações são confirmadas no banco de dados e a transação é encerrada. Todas as transações no modo ANSI são consideradas explícitas, ou seja, requerem um comando COMMIT explícito para serem concluídas. Qualquer instrução que segue um COMMIT inicia automaticamente uma nova transação. Os bloqueios são acumulados até que um COMMIT seja emitido.


No caso especial de instruções DDL (Data Definition Language), elas devem sempre ser seguidas imediatamente por uma instrução COMMIT. As macros que contêm instruções DDL devem conter uma única instrução DDL e ser seguidas por um COMMIT imediato.


Uma operação de reversão ocorre quando, por algum motivo, a transação não pode ser concluída. A reversão desfará automaticamente quaisquer alterações que tenham sido aplicadas e liberará todos os bloqueios que estão sendo mantidos pela transação. Após uma reversão, não há nenhuma transação ativa até que outra seja iniciada. No modo ANSI, uma reversão ocorrerá nas seguintes situações:

  • Trabalho ROLLBACK - rollback explícita de uma transação ativa

  • Abortar sessão - rollback da transação ativa

  • Falha na instrução SQL - rollback da transação ativa

  • Erro de instrução SQL - rollback apenas a solicitação atual

O modo ANSI faz uma distinção entre a instrução SQL 'erro' e 'falha'. Discutiremos isso abaixo.


FALHA VS. ERRO


O modo ANSI faz uma distinção entre a instrução SQL 'erro' e 'falha'.


Falha de SQL - reverte toda a transação quando qualquer um dos seguintes ocorrer:

  • Uma condição de deadlock ocorre exigindo reversão da transação

  • Uma instrução DDL falhou

  • Um comando ROLLBACK explícito foi encontrado

Nestes casos, a transação termina.


Erro SQL - reverte a instrução SQL individual quando uma instrução SQL é concluída sem sucesso e nenhuma das situações de 'falha' SQL acima se aplicam.


Nestes casos, a transação continua. Se esta foi a primeira instrução da transação, a próxima instrução iniciará a transação.


TRANSAÇÕES DO MODO TERADATA (BTET)


O modo Teradata também é conhecido como modo BTET, que significa BEGIN TRANSACTION / END TRANSACTION. No modo BTET, todas as solicitações individuais são tratadas como transações implícitas únicas.


No modo Teradata, nenhuma distinção é feita entre 'erro' e 'falha'. Ambos são considerados 'falhas'. Uma reversão ocorrerá se qualquer um dos seguintes eventos ocorrer:

  • Trabalho ROLLBACK - reversão explícita da transação ativa

  • Abortar sessão - reversão da transação ativa

  • Falha na instrução SQL - reversão da transação ativa

Os bloqueios são acumulados seguindo um BT até que um ET seja emitido.


Se você precisar agregar solicitações em uma única transação, use os delimitadores BEGIN e END TRANSACTION.