ClickHouse/docs/fr/sql-reference/ansi.md
2020-10-13 20:23:29 +03:00

181 lines
65 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
machine_translated: true
machine_translated_rev: ad252bbb4f7e2899c448eb42ecc39ff195c8faa1
toc_priority: 40
toc_title: "La Compatibilit\xE9 ANSI"
---
# Compatibilité ANSI SQL du dialecte CLICKHOUSE SQL {#ansi-sql-compatibility-of-clickhouse-sql-dialect}
!!! 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 {#differences-in-behaviour}
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-status}
| 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} | |