4D v14Implémentations du moteur SQL de 4D |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14
Implémentations du moteur SQL de 4D
Implémentations du moteur SQL de 4D
Fondamentalement, le moteur SQL de 4D est conforme à la norme SQL92. Cela signifie que, pour une description détaillée des commandes, fonctions, opérateurs et syntaxes à utiliser, vous pouvez vous référer à n’importe quelle documentation sur le SQL92. De multiples ressources sur ce thème sont disponibles, par exemple, sur Internet. Cependant, le moteur SQL de 4D ne prend pas en charge 100 % des fonctions du SQL92 et propose en outre des fonctions supplémentaires, non présentes dans cette norme. Ce paragraphe décrit les principales implémentations et limitations du moteur SQL de 4D. Le moteur SQL de 4D étant intégré au coeur de la base de données de 4D, les limitations relatives au nombre maximum de tables, de colonnes (champs) et d’enregistrements par base ainsi que les règles de nommage des tables et des colonnes sont identiques à celles du moteur standard de 4D. Elles sont listées ci-dessous :
Le tableau suivant indique les types de données pris en charge dans le SQL de 4D ainsi que leur type correspondant dans 4D :
La conversion entre les types de données numériques est automatique. Les chaînes qui représentent un nombre ne sont pas converties en valeur numérique. L’opérateur de transtypage CAST permet de convertir des valeurs d’un type en un autre.
La valeur NULL est implémentée dans le langage SQL de 4D ainsi que dans le moteur de base de données de 4D. En revanche, cette valeur n’existe pas dans le langage de 4D. Il est toutefois possible de lire et d’écrire la valeur NULL dans un champ 4D via les commandes Valeur champ Null et FIXER VALEUR CHAMP NULL. Pour des raisons de compatibilité dans 4D, les valeurs NULL stockées dans les tables des bases de données 4D sont automatiquement converties en valeurs par défaut lors des manipulations effectuées via le langage de 4D. Par exemple, dans le cas de l’instruction suivante : mavarAlpha:=[matable]MonChpAlpha ... si le champ MonchpAlpha contient la valeur NULL, la variable mavarAlpha contiendra “” (chaîne vide). Les valeurs par défaut dépendent du type de données :
En revanche, ce mécanisme ne s’applique pas en principe aux traitements effectués au niveau du moteur de la base de données 4D, tels que les recherches. En effet, la recherche d’une valeur “vide” (par exemple mavaleur=0) ne trouvera pas les enregistrements stockant la valeur NULL, et inversement. Lorsque les deux types de valeurs (valeurs par défaut et NULL) cohabitent dans les enregistrements pour un même champ, certains traitements peuvent être faussés ou nécessiter du code supplémentaire. La propriété Traduire les NULL en valeurs vides est prise en compte à un niveau très bas du moteur de la base de données. Elle agit notamment sur la routine Valeur champ Null. La propriété de champ Refuser l’écriture de la valeur NULL permet d’interdire le stockage de la valeur NULL : Lorsque cet attribut est coché pour un champ, il ne sera pas possible de stocker la valeur NULL dans ce champ. Cette propriété de bas niveau correspond précisément à l’attribut NOT NULL du SQL. Note: Dans 4D, les champs peuvent également avoir l’attribut “Obligatoire”. Les deux notions sont proches mais leur portée est différente : l’attribut “Obligatoire” est un contrôle de saisie, tandis que l’attribut “Refuser l’écriture de la valeur NULL” agit au niveau du moteur de la base de données. Si un champ disposant de cet attribut reçoit la valeur NULL, une erreur est générée. Le serveur SQL de 4D prend en charge les constantes date et heure conformément à l’API ODBC. La syntaxe des séquences de constantes date et heure ODBC est la suivante : {type_constante 'valeur'}
Note : fff indique des millisecondes. Par exemple, vous pouvez utiliser les constantes suivantes : { d '2013-10-02' } La propriété "Disponible via SQL", disponible pour les méthodes projet, permet de contrôler l'exécution des méthodes projet de 4D via le SQL. Lorsqu’elle est cochée, cette option autorise l’exécution de la méthode projet par le moteur SQL de 4D. Elle est désélectionnée par défaut, ce qui signifie que, sauf autorisation explicite, les méthodes projet de 4D sont protégées et peuvent pas être appelées par le moteur SQL de 4D. Notes :
Note : Seules les bases locales interrogées par le moteur SQL de 4D sont affectées par ce paramètre. Dans le cas de connexions externes à d'autres bases SQL, le mécanisme d’auto-commit est pris en charge par les moteurs SQL distants.
4D implémente le concept de schémas. Un schéma est un objet virtuel contenant des tables de la base. Dans le SQL, le concept de schémas a pour but de permettre l’attribution de droits d’accès spécifiques à des ensembles d’objets de la base de données. Les schémas découpent la base en entités indépendantes dont l’assemblage représente la base entière. Autrement dit, une table appartient toujours à un et un seul schéma.
Note : Le contrôle des accès via les schémas s’applique uniquement aux connexions depuis l’extérieur. Le code SQL exécuté à l’intérieur de 4D via les balises Debut SQL/Fin SQL, SQL EXECUTER, CHERCHER PAR SQL... dispose toujours d’un accès complet. L’architecture multi-bases est implémentée au niveau du serveur SQL de 4D. Depuis 4D, il est possible :
Dans le langage SQL, la clé primaire permet d’identifier dans une table la ou les colonnes (champs) chargée(s) de désigner de façon unique les enregistrements (lignes). La définition d’une clé primaire est notamment indispensable à la fonction de réplication des enregistrements d’une table de 4D (cf. section Réplication via le SQL) et à la journalisation des tables 4D à compter de la v14. 4D vous permet de gérer la clé primaire d’une table de plusieurs manières :
Note : Vous pouvez également définir des clés primaires à l'aide du Définir la structure de la base de données de 4D en mode Développement. Vous pouvez définir une clé primaire (PRIMARY KEY) lors de la création d’une table (via la commande CREATE TABLE) ou de l’ajout ou de la modification d’une colonne (via la commande ALTER TABLE). La clé primaire est définie à l'aide de la clause PRIMARY KEY suivie du nom de la colonne ou d'une liste de colonnes. Pour plus d'informations, reportez-vous à la section . 4D vous permet de créer et de supprimer directement une clé primaire via le menu contextuel de l’éditeur de structure. Pour créer une clé primaire :
Les champs inclus dans la clé primaire apparaissent alors soulignés dans l’éditeur et leur description SQL fait apparaître le mot-clé PRIMARY KEY. Le ou les champ(s) appartenant à la clé primaire ne doivent pas comporter de valeurs dupliquées. Si des valeurs dupliquées existaient déjà dans les enregistrements de la table, une boîte de dialogue d’alerte vous le signale. Note : La ou les colonne(s) appartenant à la clé primaire n’acceptent pas la valeur NULL. Pour supprimer la clé primaire d’une table :
Le moteur SQL intégré de 4D prend en charge les vues SQL (SQL views) standard. Une vue est une table virtuelle dont les données peuvent provenir de plusieurs tables de la base de données. Une fois qu’une vue est définie, vous pouvez l’utiliser dans une instruction SELECT comme une table réelle. Les données présentes dans une vue sont définies grâce à une requête de définition (definition query) basée sur la commande SELECT. Les tables réelles utilisées dans la requête de définition sont appelées "tables sources". Une vue SQL contient des colonnes et des lignes comme une table standard, mais elle n’existe pas en réalité, elle n’est qu’une représentation issue d’un traitement et conservé en mémoire. Seule la définition de la vue est stockée dans la base. Deux commandes SQL permettent de gérer les vues dans 4D : Commandes SQL et DROP VIEW. |
PROPRIÉTÉS
Produit : 4D VOIR AUSSI UTILISATION DE L'ARTICLE
4D - Référence SQL ( 4D v14) Hérité de : Implémentations du moteur SQL de 4D ( 4D v12.1) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||