Guide du langage SQL de Firebird 5.0 Alpha
Ce que contient ce document
Contributeurs
Remerciements
SQL Sous-ensembles
SQL Dialectes
Actions en cas d'erreurs
Informations de base: opérateurs, phrases, mots-clés
Règles relatives aux identificateurs réguliers
Règles relatives aux identificateurs délimités
Littéraux
Opérateurs et caractères spéciaux
Commentaires
SMALLINT
INTEGER
BIGINT
INT128
Format hexadécimal pour les entiers
FLOAT indiquant la précision
REAL
DOUBLE PRECISION
LONG FLOAT
Longueur des littéraux DECFLOAT
DECFLOAT et fonctions Utilisation des fonctions conventionnelles Fonctions spéciales pour `DECFLOAT
Sémantique de la comparaison
Support dans les applications clients
NUMERIC
DECIMAL
Précision des opérations arithmétiques
DATE
TIME
TIMESTAMP
Obtention d'un fuseau horaire de session
Sémantique régionale TIME WITH TIME ZONE
Litérals de date et d'heure
Opérations utilisant les valeurs de date et d'heure
Table virtuelle RDB$TIME_ZONES
Procédure RDB$TIME_ZONE_UTIL.TRANSITIONS()
Mise à jour de la base de données des fuseaux horaires
Unicode
Jeu de caractères du client
Jeux de caractères spéciaux
Recherche indépendante de la casse
Séquences de tri pour UTF-8
Indexation des types de caractères
BINARY
CHAR
VARBINARY
VARCHAR
NCHAR
Opérateur IS
Exemples BOOLEAN
Utilisation de booléens avec d'autres types de données
Sous-types BLOB
Caractéristiques des BLOB
Spécifier des limites explicites pour les mesures
Ajout de mesures supplémentaires Utilisation des tableaux
Type de données SQL_NULL
Conversion en domaine
Conversion en type de colonne
Transformations permises pour la fonction CAST
Conversion de chaînes de caractères en date et heure
Conversion de type implicite pendant la concaténation
Attributs du domaine
Remplacer les propriétés du domaine
Création de domaines
Changement de domaine
Suppression de domaines
Utilisation des domaines dans les déclarations
Utilisation de TYPE OF COLUMN dans les déclarations
Syntaxe des types de données BLOB
Syntaxe des tableaux
Alternatives pour les apostrophes dans les littéraux de chaînes de caractères
Syntaxe d'introduction pour les littéraux de chaînes de caractères
Plage de valeurs hexadécimales
Les littéraux logiques
Préséance des opérateurs
Opérateur de concaténation
Opérateurs arithmétiques
Opérateurs de comparaison
Opérateurs logiques
AT
NEXT VALUE FOR
Recherche CASE
Les expressions qui reviennent NULL
NULL dans les expressions logiques
Sous-requêtes liées
Sous-requêtes retournant un résultat scalaire
Imbrications
Prédicats de comparaison
BETWEEN
Utiliser un caractère d'échappement dans une phrase ESCAPE Exemples d'utilisation du prédicat LIKE
STARTING WITH
CONTAINING
Symboles
Modèles
Classes de caractères
Classes de caractères prédéfinies
Quantificateurs
Le terme OR
Sous-expressions
Caractère spécial d'échappement
Création d'expressions régulières
IS DISTINCT FROM
Logique IS [NOT]
IS [NOT] NULL
EXISTS
IN
SINGULAR
ALL
ANY et SOME
Language de définition des données (DDL)
Utilisation d'alias de base de données
Création d'une base de données sur un serveur distant
Paramètres facultatifs CREATE DATABASE
Dialecte de la base de données
Qui peut créer une base de données ?
Exemples
Ajout d'un fichier secondaire
Modification du chemin et du nom du fichier delta
Mise en mode "copie sécurisée" de la base de données
Modifier le jeu de caractères par défaut
Modification des privilèges d'exécution par défaut
LINGER
Cryptage des bases de données
Gestion de la réplication
Qui peut faire un `ALTER DATABASE' ?
Qui peut supprimer la base de données ?
Modes AUTO et MANUAL.
Paramètres facultatifs CREATE SHADOW.
Qui peut créer une copie fantôme ?
Qui peut supprimer la copie fantôme ?
Détails pour un type spécifique
Qui peut créer un domaine ?
Qui peut changer le domaine ?
Qui peut supprimer un domaine ?
TABLE
Colonnes de caractères Restriction NOT NULL Valeur par défaut Colonnes basées sur un domaine
Colonnes d'identité (auto-incrémentation)
Champs calculés
Colonnes de type tableau
Clé primaire (PRIMARY KEY)
NULL dans les clés uniques
Actions clés externes
Contrainte CHECK
Privilèges d'exécution
Qui peut créer un table ?
Séparateur de ligne
Exemples d'utilisation de tables externes
Compteur de format
la commande ADD
La commande DROP
La commande DROP CONSTRAINT
La commande DROP SQL SECURITY
Renommer la colonne
Changer le type de colonne
Modification de la position de la colonne
Définition et suppression de la valeur par défaut
Définition et suppression d'une restriction NOT NULL
Modification des colonnes d'identité
Modification des colonnes calculées
Attributs qui ne sont pas modifiables
La commande ALTER SQL SECURITY
Qui peut changer la table ?
Qui peut supprimer la table ?
Indices uniques
Direction de l'indice
Indices calculés ou indices par expression
Limitations sur la longueur de la chaîne indexée
Nombre maximum d'index par table
Qui peut créer un index ?
Utilisation de ALTER INDEX pour les index de restriction
Qui peut faire un `ALTER INDEX' ?
Qui peut supprimer l'index ?
Sélectivité de l'indice
Qui peut mettre à jour les statistiques ?
Vues modifiables
WITH CHECK OPTIONS
Droits d'exécution
Qui peut créer une vue ? Exemples
Qui peut changer une vue ?
Qui peut supprimer une vue ?
Corps du trigger
Charactère de fin de commande
format de déclaration
Statut du trigger
Phase
Événements
Ordre d'opération
Déclaration des variables locales, des curseurs et des sous-routines
Triggers externes
Qui peut créer un déclencheur DML ?
Exécution de déclencheurs d'événements de base de données et traitement des exceptions
Désactiver les triggers
Confirmation de la transaction en deux phases
Avertissements
Qui peut créer des déclencheurs pour les événements de la base de données ?
L'espace des noms DDL_TRIGGER
Supprimer un déclencheur
Qui peut créer des triggers pour les événements de changement de métadonnées ?
Modifications autorisées
Qui peut changer les déclencheurs ?
Paramètres d'entrée
Paramètres de sortie
Utilisation de domaines lors de la déclaration de paramètres
Utilisation d'un type de colonne lors de la déclaration des paramètres
Droits et privilèges d'exécution
Déclaration des variables locales, des curseurs et des sous-programmes
Procédures stockées externes
Qui peut créer une procédure stockée ?
Qui peut modifier une procédure stockée ?
Qui peut supprimer une procédure stockée ?
Opérateur de terminaison
Utilisation du type de colonne lors de la déclaration des paramètres
Valeur de retour
Fonctions déterministes
Fonctions externes
Qui peut créer une fonction ?
Qui peut modifier une fonction ?
Qui peut supprimer une fonction ?
Qui peut créer un package ?
Qui peut supprimer l'en-tête d'un package ?
Qui peut créer un corps de package ?
Qui peut supprimer le corps d'un package ?
Qui peut déclarer une fonction externe ?
Qui peut modifier une fonction externe ?
Qui peut supprimer une fonction externe ?
Définition des sous-types
Paramètres DECLARE FILTER
Qui peut créer un filtre BLOB ?
Qui peut supprimer un filtre BLOB ?
Qui peut créer une séquence ?
Qui peut modifier la séquence ?
Qui peut supprimer un générateur ?
Qui peut changer la valeur du générateur ?
Qui peut créer une exception ?
Qui peut modifier une exception ?
Qui peut supprimer une exception ?
Attributs spécifiques
Qui peut créer un tri ?
Qui peut supprimer le tri ?
Caractéristiques d'utilisation
Exemples d'instructions SELECT avec différents types de champs
Sélection à partir d'une procédure stockée sélective
Échantillonnage à partir d'une table dérivée (derived table)
Tableaux de dérivés latéraux
Échantillonnage à partir d'expressions de tables communes (CTE)
Connexions internes (INNER) et externes (OUTER)
Connexions par colonnes nommées
Connexions naturels (NATURAL JOIN)
Connexions implicites
Mélange de connexion explicite et implicite
Connexion croisée (CROSS JOIN)
Noms de champs ambigus dans les sélections
Connexions aux procédures stockées
Connexions aux tables dérivées LATERAL.
WHERE
HAVING
WINDOW
Des plans simples
Plans composites
UNION
Direction du tri
Ordre de comparaison
Localisation NULL
Tri des éléments par UNION
Caractéristiques lors de l'utilisation de `ROWS' avec un seul argument
Caractéristiques lors de l'utilisation de ROWS avec deux arguments
Remplacé par FIRST .. SKIP
Utilisation combinée de `FIRST .. SKIP " et " ROWS ".
Utilisation de ROWS dans UNION.
Exemples d'utilisation de "OFFSET" et "FETCH".
FOR UPDATE [OF]
Utilisation de la clause FOR UPDATE
Comment le serveur fonctionne avec WITH LOCK
Précautions à prendre lors de l'utilisation WITH LOCK Exemples d'utilisation du blocage explicite
INTO
CTE récursive
Mot clé DEFAULT
INSERT .. SELECT
INSERT .. DEFAULT VALUES
Directive OVERRIDING
RETURNING Insertion de colonnes BLOB
Utilisation d'un alias
PLAN
ORDER BY et ROWS
Mise à jour des colonnes BLOB
RETURNING
WHEN MATCHED
WHEN NOT MATCHED [BY TARGET]
WHEN NOT MATCHED BY SOURCE
Exemples RETURNING
"Procédures stockées" exécutables
Paramètres d'entrée et de sortie
instruction de terminaison
DML Instructions de paramètres
Transactions
En-tête du module
Privilèges d'exécution de code PSQL
Corps du module PSQL
Corps externe du module
Avantages des procédures stockées
Procédures stockées en cours
Procédures stockées sélectives
Création d'une procédure stockée
Modification d'une procédure stockée
Suppression d'une procédure stockée
Création d'une fonction stockée
Modification d'une fonction stockée
Suppression d'une fonction stockée
Blocs PSQL
Les avantages des paquets
Création d'un paquet
Modification du paquet
Suppression d'un paquet
Ordre de fonctionnement
Options de déclenchement
Nouvelles et anciennes variables de contexte
Déclencheurs sur les événements de la base de données
Variables disponibles dans l'espace de noms DDL_TRIGGER
Création d'un déclencheur
Changer le déclencheur
Supprimer le déclencheur
Instruction d'assignation
Types de données pour les variables
Restriction NOT NULL
Clauses CHARACTER SET et COLLATE
Initialisation d'une variable
Exemples de déclarations de variables locales
Curseurs unidirectionnels et de défilement
Caractéristiques de l'utilisation du curseur
Exemples d'utilisation d'un curseur nommé
DECLARE PROCEDURE
DECLARE FUNCTION
Exemples BEGIN .? END
Exemples IF
Exemples WHILE .? DO
BREAK
Exemples LEAVE
Exemples CONTINUE
EXIT
Exemples SUSPEND
Exemples EXECUTE STATEMENT configuré
WITH {AUTONOMOUS | COMMON} TRANSACTION
WITH CALLER PRIVILEGES
Caractéristiques des connexions externes
Caractéristiques du pool de transactions (Transaction pooling)
Caractéristiques du traitement des exceptions
Autres commentaires
AS USER, PASSWORD et ROLE
Précautions à prendre
Curseur nommé
Exemples en utilisant FOR SELECT
Exemples `FOR EXECUTE STATEMENT
Exemples OPEN
Exemples FETCH
Exemples CLOSE
Exemples IN AUTONOMOUS TRANSACTION
Exemples POST_EVENT
Exemples RETURN
Exceptions du système
Exceptions personnalisées
EXCEPTION Exemples EXCEPTION
Champ d'action de l'Instruction WHEN .? DO
Exemples d'utilisation WHEN.?DO
Espace de nommage SYSTEM
Espace de nommage DDL_TRIGGER
RDB$SET_CONTEXT()
ABS()
ACOS()
ACOSH()
ASIN()
ASINH()
ATAN()
ATAN2()
ATANH()
CEIL(), CEILING()
COS()
COSH()
COT()
EXP()
FLOOR()
LN()
LOG()
LOG10()
MOD()
PI()
POWER()
RAND()
Exemple ROUND
SIGN()
SIN()
SINH()
SQRT()
TAN()
TANH()
TRUNC()
ASCII_CHAR()
ASCII_VAL()
Exemple BASE64_DECODE
Exemple BASE64_ENCODE
Exemple BIT_LENGTH
CHAR_LENGTH(), CHARACTER_LENGTH()
Exemple HASH
Exemple HEX_DECODE
Exemple HEX_ENCODE
LEFT()
Exemple LOWER
Exemple LPAD
Exemple OCTET_LENGTH
Exemple OVERLAY
Exemple POSITION
Exemple REPLACE
Exemple REVERSE
RIGHT()
Exemple RPAD
Position SUBSTRING SUBSTRING par une expression régulière
Exemple TRIM
Exemple UNICODE_CHAR
Exemple UNICODE_VAL
Exemple UPPER
Exemple DATEADD
Exemple DATEDIFF
EXTRACT()
Exemple FIRST_DAY
Exemple LAST_DAY
BLOB_APPEND()
COMPARE_DECFLOAT()
Exemple NORMALIZE_DECFLOAT
QUANTIZE()
TOTALORDER()
Exemple CRYPT_HASH
DECRYPT()
ENCRYPT()
RSA_PRIVATE()
RSA_PUBLIC()
RSA_ENCRYPT()
RSA_DECRYPT()
RSA_SIGN_HASH()
Fonctions de conversion de type
CAST()
BIN_AND()
BIN_NOT()
BIN_OR()
BIN_SHL()
BIN_SHR()
BIN_XOR()
Exemple CHAR_TO_UUID
Exemple GEN_UUID
Exemple UUID_TO_CHAR
Exemple GEN_ID
Exemple COALESCE
Exemple DECODE
Exemple IIF
Exemple MAXVALUE
Exemple MINVALUE
Exemple NULLIF
MAKE_DBKEY()
RDB$ERROR()
RDB$GET_TRANSACTION_CN()
RDB$ROLE_IN_USE()
RDB$SYSTEM_PRIVILEGE()
Fonction FILTER
Exemples AVG
Exemples COUNT
Exemples LIST
Exemples MAX
Exemples MIN
Exemples SUM
Exemples CORR
Exemples COVAR_POP
Exemples COVAR_SAMP
Exemples STDDEV_POP
Exemples STDDEV_SAMP
Exemples VAR_POP
Exemples VAR_SAMP
REGR_AVGX()
REGR_AVGY()
REGR_COUNT()
Exemples REGR_INTERCEPT
REGR_R2()
REGR_SLOPE()
REGR_SXX()
REGR_SXY()
REGR_SYY()
Fonctions agrégées
Partitionnement
Triage
Windows
Windows en ligne
Windows nommées
DENSE_RANK()
RANK()
PERCENT_RANK()
CUME_DIST()
NTILE()
ROW_NUMBER()
FIRST_VALUE()
LAG()
LAST_VALUE()
LEAD()
NTH_VALUE()
Fonctions agrégées dans une fonction Window
CURRENT_CONNECTION
CURRENT_DATE
CURRENT_ROLE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TRANSACTION
CURRENT_USER
DELETING
GDSCODE
INSERTING
LOCALTIME
LOCALTIMESTAMP
NEW
OLD
RESETTING
ROW_COUNT
SQLCODE
SQLSTATE
UPDATING
USER
Nom de la transaction
Mode d'accès
Mode NO WAIT
Niveau d'isolation SNAPSHOT TABLE STABILITY
RECORD_VERSION
READ CONSISTENCY Gestion des conflits de mise à jour
Niveau d'isolation READ COMMITTED
NO AUTO UNDO
IGNORE LIMBO
AUTO COMMIT
RESERVING
COMMIT
ROLLBACK TO SAVEPOINT
SAVEPOINT
RELEASE SAVEPOINT
Points de sauvegarde internes
Points de sauvegarde et PSQL
Sécurité
SYSDBA
Utilisateur SYSDBA dans POSIX
Utilisateur root dans POSIX
Caractéristiques de Windows
Propriétaire de la base de données
Fournir le rôle RDB$ADMIN dans une base de données conventionnelle
Utilisation du rôle RDB$ADMIN dans une base de données conventionnelle
Accorder le rôle RDB$ADMIN dans la base de données des utilisateurs.
Utilisation du rôle RDB$ADMIN dans la base de données des utilisateurs
Utiliser le rôle RDB$ADMIN dans gsec
Activez ou désactivez AUTO ADMIN MAPPING dans la base de données de sécurité.
Administrateurs
Qui peut créer un utilisateur
Exemples CREATE USER
Qui peut modifier un compte utilisateur ?
Exemples ALTER USER
Exemples CREATE OR ALTER USER
Qui peut supprimer un compte d'utilisateur ?
Exemples DROP USER
Exemples RECREATE USER
Obtention d'une liste d'utilisateurs
Le propriétaire de l'objet de la base de données
Rôles
Rôles avec des privilèges système
Qui peut créer un rôle
Exemples CREATE ROLE
ALTER ROLE
Qui peut supprimer un rôle
Exemples DROP ROLE
Clause TO
Utilisateur PUBLIC
Clause WITH GRANT OPTION
Clause GRANTED BY
Exemples de `GRANT <privilege>' pour les tables
Exemples d'octroi du privilège EXECUTE.
Exemples d'octroi du privilège USAGE.
Exemples de fourniture de privilèges DDL
Privilèges DDL pour la base de données
Exemples d'octroi de privilèges DDL sur une base de données
Accorder des droits aux privilèges du système
Exemples d'octroi de privilèges système
Clause WITH ADMIN OPTION
Exemples d'attribution de rôles
Clause FROM
Exemples de révocation de privilèges
Clause GRANT OPTION FOR
Révocation des privilèges à l'aide de l'option GRANT OPTION FOR.
Clause ADMIN OPTION FOR
Exemples d'inversion des rôles
Révocation de privilèges à l'aide de GRANTED BY
REVOKE ALL ON ALL
Qui peut créer une cartographie
Clause CREATE MAPPING
Qui peut modifier l'affichage
Clause ALTER MAPPING
Clause CREATE OR ALTER MAPPING
Qui peut retirer l'affichage
SET BIND
SET DECFLOAT ROUND
SET DECFLOAT TRAPS
SET STATEMENT TIMEOUT
SET SESSION IDLE TIMEOUT
ALTER EXTERNAL CONNECTIONS POOL SET SIZE
ALTER EXTERNAL CONNECTIONS POOL SET LIFETIME
ALTER EXTERNAL CONNECTIONS POOL CLEAR ALL
ALTER EXTERNAL CONNECTIONS POOL CLEAR OLDEST
SET ROLE
SET TRUSTED ROLE
SET TIME ZONE
ALTER SESSION RESET
Comment cela fonctionne
Note sur l'égalité
Codes d'erreur SQLSTATE et leurs descriptions
Les codes d'erreur GDSCODE, SQLCODE et leur description
Mots réservés
Mots clés
RDB$AUTH_MAPPING
RDB$BACKUP_HISTORY
RDB$CHARACTER_SETS
RDB$CHECK_CONSTRAINTS
RDB$COLLATIONS
RDB$CONFIG
RDB$DATABASE
RDB$DB_CREATORS
RDB$DEPENDENCIES
RDB$EXCEPTIONS
RDB$FIELD_DIMENSIONS
RDB$FIELDS
RDB$FILES
RDB$FILTERS
RDB$FORMATS
RDB$FUNCTION_ARGUMENTS
RDB$FUNCTIONS
RDB$GENERATORS
RDB$INDEX_SEGMENTS
RDB$INDICES
RDB$KEYWORDS
RDB$LOG_FILES
RDB$PACKAGES
RDB$PAGES
RDB$PROCEDURE_PARAMETERS
RDB$PROCEDURES
RDB$PUBLICATION_TABLES
RDB$PUBLICATIONS
RDB$REF_CONSTRAINTS
RDB$RELATION_CONSTRAINTS
RDB$RELATION_FIELDS
RDB$RELATIONS
RDB$ROLES
RDB$SECURITY_CLASSES
RDB$TIME_ZONES
RDB$TRANSACTIONS
RDB$TRIGGER_MESSAGES
RDB$TRIGGERS
RDB$TYPES
RDB$USER_PRIVILEGES
RDB$VIEW_RELATIONS
Utiliser les MON$ATTACHMENTS pour fermer les connexions
MON$CALL_STACK
MON$COMPILED_STATEMENTS
MON$CONTEXT_VARIABLES
MON$DATABASE
MON$IO_STATS
MON$MEMORY_USAGE
MON$RECORD_STATS
Utilisation de MON$STATEMENTS pour annuler des requêtes
MON$TABLE_STATS
MON$TRANSACTIONS
SEC$GLOBAL_AUTH_MAPPING
SEC$USERS
SEC$USER_ATTRIBUTES
Jeux de caractères et ordres de tri
Avis de licence
An unhandled error has occurred. Reload