DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Editeurs / Editeur de requêtes / SQL
  • Présentation
  • SELECT
  • SELECT
  • Cas particulier : SELECT multifichiers
  • Cas particuliers : SELECT sans FROM ou SELECT utilisant une table virtuelle
  • Exécuter une procédure stockée
  • INSERT
  • INSERT
  • INSERT avec sélection
  • UPDATE
  • DELETE
  • CREATE TABLE
  • Types disponibles
  • CREATE TABLE AS
  • DROP TABLE
  • ALTER TABLE
  • CREATE INDEX
  • DROP INDEX
  • GRANT
  • REVOKE
  • CREATE VIEW
  • DROP VIEW
  • CREATE MATERIALIZED VIEW
  • DROP MATERIALIZED VIEW
  • REFRESH MATERIALIZED VIEW
  • OPTIMIZE TABLE
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Les principales instructions SQL autorisées dans les requêtes SQL gérées par WINDEV et WEBDEV sont les suivantes :
Pour plus de détails sur les instructions SQL, consultez une documentation spécifique au langage SQL.
Pour connaître toutes les commandes SQL (fonctions, clauses, opérateurs, ...) utilisables dans une requête SQL gérée par HFSQL, consultez Commandes utilisables dans une requête SQL gérée par HFSQL.
Remarques :
  • Ces instructions sont utilisables :
    • dans le code SQL des requêtes créées sous l'éditeur de requêtes. Ces requêtes sont ensuite exécutées grâce à la fonction HExécuteRequête.
    • dans le code SQL des requêtes exécutées avec la fonction du WLangage HExécuteRequêteSQL.
  • Le caractère " peut être utilisé comme délimiteur d'identifiant dans les requêtes SQL comme prévu par la norme SQL92.
Le logiciel Etats et Requêtes ne permet pas de créer des requêtes en code SQL utilisant les ordres INSERT, UPDATE ou DELETE.
SELECT

SELECT

L'instruction SELECT permet de rechercher des enregistrements dans un ou plusieurs fichiers.
Format d'utilisation :
SELECT [ALL/DISTINCT] NomDesRubriques AS NomDesRubriquesUtilisé
FROM NomDesFichiers AS NomDesFichiersUtilisé
[WHERE JointuresFichiers [AND] ConditionsSélection]
[GROUP BY NomDesRubriques [HAVING Condition]]
[ORDER BY NomDesRubriques]
Exemple : Le code SQL suivant permet de visualiser la somme totale des commandes par client habitant en Côte d'Or. Le résultat sera regroupé par nom du client, par code postal et par ville. Seuls les clients ayant un cumul des commandes supérieur à 3000 Euros seront conservés. Le résultat sera trié par ordre croissant selon le cumul des commandes :
SELECT CLIENT.NomClient AS NomClient,
CLIENT.CodePostal AS CodePostal,
CLIENT.Ville AS Ville,
SUM(COMMANDE.TotalTTC) AS TotalTTC
FROM CLIENT AS CLI, COMMANDE AS COM
WHERE CLI.NumClient = COM.NumClient
AND CodePostal LIKE '21%'
GROUP BY NomClient, CodePostal, Ville
HAVING TotalTTC > 3000
ORDER BY TotalTTC ASC
Remarques :
  • Le mot-clé DISTINCT permet de supprimer les enregistrements dupliqués (doublons) du résultat de la requête.
  • Pour plus de détails sur les conditions de sélection, consultez Conditions de sélection dans une requête SQL.
  • Une requête de sélection peut être réalisée avec l'éditeur de requêtes. Pour plus de détails, consultez Création d'une requête de sélection.
  • Dans la syntaxe de l'instruction SELECT, le paramètre NomDesRubriques peut contenir une ou plusieurs conditions de sélection. Par exemple :
    SELECT NomClient, Age>18 AS Majeur FROM Client
  • L'instruction SELECT peut être utilisée comme une expression scalaire, c'est-à-dire qu'il est possible d'utiliser l'instruction SELECT à la place d'une valeur ou d'une colonne dans des instructions comme INSERT, UPDATE, SELECT, etc.
    Par exemple :
    INSERT INTO TABLE (nom, valeur) VALUES ( 'Rome a Rick',
    (SELECT MAX(nombre) FROM table2) )

    UPDATE client SET cattc = (SELECT SUM(facture.total_ttc)
    FROM facture WHERE facture.reference=client.reference)

    SELECT NomDesRubriques AS NomDesRubriquesUtilisé,
    (SELECT COUNT(*) FROM Table2 WHERE Rub=NomDesRubriquesUtilisé)
    FROM Table1
Remarque : La requête SELECT utilisée comme expression scalaire doit renvoyer un résultat sur une seule colonne et une seule ligne.

Cas particulier : SELECT multifichiers

L'instruction SELECT permet également de sélectionner dans une requête multifichier toutes les colonnes d'un fichier de données grâce à la syntaxe suivante :
SELECT Ligne_Commande.*,Commande.NumCommande, ...
FROM Commande, Ligne_Commande
Cette syntaxe est particulièrement intéressante dans le cadre de jointures et évite la saisie fastidieuse de chaque nom de rubrique.

Cas particuliers : SELECT sans FROM ou SELECT utilisant une table virtuelle

L'instruction SELECT permet également d'exécuter des requêtes ne portant pas sur des tables :
  • soit en utilisant la syntaxe sans clause "FROM".
    Exemple :
    SELECT TO_CHAR(12,'RN')
  • soit en utilisant la table virtuelle DUAL. Cette table virtuelle contient une seule rubrique (nommée "dummy") et un seul enregistrement.
    Exemple :
    SELECT CURRENT_DATE FROM DUAL

Exécuter une procédure stockée

L'instruction SELECT permet également d'exécuter directement des procédures stockées.
La syntaxe pour exécuter la procédure stockée est la suivante :
SELECT NomDeLaProcédureStockée(ParamètreNumérique,'ParamètreChaîne',....) [FROM DUAL]
Remarques :
  • La procédure stockée doit être une fonction stockée : elle doit toujours renvoyer une valeur. Dans le cas contraire, une erreur d'exécution sera générée.
  • Si le nom de la procédure stockée est identique à celui d'une fonction ou procédure du projet, il est nécessaire de préfixer son nom par le nom de la collection de procédures stockées.
  • Le résultat d'une procédure stockée peut également être un des paramètres d'une requête de type SELECT.
INSERT

INSERT

L'instruction INSERT permet d'ajouter  :
  • un enregistrement dans un fichier de données.
  • plusieurs enregistrements dans un fichier de données.
Son format d'utilisation est :
INSERT INTO NomDuFichier (NomDesRubriques)
VALUES (ValeurRubriques ajout 1), (ValeurRubriques ajout 2), ... , (ValeurRubriques ajout N)
Exemples : Les codes SQL suivants permettent d'insérer :
  • un nouveau client dans le fichier CLIENT (l'ensemble des informations du client est fourni).
    INSERT INTO CLIENT
    VALUES (77, 'Martin', 'Julie', '1 rue Giono',...
    '69000', 'Lyon')
  • un nouveau client dans le fichier CLIENT : seuls le numéro, le nom et le prénom du client sont fournis :
    INSERT INTO CLIENT (NumClient, NomClient, PrénomClient)
    VALUES (77, 'Martin', 'Julie')
  • 3 produits dans un fichier PRODUIT :
    INSERT INTO PRODUIT
    VALUES ('Ref01', 'Eau minérale'), ('Ref02', 'Beurre'), ('Ref03', 'Eponge')
Remarques :
  • Une requête d'insertion peut être créée sous l'éditeur de requêtes. Pour plus de détails, consultez Création d'une requête d'insertion.
  • Pour connaître la valeur de l'identifiant automatique lors d'une requête de type INSERT sur des fichiers HFSQL (requête exécutée par la fonction HExécuteRequêteSQL, HExécuteRequête ou SQLExec), utilisez la variable SQL.IDAuto.
  • Il n'est pas possible d'utiliser l'instruction INSERT pour copier les données d'un fichier HFSQL dans un autre fichier HFSQL.
  • La variable H.NbEnregRequêteModification permet de connaître le nombre d'enregistrements insérés.

INSERT avec sélection

L'instruction INSERT peut également être utilisée pour insérer une sélection d'enregistrements réalisée par une requête SELECT. Son format d'utilisation devient :
INSERT INTO NomDuFichier [(NomDesRubriques)] SELECT ...
Remarques :
  • Le nombre de rubriques à insérer doit être identique au nombre de valeurs renvoyées par la requête SELECT.
  • Si aucune rubrique n'est précisée dans l'instruction INSERT, toutes les rubriques du fichier sont prises en compte.
  • Ce type de requête ne peut pas être créé directement dans l'éditeur de requêtes.
UPDATE
L'instruction UPDATE permet de mettre à jour des enregistrements dans un fichier. Son format d'utilisation est le suivant :
UPDATE NomDuFichier
SET NomDeLaRubrique = Expression
[WHERE Conditions]

Exemples :
  • Le code SQL suivant permet de modifier la civilité et le nom du client Montgomery :
    UPDATE CLIENT
    SET Civilité = 'Mme',
    NomClient = 'Darwin'
    WHERE NomClient = 'Montgomery'
  • Le code SQL suivant permet de modifier le nom du client dans le fichier Client. Pour les enregistrements ayant le même identifiant, le nom du client dans le fichier Client est remplacé par le nom du client dans le fichier Client_Svg :
    UPDATE CLIENT, CLIENT_SVG
    SET CLIENT.Nom = CLIENT_SVG.Nom
    WHERE CLIENT.ID = CLIENT_SVG.ID
Remarques sur l'utilisation de l'instruction UPDATE dans WINDEV :
  • La clause WHERE accepte des sous-sélections (par SELECT), à condition que la sous-sélection soit relative à un autre fichier.
  • L'expression SET n'accepte pas de sous-sélection (pas de commande SELECT directement après SET). De la même façon il n'est pas possible de faire une jointure au niveau de la partie UPDATE de la requête.
    La requête suivante est acceptée :
    UPDATE ARTICLE SET PrixVente = 1000
    WHERE RefArticle IN (SELECT COMMANDE.RefArticle FROM COMMANDE)
    -- Sous-requête dans le WHERE: OK

    La requête suivante n'est pas acceptée :
    UPDATE Article
    SET PrixVente = (SELECT AVG(COMMANDE.PrixUnit) FROM COMMANDE
    -- Sous-requête dans le SET: NON VALIDE
    WHERE COMMANDE.RefArticle = ARTICLE.RefArticle
    GROUP BY COMMANDE.RefArticle)
    WHERE RefArticle IN (SELECT COMMANDE.RefArticle FROM COMMANDE)

    Et de la même façon la requête suivante n'est pas acceptée :
    UPDATE Article INNER JOIN PRODUIT ON (Article.IdArticle = Produit.IdProduit)
    -- Jointure dans le UPDATE : NON VALIDE
    SET Article.PrixVente = Produit.PrixVente
    WHERE RefArticle IN (SELECT COMMANDE.RefArticle FROM COMMANDE)
  • Une requête de mise à jour peut être créée directement sous l'éditeur de requêtes. Pour plus de détails, consultez Création d'une requête de modification.
  • L'apostrophe sert de délimiteur pour les chaînes dans les requêtes SQL. Si la valeur à écrire doit contenir une apostrophe, cette valeur doit être précédée du caractère antislash ('\'). Par exemple :
    UPDATE CLIENT
    SET Adresse = 'Rue de l\'écluse'
    WHERE NomClient = 'Montgomery'
  • La variable H.NbEnregRequêteModification permet de connaître le nombre d'enregistrements mis à jour.
DELETE
L'instruction DELETE permet de supprimer des enregistrements dans un fichier. Son format d'utilisation est le suivant :
DELETE FROM NomDuFichier
WHERE Conditions
Exemple : Le code SQL suivant permet de supprimer les clients nés entre le 01/01/1971 et le 01/01/1975 :
DELETE FROM CLIENT
WHERE CLIENT.DateNaissance BETWEEN '19710101' AND '19750101'
Remarque : Une requête de suppression peut être créée directement avec l'éditeur de requêtes. Pour plus de détails, consultez Création d'une requête de suppression.
CREATE TABLE
L'instruction CREATE TABLE permet de décrire une table et de la créer. Son format d'utilisation est le suivant :
CREATE TABLE NomTable
(
Description de la rubrique1,
Description de la rubrique2,
...
Description Index1,
Description Index2,
...
)
Dans cette syntaxe :
  • les paramètres "Description de rubrique" correspondent à :
    NomRubrique type  [DEFAULT 'valeur' | DEFAULT NULL] [NOT NULL]
      [UNIQUE] [PRIMARY KEY]  [AUTO_INCREMENT] [COMMENT 'libellé'] [COLLATE 'langue']
    où :
    • NomRubrique : nom à donner à la rubrique.
    • Type : Type de la rubrique (choisi parmi les types disponibles présentés ci-dessous).
    • DEFAULT : permet de fixer la valeur par défaut de la rubrique.
    • NOT NULL : permet d'interdire d'affecter la valeur NULL à la rubrique.
    • UNIQUE : permet de définir une rubrique avec ou sans doublons.
    • PRIMARY KEY : permet de définir une clé primaire.
    • AUTO_INCREMENT : permet de définir un identifiant automatique pour les rubriques de type entier.
    • COMMENT : permet de définir le libellé de la rubrique.
    • COLLATE : permet de définir la langue de tri de la rubrique (par exemple : 'FR_BE').
  • les paramètres "Description d'index" correspondent à :
    INDEX  NomIndex ( rub1 [ASC | DESC] [CI] [AI] [PI], rub2 ... ) [UNIQUE]
    où :
    • ASC et DESC : permet de définir le sens du tri.
    • CI : permet d'indiquer que la case est ignorée.
    • AI : permet d'indiquer que les accents sont ignorés.
    • PI : permet d'indiquer que la ponctuation est ignorée.
Remarque : Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.

Types disponibles

Les types disponibles sont :
CHARACTERChaîne de caractères
CHARACTER(Taille)Chaîne sur taille
VARCHAR(Taille)Chaîne sur taille
CHARACTER VARYING(Taille)Chaîne sur taille
CHAR VARYING(Taille)Chaîne sur taille
NVARCHAR(Taille)Chaîne Unicode sur taille
VARCHAR(Taille) BINARYChaîne binaire sur taille
BINARY(Taille)Chaîne binaire sur taille
VARBINARY(Taille)Chaîne binaire sur taille
BLOBMémo binaire
CLOBMémo texte
TEXTMémo texte
NCLOBMémo Unicode
NTEXTMémo Unicode
NUMBER(Précision)Entier
NUMBER(Précision, échelle)Entier
DECIMAL(Précision)Réel
DECIMAL(Précision, échelle)Réel
TINYINT UNSIGNEDEntier non signé sur 1 octet
SMALLINT UNSIGNEDEntier non signé sur 2 octets
INTEGER UNSIGNEDEntier non signé sur 4 octets
BIGINT UNSIGNEDEntier non signé sur 8 octets
TINYINTEntier signé sur 1 octet
SMALLINTEntier signé sur 2 octets
INTEGEREntier signé sur 4 octets
BIGINTEntier signé sur 8 octets
FLOATRéel sur 4 octets
REALRéel sur 8 octets
DOUBLE PRECISIONRéel sur 8 octets
MONEYMonétaire
DATEDATE
DATETIMEDate heure
TIMEHeure
SECUREPASSWORDMot de passe sécurisé
CREATE TABLE AS
L'instruction CREATE TABLE AS permet de décrire une table et de la créer à partir du résultat d'une requête de sélection. Les colonnes de la table ont les noms et les types de données associés aux colonnes en sortie de la requête de type SELECT.
Son format d'utilisation est le suivant :
CREATE TABLE NomTable AS RequêteSélection [WITH NO DATA]
Dans cette syntaxe :
  • RequêteSélection est une requête de sélection (SELECT). La requête est exécutée et la table est créée à partir du résultat de cette requête de sélection.
  • L'option "WITH NO DATA" permet de créer uniquement la structure de la table (sans les données contenues dans le résultat de la requête de sélection).
Attention : La table créée peut avoir un index différent de la table d'origine.
Remarque : Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
DROP TABLE
L'instruction DROP TABLE permet de supprimer physiquement une table. Son format d'utilisation est le suivant :
DROP TABLE [ IF EXISTS ] name [, ...]
Remarques :
  • IF EXISTS permet de ne pas renvoyer d'erreur si la table n'existe pas.
  • Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
ALTER TABLE
L'instruction ALTER TABLE permet de changer la structure d'une table existante. Par exemple, vous pouvez ajouter ou supprimer des colonnes, des index, changer le type des colonnes existantes, renommer ces colonnes, ou la table elle-même. Son format d'utilisation est le suivant :
ALTER TABLE NomTable Action [, Action] ....
Dans cette syntaxe :
  • les paramètres "Action" correspondent à une des actions suivantes :
    ADD [COLUMN] Description de rubrique
    ADD [COLUMN] (Description de rubrique1 [,Description de rubrique2]....)
    DROP [COLUMN] [IF EXISTS] NomRubrique
    DROP [COLUMN] [IF EXISTS] (NomRubrique1 [, NomRubrique2]...)
    ALTER [COLUMN] NomRubrique [SET DATA] TYPE alter_type_desc
    ALTER [COLUMN] NomRubrique SET DEFAULT <valeur>
    ALTER [COLUMN] NomRubrique DROP DEFAULT
    ADD [UNIQUE / PRIMARY KEY] INDEX [<NomIndex>] (Description d'index
    [, Description d'index2], ...)
    DROP INDEX [IF EXISTS] NomIndex
    DROP INDEX [IF EXISTS] (NomIndex1 [, NomIndex2]...)
    RENAME COLUMN NomRubrique TO Nouveau_NomRubrique
  • Les paramètres "Description de rubrique" correspondent à :
    NomRubrique type  [DEFAULT 'valeur' | DEFAULT NULL] [NOT NULL] [UNIQUE] [PRIMARY KEY]
     [AUTO_INCREMENT] [COMMENT 'libellé'] [COLLATE 'langue']
    où :
    • NomRubrique : nom à donner à la rubrique.
    • Type : Type de la rubrique (choisi parmi les types disponibles présentés ci-dessus).
    • DEFAULT : permet de fixer la valeur par défaut de la rubrique.
    • NOT NULL : permet d'interdire d'affecter la valeur NULL à la rubrique.
    • UNIQUE : permet de définir une rubrique avec ou sans doublons.
    • PRIMARY KEY : permet de définir une clé primaire.
    • AUTO_INCREMENT : permet de définir un identifiant automatique pour les rubriques de type entier.
    • COMMENT : permet de définir le libellé de la rubrique.
    • COLLATE : permet de définir la langue de tri de la rubrique (par exemple : 'FR_BE').
    • SECUREPASSWORD : permet de définir que la rubrique est du type "Mot de passe".
  • les paramètres "Description d'index" correspondent à :
    NomRubrique [ASC | DESC] [CI] [AI] [PI]
    où :
    • ASC et DESC : permet de définir le sens du tri.
    • CI : permet d'indiquer que la case est ignorée.
    • AI : permet d'indiquer que les accents sont ignorés.
    • PI : permet d'indiquer que la ponctuation est ignorée.
Remarques :
  • Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
  • Pour utiliser la table modifiée lors du ALTER (sans analyse liée au projet), il faut utiliser la fonction HDéclareExterne après l'exécution de la requête de type ALTER TABLE.
CREATE INDEX
L'instruction CREATE INDEX est équivalente à l'instruction ALTER TABLE pour créer des index. Cette instruction permet d'ajouter des index à une table existante. Son format d'utilisation est le suivant :
CREATE [UNIQUE] INDEX [NomIndex] ON NomTable (Description d'index [, Description d'index]... )
Dans ce code, les paramètres "Description d'index" correspondent à :
NomRubrique [ASC | DESC] [CI] [AI] [PI]
où :
  • ASC et DESC : permet de définir le sens du tri.
  • CI : permet d'indiquer que la case est ignorée.
  • AI : permet d'indiquer que les accents sont ignorés.
  • PI : permet d'indiquer que la ponctuation est ignorée.
Remarque : Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
Il est possible d'utiliser l'instruction CREATE INDEX sur une vue matérialisée. Dans ce cas, le paramètre NomTable correspond au nom d'une vue matérialisée. Si la vue est rafraîchie, les index sont mis à jour automatiquement : il n'est pas nécessaire de recréer les index.
Exemple : Création d'une vue matérialisée et en même temps d'une clé composée sur cette vue.
-- Création d'une vue matérialisée
CREATE MATERIALIZED VIEW MaVueMaterialisee AS
SELECT
Client.Departement, Client.Aff, Client.TypeAdherent, COUNT(*) AS Qte
FROM Client
WHERE Client.Solde>0 AND Client.Type=2
AND Client.Famille IN ('A', 'D', 'O')
GROUP BY Client.Departement, Client.Aff, Client.TypeAdherent;
--';' pour pouvoir mettre une autre instruction SQL après
--Avec une clé composée
CREATE INDEX clecomp ON MaVueMaterialisee (Departement ASC CI AI PI,
Aff ASC CI AI PI,TypeAdherent ASC)
DROP INDEX
L'instruction DROP INDEX permet de supprimer physiquement un index d'une table. Son format d'utilisation est le suivant :
DROP INDEX  [ IF EXISTS ] NomIndex ON NomTable
où IF EXISTS : permet de ne pas renvoyer d'erreur si l'index n'existe pas.
Remarque : Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
GRANT
Les requêtes de type GRANT permettent de donner des droits sur un serveur HFSQL. Cette instruction est équivalente à donner le droit hAutorisé à l'élément. Son format d'utilisation est le suivant :
  • Donner les droits demandés sur les tables spécifiées aux utilisateurs spécifiés :
    GRANT droit[, droit [, ... ]] ON [TABLE] table [, table [, ...]]  
    TO utilisateur [, utilisateur [, ...]]
  • Donner les droits demandés sur les bases spécifiées aux utilisateurs spécifiés.
    GRANT droit[, droit [, ... ]] ON DATABASE database [, database [, ...]]
    TO utilisateur [, utilisateur [, ...]]
  • Donner les droits demandés sur le serveur.
    GRANT droit[, droit [, ... ]]
    TO utilisateur [, utilisateur [, ...]]
Remarque :
  • Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
  • Ces requêtes ne peuvent pas êtres utilisées sur une base de données HFSQL Classic ni sur une base de données accédée par les Connecteurs natifs.
Droits disponibles
Les droits disponibles sont :
Droit SQLDroit HFSQL
INSERThDroitAjout
LOCKhDroitBlocage
MANAGE RIGHTShDroitChangeDroit
OWNERhDroitChangePropriétaire
MANAGE DUPLICATEhDroitGèreDoublon
SELECThDroitLecture
MAINTENANCEhDroitMaintenance
ALTERhDroitModifAuto
UPDATEhDroitModification
DELETEhDroitSuppression
DELETE FILEhDroitSuppressionFichier
REFERENCEShDroitChangeLiaison
CONNECThDroitConnexion
ENCRYPTED CONNECThDroitConnexionCryptée
CREATEhDroitCréationFichier
DEBUGhDroitDéboguer
RUN PROCEDUREhDroitExécutionProcédure
MANAGE REFERENCEShDroitGèreIntégrité
MANAGE PROCEDUREhDroitGestionProcédure
MANAGE TRIGGERhDroitGestionTrigger
FORBID ACCESShDroitInterditAccèsBaseDeDonnées
BACKUPhDroitSauvegarde
DELETE DATABASEhDroitSuppressionBDD
STOPhDroitArrêtServeur
CHANGE PASSWORDhDroitChangeMotDePasse
CREATE DATABASEhDroitCréationBDD
DISCONNECThDroitDéconnecteClient
SEND MESSAGEhDroitEnvoieMessageVersClient
MANAGE TASKhDroitGèreTâche
MANAGE SERVERhDroitGestionServeur
MANAGE USERhDroitGestionUtilisateur
READ LOGhDroitLectureLogStat
PRIORITYhDroitPriorité
REPLICATEhDroitRéplicationServeur
SEE USERhDroitVisualisationUtilisateur
REVOKE
Les requêtes de type REVOKE permettent de retirer des droits (passent les droits en hHérité) sur un serveur HFSQL). Son format d'utilisation est le suivant :
  • Mettre les droits demandés en hérité sur les tables spécifiées aux utilisateurs spécifiés.
    REVOKE droit[, droit [, ... ]] ON [TABLE] table [, table [, ...]]  
    FROM utilisateur [, utilisateur [, ...]]
  • Mettre les droits demandés en hérité sur les bases spécifiées aux utilisateurs spécifiés.
    REVOKE droit[, droit [, ... ]] ON DATABASE database [, database [, ...]]
    FROM utilisateur [, utilisateur [, ...]]
  • Mettre les droits demandés en hérité sur le serveur.
    REVOKE droit[, droit [, ... ]] FROM utilisateur [, utilisateur [, ...]]
Remarque
  • Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
  • Ces requêtes ne fonctionnent pas en HFSQL Classic ni via les Connecteurs Natifs.
Droits disponibles : Les droits disponibles sont identiques à la commande SQL GRANT. Vous trouverez le tableau des droits au niveau de la commande GRANT.
CREATE VIEW
L'instruction CREATE VIEW permet de créer une vue SQL. Les vues SQL sont assimilées à des fichiers temporaires en mémoire. Une vue SQL est généralement un extrait d'un fichier ou de plusieurs fichiers. Une vue peut à son tour être manipulée par une commande SELECT.
Pour plus de détails sur les vues SQL, consultez Vue SQL.
Son format d'utilisation est le suivant :
CREATE VIEW Vue [ ( Alias 1, Alias 2, ..., Alias N) ] AS RequêteSELECT
Dans cette syntaxe :
  • Vue est le nom de la vue.
  • Alias 1, Alias 2, Alias N représentent les noms d'alias donnés aux rubriques issues de la requête SELECT.
  • RequêteSELECT est la requête de type SELECT permettant de sélectionner les enregistrements présents dans la vue.
Exemple SQL : Création d'une vue SQL contenant uniquement la société, le nom et le téléphone des clients :
CREATE VIEW V_Clients
AS SELECT Société, Nom, Téléphone FROM Clients
DROP VIEW
La fonction DROP VIEW permet de supprimer une vue.
DROP VIEW [IF EXISTS] Vue 1 [, Vue 2, ...Vue N] [RESTRICT | CASCADE]
  • Si le mot-clé IF EXISTS est indiqué et que la vue (ou les vues) n'existe(nt) pas, un message d'erreur est généré.
  • Vue 1, Vue 2, ..., Vue N représentent la liste des vues à détruire.
  • Si le mot-clé RESTRICT est indiqué, la vue n'est pas supprimée dans le cas où celle-ci est en cours d'utilisation.
  • Si le mot-clé CASCADE est indiqué, la vue est supprimée ainsi que les vues dépendantes.
CREATE MATERIALIZED VIEW
Une vue matérialisée est une vue persistante : un fichier est créé sur disque avec le contenu de la vue. Cette vue pourra être manipulée plus tard par une autre application que celle qui l'a créée.
La fonction CREATE MATERIALIZED VIEW permet de créer une vue matérialisée.
CREATE MATERIALIZED VIEW Vue [ ( Alias 1, Alias 2, ...Alias N) ]
AS instruction SELECT [WITH [ NO ] DATA]
  • Le mot-clé WITH DATA crée une vue avec les données.
  • Le mot-clé WITH NO DATA crée une vue vide sans les données.
Remarque
  • Ce type de requête ne peut pas être créé avec l'assistant de l'éditeur de requêtes.
  • Ces requêtes ne peuvent pas fonctionner en HFSQL Classic ni avec les Connecteurs Natifs.
DROP MATERIALIZED VIEW
La fonction DROP MATERIALIZED VIEW permet de supprimer physiquement sur le disque une vue matérialisée.
DROP MATERIALIZED VIEW [IF EXISTS] Vue 1 [, Vue 2, ...Vue N] [RESTRICT | CASCADE]
  • Si le mot-clé IF EXISTS est indiqué et que la vue (ou les vues) n'existe(nt) pas, un message d'erreur est généré.
  • Vue 1, Vue 2, ..., Vue N représentent la liste des vues à détruire.
  • Si le mot-clé RESTRICT est indiqué, la vue n'est pas supprimée dans le cas où celle-ci est en cours d'utilisation.
  • Si le mot-clé CASCADE est indiqué, la vue est supprimée ainsi que les vues dépendantes.
REFRESH MATERIALIZED VIEW
La fonction REFRESH MATERIALIZED VIEW permet d'actualiser le contenu sur le disque d'une vue matérialisée. La vue est recalculée dans sa totalité.
REFRESH MATERIALIZED VIEW Vue [WITH [ NO ] DATA]
  • Le mot-clé WITH DATA actualise la vue avec les nouvelles données.
  • Le mot-clé WITH NO DATA actualise la vue vide sans les données.
OPTIMIZE TABLE
La fonction OPTIMIZE TABLE permet de réorganiser et réindexer un fichier de données et de reconstruire les index de ce fichier. Cette opération permet notamment d'améliorer les performances.
Cette fonction est équivalente à utiliser la fonction WLangage HRéindexe pour la réorganisation et réindexation d'un fichier de données.
OPTIMIZE TABLE NomFichier
NomFichier représente le nom du fichier à réorganiser.
Remarque :
  • Cette fonction est bloquante : le fichier de données n'est pas accessible durant l'exécution de la fonction. Il faut s'assurer que le fichier n'est pas en cours d'utilisation lors de l'appel de la fonction.
  • Cette fonction ne peut pas être utilisée avec les Connecteurs Natifs.
  • Par défaut, la réindexation effectuée correspond aux paramètres suivants : réindexation normale, réindexation des index full text, réindexation en tâche de fond, avec un taux de densité de 80%. Pour utiliser d'autres paramètres, utilisez la fonction HRéindexe.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Type Booléen manquant
Il manque le type booléen dans le tableau des types.
Exemple de rajout d'une rubrique à faux par défaut :

ALTER TABLE NomTable
ADD NomRubrique BOOLEAN DEFAULT 0
(false et true ne marchent pas, il faut bien écrire la valeur 0 ou 1)
Christophe
30 nov. 2022
UPDATE avec une autre table dans le SET
Comme ce cas n'est pas documenté (juste les syntaxes interdites...), ce qui fonctionne:

UPDATE TableA, TableB
SET TableA.valeur = TableB.valeur
WHERE TableA.id = TableB.id

pour setter les champs "valeur" de "TableA" avec "valeur" de "TableB" pour les enregistrements qui ont le même "id"
VincentRG
10 juin 2021
Valeur par défaut à NULL impossible
Il semblerait qu'en version 23

ALTER TABLE NomTable
ALTER [COLUMN] NomRubrique SET DEFAULT <valeur>

ne fonctionne pas pour affecter une valeur à NULL.
Phendel
12 avr. 2021

Dernière modification : 08/12/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale