mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-11 08:52:06 +00:00
65 KiB
65 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} |