Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R8
Princípios para Integração 4D e motor SQL de 4D
|
Tipo 4D SQL | Descrição | 4D | |
Varchar | Texto Alfanumérico | Texto ou Alfa | |
Real | Número de ponto flutuante no faixa de +/-1.7E308 | Real | |
Numeric | Número entre +/- 2E64 | Inteiro 64 bits | |
Float | Número de ponto flutuante entre +/-1.7E308 | Float | |
Smallint | Número entre -32 768 e 32 767 | Inteiro | |
Int | Número entre -2 147 483 648 e 2 147 483 647 | Inteiro longo, Inteiro | |
Int64 | Número entre +/- 2E64 | Inteiro 64 bits | |
UUID | Número de 16 bytes (128 bits) contém 32 caracteres hexadecimais | Alpha format UUID | |
Bit | Campo que só aceita os valores TRUE/FALSE ou 1/0 | Booleano | |
Boolean | Campo que só aceita os valores TRUE/FALSE ou 1/0 | Booleano | |
Blob | Hasta 2 GB; todo objeto binário tal como uma imagem, um documento, uma aplicação | Blob | |
Bit varying | Até 2 GB; todo objeto binário tal como uma imagem, um documento, uma aplicação | Blob | |
Clob | Até 2 GB de texto. Esta coluna (campo) não pode ser indexada. Não é salvada no registro mesmo. | Texto | |
Text | Até 2 GB de texto. Esta coluna (campo) não pode ser indexada. Não é salvada no registro mesmo. | Texto | |
Timestamp | Data em formato 'YYYY/MM/DD' e hora em formato 'HH:MM:SS:ZZ' | Partes Data e Hora gerados separadamente (conversão automática) | |
Duration | Duração em formato 'HH:MM:SS:ZZ' | Hora | |
Interval | Duração em formato 'HH:MM:SS:ZZ' | Hora | |
Picture | Imagem PICT até de 2 GB | Imagem | |
Object | 21 | Serialização binária de objeto JSON (CAST como VARCHAR) | Object |
* Retornado por tabelas de sistemas _USER_COLUMNS e _USER_VIEW_COLUMNS. Para saber mais, ver Tabelas sistema.
A conversão entre os tipos de dados numéricos é automática.
As cadeias que representam um número não se convertem em um número correspondente. Existem funções CAST especiais que converterão os valores de um tipo a outro.
Os seguintes tipos de dados SQL não são implementados:
Os valores NULL se implementam na linguagem SQL de 4D, assim como no motor de banco de dados de 4D. No entanto, não são suportados na linguagem 4D. No entanto, é possível ler e escrever valores NULL em um campo 4D utilizando os comandos Is field value Null e SET FIELD VALUE NULL.
Por razões de compatibilidade em 4D, os valores NULL armazenados nas tabelas do banco de dados 4D se converte automaticamente em valores por padrão quando é manipulado sob a linguagem 4D. Por exemplo, no caso da seguinte instrução: myAlphavar:=[mytable]MyAlphafield
... se o campo MeuCampoAlfa contém um valor NULL, a variável mivarAlfa conterá "" (cadeia vazia).
Os valores por padrão dependem do tipo de dado:
Por outra parte, este mecanismo, em princípio, não se aplica aos tratamentos realizados a nível do motor do banco de dados 4D, tais como as consultas. Na verdade, a pesquisa de um valor "vazio" (por exemplo meuvalor = 0) não encontra registros que armazenem o valor NULL e vice-versa. Quando os dois tipos de valores (valores por padrão e NULL) estão presentes nos registros para um mesmo campo, alguns processos podem ser alterados ou necessitar código adicional.
Para evitar estes inconvenientes, uma opção permite padronizar todos os procedimentos da linguagem 4D: Mapear valores NULOS a valores vazios. Esta opção, que é encontrada na janela Inspetor de campos do editor de estrutura, permite estender o princípio de utilizar os valores por padrão em todos os tratamentos. Os campos que contenham valores NULL se consideram sistematicamente que contém valores por padrão. Esta opção está selecionada por padrão.
A propriedade Mapear valores NULOS a valores vazios é levado em conta a um nível muito baixo do motor do banco de dados. Atua mais particularmente no comando Is field value Null.
A propriedade de campo Rejeitar valor NULO de entrada permite evitar o armazenamento de valores NULL:
Quando este atributo está selecionado para um campo, não será possível armazenar o valor NULL neste campo. Esta propriedade de baixo nível corresponde exatamente ao atributo NOT NULL de SQL.
Geralmente, se deseja poder utilizar os valores NULL em seu banco de dados 4D, se recomenda utilizar exclusivamente a linguagem SQL de 4D.
Nota: Em 4D, os campos também podem ter o atributo "Obrigatório". Os dois conceitos são similares, mas seu alcance é diferente: o atributo "obrigatório" é um controle de entrada, ainda que o atributo "Rejeitar valor NULO de entrada" trabalha ao nível do motor do banco de dados.
Se um campo com este atributo recebe um valor NULL, é gerado um erro.
O servidor SQL integrado de 4D suporta as constantes data e hora de acordo ao API ODBC. Esta é a sintaxe para as sequências de constantes data e hora ODBC:
{constant_type 'value'}
tipo_constante | valor | Descrição |
d | aaaa-mm-dd | Data unicamente |
t | hh:mm:ss[.fff] | Hora unicamente |
ts | aaaa-mm-dd hh:mm:ss[.fff] | Data e hora (timestamp) |
Note: fff indica milissegundos.
Por exemplo, pode utilizar as seguintes constantes:
{ d '2013-10-02' }
{ t '13:33:41' }
{ ts '1998-05-02 01:23:56.123' }
O SQL date parser rejeita qualquer expressão de dada especificando "0" como o dia ou mês. Expressões como {d'0000-00-00'} ou CAST('0000-00-00' AS TIMESTAMP) gera um erro. Para realizar pesquisas SQL em datas blank (não deve ser confundido com datas null), deve usar uma expressão 4D intermediária. Por exemplo:
C_LONGINT($count)
$nullDate:=!00-00-00!
Begin SQL
SELECT COUNT(*) FROM Table_1
WHERE myDate = :$nullDate
INTO :$count;
End SQL
Uma propriedade de segurança foi adicionada para os métodos projeto 4D: Disponível via SQL:
Notas:
4D implementa o conceito de esquemas. Um esquema é um objeto virtual que contém as tabelas da base. No SQL, o propósito dos esquemas é atribuir direitos de acesso específicos aos diferentes conjuntos de objetos da base. Os esquemas dividem a base em entidades independentes que em conjunto formam toda a base. Em outras palavras, uma tabela sempre pertence a um só esquema.
Nota: O controle de acesso sob os esquemas somente é aplicado as conexões desde o exterior. O código SQL executado em 4D via as etiquetas Begin SQL/End SQL, SQL EXECUTE, QUERY BY SQL, sempre têm acesso total.
A arquitetura multi-bases se implementa a nível do servidor SQL de 4D. Desde 4D é possível:
Na linguagem SQL, uma chave primária permite identificar em uma tabela a(s) coluna(s) (campos) responsáveis de designar de maneira única os registros (linhas). A definição de uma chave primária é particularmente necessária para a função de replicação dos registros de uma tabela de 4D (ver a seção Replicação via SQL) e para o histórico das tabelas 4D a partir da v14.
4D lhe permite administrar a chave primária de uma tabela de duas formas:
Pode definir uma chave primária durante a criação de uma tabela (via o comando CREATE TABLE) ou ao agregar ou modificar uma coluna (via o comando ALTER TABLE). A chave primária se define utilizando a cláusula PRIMARY KEY seguida pelo nome da coluna ou de uma lista de colunas. Para obter mais informação, consulte a seção .
4D lhe permite criar e excluir diretamente chaves primárias via o menu contextual do editor da estrutura.
Para saber mais, consulte, Definir ou eliminar uma chave primária no manual de Desenho 4D.
O motor SQL integrado de 4D suporta vistas SQL padrão. Uma vista é uma tabela virtual com dados que podem proceder de várias tabelas das bases de dados. Uma vez que se define uma vista, pode utilizar em uma instrução SELECT como uma tabela real.
Os dados se encontram em uma vista se definem mediante uma petição de definição baseada no comando SELECT. As tabelas reais utilizadas na consulta de definição são chamadas "tabelas fontes". Uma vista SQL contém colunas e linhas como uma tabela estandarte, mas em realidade não existe, mas é só uma representação resultante do processamento e se armazena na memória. Só a definição da vista é realmente salva temporáriamente.
Dois comandos SQL se utilizam para administrar vistas em 4D v14: CREATE VIEW e DROP VIEW.
Produto: 4D
Tema: Utilizar SQL em 4D
Modificado: 4D v17 R5
Manual de SQL ( 4D v20 R8)