ClickHouse/docs/fr/sql-reference/ansi.md
2020-12-12 10:59:34 +09:00

66 KiB

machine_translated machine_translated_rev toc_priority toc_title
true ad252bbb4f 40 La Compatibilité ANSI

Compatibilité ANSI SQL du dialecte CLICKHOUSE SQL

!!! note "Note" Cet article s'appuie sur le tableau 38, “Feature taxonomy and definition for mandatory features”, Annex F of ISO/IEC CD 9075-2:2013.

Différences de comportement

Le tableau suivant répertorie les cas où la fonctionnalité de requête fonctionne dans ClickHouse, mais ne se comporte pas comme spécifié dans ANSI SQL.

Feature ID Nom De La Fonctionnalité Différence
E011 Types de données numériques Le littéral numérique avec période est interprété comme approximatif (Float64) au lieu de exact (Decimal)
E051-05 Les éléments sélectionnés peuvent être renommés Les renommages d'élément ont une portée de visibilité plus large que le simple résultat de sélection
E141-01 Contraintes non nulles NOT NULL est implicite pour les colonnes de table par défaut
E011-04 Opérateurs arithmétiques Clickhouse déborde au lieu de l'arithmétique vérifiée et modifie le type de données de résultat en fonction des règles personnalisées

Fonction D'État

Feature ID Nom De La Fonctionnalité Statut Commentaire
E011 Types de données numériques Partiel{.text-warning}
E011-01 Types de données INTEGER et SMALLINT Oui {.text-success}
E011-02 Types de données réel, double précision et flottant types de données Partiel {.text-warning} FLOAT(<binary_precision>), REAL et DOUBLE PRECISION ne sont pas pris en charge
E011-03 Types de données décimales et numériques Partiel {.text-warning} Seulement DECIMAL(p,s) est pris en charge, pas NUMERIC
E011-04 Opérateurs arithmétiques Oui {.text-success}
E011-05 Comparaison numérique Oui {.text-success}
E011-06 Casting implicite parmi les types de données numériques Aucun {.text-danger} ANSI SQL permet la distribution implicite arbitraire entre les types numériques, tandis que ClickHouse repose sur des fonctions ayant plusieurs surcharges au lieu de la distribution implicite
E021 Types de chaînes de caractères Partiel{.text-warning}
E021-01 Type de données CARACTÈRE Aucun {.text-danger}
E021-02 TYPE DE DONNÉES variable de caractère Aucun {.text-danger} String se comporte de la même manière, mais sans limite de longueur entre parenthèses
E021-03 Littéraux de caractères Partiel {.text-warning} Aucune concaténation automatique de littéraux consécutifs et prise en charge du jeu de caractères
E021-04 Fonction CHARACTER_LENGTH Partiel {.text-warning} Aucun USING clause
E021-05 Fonction OCTET_LENGTH Aucun {.text-danger} LENGTH se comporte de la même façon
E021-06 SUBSTRING Partiel {.text-warning} Pas de support pour SIMILAR et ESCAPE clauses, pas de SUBSTRING_REGEX variante
E021-07 Concaténation de caractères Partiel {.text-warning} Aucun COLLATE clause
E021-08 Fonctions supérieures et inférieures Oui {.text-success}
E021-09 La fonction TRIM Oui {.text-success}
E021-10 Conversion implicite entre les types de chaînes de caractères de longueur fixe et de longueur variable Aucun {.text-danger} ANSI SQL permet la distribution implicite arbitraire entre les types de chaîne, tandis que ClickHouse repose sur des fonctions ayant plusieurs surcharges au lieu de la distribution implicite
E021-11 La POSITION de la fonction Partiel {.text-warning} Pas de support pour IN et USING clauses, pas de POSITION_REGEX variante
E021-12 Comparaison de caractères Oui {.text-success}
E031 Identificateur Partiel{.text-warning}
E031-01 Identificateurs délimités Partiel {.text-warning} Le support littéral Unicode est limité
E031-02 Identificateurs minuscules Oui {.text-success}
E031-03 Fuite de soulignement Oui {.text-success}
E051 Spécification de requête de base Partiel{.text-warning}
E051-01 SELECT DISTINCT Oui {.text-success}
E051-02 Groupe par clause Oui {.text-success}
E051-04 GROUP BY peut contenir des colonnes <select list> Oui {.text-success}
E051-05 Les éléments sélectionnés peuvent être renommés Oui {.text-success}
E051-06 Clause HAVING Oui {.text-success}
E051-07 Qualifié * dans la liste select Oui {.text-success}
E051-08 Nom de corrélation dans la clause FROM Oui {.text-success}
E051-09 Renommer les colonnes de la clause FROM Aucun {.text-danger}
E061 Prédicats de base et conditions de recherche Partiel{.text-warning}
E061-01 Prédicat de comparaison Oui {.text-success}
E061-02 Entre prédicat Partiel {.text-warning} Aucun SYMMETRIC et ASYMMETRIC clause
E061-03 Dans le prédicat avec la liste des valeurs Oui {.text-success}
E061-04 Comme prédicat Oui {.text-success}
E061-05 Comme prédicat: clause D'échappement Aucun {.text-danger}
E061-06 Prédicat NULL Oui {.text-success}
E061-07 Prédicat de comparaison quantifié Aucun {.text-danger}
E061-08 Existe prédicat Aucun {.text-danger}
E061-09 Sous-requêtes dans le prédicat de comparaison Oui {.text-success}
E061-11 Sous-requêtes dans dans le prédicat Oui {.text-success}
E061-12 Sous-requêtes dans le prédicat de comparaison quantifiée Aucun {.text-danger}
E061-13 Sous-requêtes corrélées Aucun {.text-danger}
E061-14 Condition de recherche Oui {.text-success}
E071 Expressions de requête de base Partiel{.text-warning}
E071-01 Opérateur de table distinct UNION Aucun {.text-danger}
E071-02 Opérateur de table UNION ALL Oui {.text-success}
E071-03 Sauf opérateur de table DISTINCT Aucun {.text-danger}
E071-05 Les colonnes combinées via les opérateurs de table n'ont pas besoin d'avoir exactement le même type de données Oui {.text-success}
E071-06 Tableau des opérateurs dans les sous-requêtes Oui {.text-success}
E081 Les privilèges de base Partiel{.text-warning} Les travaux en cours
E091 Les fonctions de jeu Oui{.text-success}
E091-01 AVG Oui {.text-success}
E091-02 COUNT Oui {.text-success}
E091-03 MAX Oui {.text-success}
E091-04 MIN Oui {.text-success}
E091-05 SUM Oui {.text-success}
E091-06 TOUS les quantificateurs Aucun {.text-danger}
E091-07 Quantificateur DISTINCT Partiel {.text-warning} Toutes les fonctions d'agrégation ne sont pas prises en charge
E101 Manipulation des données de base Partiel{.text-warning}
E101-01 Insérer une déclaration Oui {.text-success} Remarque: la clé primaire dans ClickHouse n'implique pas UNIQUE contrainte
E101-03 Déclaration de mise à jour recherchée Aucun {.text-danger} Il y a un ALTER UPDATE déclaration pour la modification des données de lot
E101-04 Requête de suppression recherchée Aucun {.text-danger} Il y a un ALTER DELETE déclaration pour la suppression de données par lots
E111 Instruction SELECT à une ligne Aucun{.text-danger}
E121 Prise en charge du curseur de base Aucun{.text-danger}
E121-01 DECLARE CURSOR Aucun {.text-danger}
E121-02 Les colonnes ORDER BY n'ont pas besoin d'être dans la liste select Aucun {.text-danger}
E121-03 Expressions de valeur dans la clause ORDER BY Aucun {.text-danger}
E121-04 Instruction OPEN Aucun {.text-danger}
E121-06 Déclaration de mise à jour positionnée Aucun {.text-danger}
E121-07 Instruction de suppression positionnée Aucun {.text-danger}
E121-08 Déclaration de fermeture Aucun {.text-danger}
E121-10 Instruction FETCH: implicite suivant Aucun {.text-danger}
E121-17 Avec curseurs HOLD Aucun {.text-danger}
E131 Support de valeur Null (nulls au lieu de valeurs) Partiel{.text-warning} Certaines restrictions s'appliquent
E141 Contraintes d'intégrité de base Partiel{.text-warning}
E141-01 Contraintes non nulles Oui {.text-success} Note: NOT NULL est implicite pour les colonnes de table par défaut
E141-02 Contrainte UNIQUE de colonnes non nulles Aucun {.text-danger}
E141-03 Contraintes de clé primaire Aucun {.text-danger}
E141-04 Contrainte de clé étrangère de base avec la valeur par défaut NO ACTION Pour l'action de suppression référentielle et l'action de mise à jour référentielle Aucun {.text-danger}
E141-06 Vérifier la contrainte Oui {.text-success}
E141-07 Colonne par défaut Oui {.text-success}
E141-08 Non NULL déduit sur la clé primaire Oui {.text-success}
E141-10 Les noms dans une clé étrangère peut être spécifié dans n'importe quel ordre Aucun {.text-danger}
E151 Support de Transaction Aucun{.text-danger}
E151-01 COMMIT déclaration Aucun {.text-danger}
E151-02 Déclaration de restauration Aucun {.text-danger}
E152 Instruction de transaction set de base Aucun{.text-danger}
E152-01 SET TRANSACTION statement: clause sérialisable de niveau D'isolement Aucun {.text-danger}
E152-02 SET TRANSACTION statement: clauses en lecture seule et en lecture écriture Aucun {.text-danger}
E153 Requêtes pouvant être mises à jour avec des sous requêtes Aucun{.text-danger}
E161 Commentaires SQL en utilisant le premier Double moins Oui{.text-success}
E171 Support SQLSTATE Aucun{.text-danger}
E182 Liaison du langage hôte Aucun{.text-danger}
F031 Manipulation de schéma de base Partiel{.text-warning}
F031-01 Instruction CREATE TABLE pour créer des tables de base persistantes Partiel {.text-warning} Aucun SYSTEM VERSIONING, ON COMMIT, GLOBAL, LOCAL, PRESERVE, DELETE, REF IS, WITH OPTIONS, UNDER, LIKE, PERIOD FOR clauses et aucun support pour les types de données résolus par l'utilisateur
F031-02 Instruction créer une vue Partiel {.text-warning} Aucun RECURSIVE, CHECK, UNDER, WITH OPTIONS clauses et aucun support pour les types de données résolus par l'utilisateur
F031-03 Déclaration de subvention Oui {.text-success}
F031-04 ALTER TABLE statement: ajouter une clause de colonne Partiel {.text-warning} Pas de support pour GENERATED clause et période de temps du système
F031-13 Instruction DROP TABLE: clause RESTRICT Aucun {.text-danger}
F031-16 Instruction DROP VIEW: clause RESTRICT Aucun {.text-danger}
F031-19 REVOKE statement: clause RESTRICT Aucun {.text-danger}
F041 Table jointe de base Partiel{.text-warning}
F041-01 INNER join (mais pas nécessairement le mot-clé INNER) Oui {.text-success}
F041-02 INTÉRIEURE mot-clé Oui {.text-success}
F041-03 LEFT OUTER JOIN Oui {.text-success}
F041-04 RIGHT OUTER JOIN Oui {.text-success}
F041-05 Les jointures externes peuvent être imbriqués Oui {.text-success}
F041-07 La table intérieure dans une jointure extérieure gauche ou droite peut également être utilisée dans une jointure intérieure Oui {.text-success}
F041-08 Tous les opérateurs de comparaison sont pris en charge (plutôt que juste =) Aucun {.text-danger}
F051 Date et heure de base Partiel{.text-warning}
F051-01 Type de données de DATE (y compris la prise en charge du littéral de DATE) Partiel {.text-warning} Aucun littéral
F051-02 TYPE DE DONNÉES DE TEMPS (y compris la prise en charge du littéral de temps) avec une précision de secondes fractionnaires d'au moins 0 Aucun {.text-danger}
F051-03 Type de données D'horodatage (y compris la prise en charge du littéral D'horodatage) avec une précision de secondes fractionnaires d'au moins 0 et 6 Aucun {.text-danger} DateTime64 temps fournit des fonctionnalités similaires
F051-04 Prédicat de comparaison sur les types de données DATE, heure et horodatage Partiel {.text-warning} Un seul type de données disponible
F051-05 Distribution explicite entre les types datetime et les types de chaînes de caractères Oui {.text-success}
F051-06 CURRENT_DATE Aucun {.text-danger} today() est similaire
F051-07 LOCALTIME Aucun {.text-danger} now() est similaire
F051-08 LOCALTIMESTAMP Aucun {.text-danger}
F081 UNION et sauf dans les vues Partiel{.text-warning}
F131 Groupées des opérations Partiel{.text-warning}
F131-01 WHERE, GROUP BY et ayant des clauses prises en charge dans les requêtes avec des vues groupées Oui {.text-success}
F131-02 Plusieurs tables prises en charge dans les requêtes avec des vues groupées Oui {.text-success}
F131-03 Définir les fonctions prises en charge dans les requêtes groupées vues Oui {.text-success}
F131-04 Sous requêtes avec des clauses GROUP BY et HAVING et des vues groupées Oui {.text-success}
F131-05 Sélectionnez une seule ligne avec des clauses GROUP BY et HAVING et des vues groupées Aucun {.text-danger}
F181 Support de module Multiple Aucun{.text-danger}
F201 Fonction de distribution Oui{.text-success}
F221 Valeurs par défaut explicites Aucun{.text-danger}
F261 Expression de cas Oui{.text-success}
F261-01 Cas Simple Oui {.text-success}
F261-02 Cas recherché Oui {.text-success}
F261-03 NULLIF Oui {.text-success}
F261-04 COALESCE Oui {.text-success}
F311 Déclaration de définition de schéma Partiel{.text-warning}
F311-01 CREATE SCHEMA Aucun {.text-danger}
F311-02 Créer une TABLE pour les tables de base persistantes Oui {.text-success}
F311-03 CREATE VIEW Oui {.text-success}
F311-04 CREATE VIEW: WITH CHECK OPTION Aucun {.text-danger}
F311-05 Déclaration de subvention Oui {.text-success}
F471 Valeurs de sous-requête scalaire Oui{.text-success}
F481 Prédicat null étendu Oui{.text-success}
F812 Base de repérage Aucun{.text-danger}
T321 Routines SQL-invoked de base Aucun{.text-danger}
T321-01 Fonctions définies par l'utilisateur sans surcharge Aucun {.text-danger}
T321-02 Procédures stockées définies par l'utilisateur sans surcharge Aucun {.text-danger}
T321-03 L'invocation de la fonction Aucun {.text-danger}
T321-04 L'instruction d'APPEL de Aucun {.text-danger}
T321-05 Déclaration de retour Aucun {.text-danger}
T631 Dans le prédicat avec un élément de liste Oui{.text-success}