- Vanessa Moura
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.

CONFIGURAÇÃO DO MODO DE TRANSAÇÃO
No Teradata Studio Express, você define o modo de transação nas Propriedades de Conexão:


No BTEQ, você define o modo de transação com o comando .SET SESSION TRANSACTION:

SINALIZADOR ANSI
Se estiver usando o BTEQ, você pode usar o ANSI SQL Flag para identificar qualquer sintaxe não ANSI. Ele retorna mensagens de aviso quando uma sintaxe não ANSI é encontrada, mas não inibe a execução do comando. É uma configuração apenas informativa.
Você tem as três opções a seguir:
ENTRY - Sinaliza sintaxe que não está em conformidade com os requisitos de nível de entrada ANSI
INTERMEDIATE - Sinaliza sintaxe que não está em conformidade com os requisitos de nível intermediário ANSI
NONE - Sqlflag está desativado
O Teradata SQL é totalmente compatível com ANSI no nível ENTRY e parcialmente compatível no nível INTERMEDIATE.
O sinalizador SQL deve ser habilitado antes de fazer logon em uma sessão.
SQLFLAG também pode ser definido ao usar clientes front-end do banco de dados Teradata diferentes do BTEQ, por exemplo, o Teradata Preprocessor (PP2) e a Call Level Interface (CLIv2). No entanto, não há opção de usá-lo com JDBC, portanto, você não pode definir o sinalizador por meio do Teradata Studio ou Teradata Studio Express. Example:

Coisas a serem observadas:
4 avisos são gerados pelo sinalizador porque ANSI não aceita caracteres minúsculos, abreviações ou a palavra-chave DATE.
Apesar dos avisos, o SQL funciona no banco de dados Teradata. A data é retornada.
Você deve fazer logoff para redefinir o sinalizador SQL.
Sem o sinalizador SQL, nenhum aviso é gerado.
O sinalizador não é uma opção com o Teradata Studio ou Studio Express.
BTEQ .SHOW CONTROL
O comando BTEQ .SHOW CONTROL mostra todas as configurações habilitadas para uma sessão chamada BTEQ. Muitas das configurações são especificações de relatório. Existem outras configurações que refletem os recursos de importação e exportação do BTEQ. O comando SHOW CONTROL exibe as configurações da sessão, incluindo o Sinalizador ANSI e o modo de transação especificado.
Exemplo

SINTAXE ON-LINE HELP
Você pode usar HELP para problemas de sintaxe SQL. HELP pode exibir um menu de todos os comandos e funções SQL disponíveis ou fornecer ajuda de sintaxe para um comando SQL específico.
Exemplo

HELP também fornece ajuda de sintaxe para a maioria dos utilitários de cliente de banco de dados Teradata, bem como para SQL. A sintaxe é:

Examples

HELP EXAMPLE


TERADATA LAB
Se você não configurou a conexão do servidor de laboratório. Você precisará dessas instruções para fazer logon no banco de dados Teradata. Se você tiver problemas para se conectar ao servidor de laboratório, entre em contato com TEN.Support@Teradata.com.
Para este conjunto de perguntas de laboratório, você pode precisar de informações do documento Database Info.
Clique no botão Avançar na parte inferior da página para ver as respostas.
1.) Faça logon usando seu ID de usuário e senha atribuídos. Faça uma HELP SESSION para ver as informações da sessão. Observe a semântica da transação. Está definido como Teradata ou ANSI?
2.) Para este exercício, você deve estar no modo ANSI. Se você estava no modo Teradata, faça logoff e altere a semântica da transação para o modo ANSI.
Desmarque a caixa Autocommit no Teradata Studio Express. Em seguida, crie uma tabela simples e vazia intitulada quick com uma única coluna inteira intitulada col1. Depois de criar a tabela, selecione a data de hoje. O que acontece?
Como você está no modo de confirmação, um comando COMMIT após uma instrução DDL é necessário. Emita o comando. Tente selecionar a data de hoje novamente.
3.) Use o comando HELP apropriado para visualizar o conteúdo de seu banco de dados de ID do usuário.
Faça um comando HELP em uma mesa chamada EMPLOYEE. (Dica: não está em seu banco de dados. Está em CustomerService.).
Execute um comando HELP nos índices definidos para a tabela de funcionários.
Faça um comando HELP mostrando um menu de todos os comandos SQL possíveis.
Execute um comando HELP obtendo ajuda de sintaxe para o comando SELECT.
Execute um comando HELP obtendo ajuda de sintaxe para o comando ALTER TABLE.
Para mais informações sobre como configurar Teradata Lab.
Solução 1

A coluna Transaction Semantics mostrará "Teradata" ou "ANSI".
Solução 2

Solução 3

Para a segunda parte sobre Tabelas, constraints, atributos clique.