mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
63 KiB
63 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | ad252bbb4f |
40 | Compatibilidad con ANSI |
Compatibilidad de SQL ANSI de ClickHouse SQL Dialect
!!! note "Nota" Este artículo se basa en la Tabla 38, “Feature taxonomy and definition for mandatory features”, Annex F of ISO/IEC CD 9075-2:2013.
Diferencias en el comportamiento
En la tabla siguiente se enumeran los casos en que la característica de consulta funciona en ClickHouse, pero no se comporta como se especifica en ANSI SQL.
Feature ID | Nombre de la función | Diferencia |
---|---|---|
E011 | Tipos de datos numéricos | El literal numérico con punto se interpreta como aproximado (Float64 ) en lugar de exacta (Decimal ) |
E051-05 | Los elementos seleccionados pueden ser renombrados | Los cambios de nombre de los elementos tienen un alcance de visibilidad más amplio que solo el resultado SELECT |
E141-01 | Restricciones NOT NULL | NOT NULL está implícito para las columnas de tabla de forma predeterminada |
E011-04 | Operadores aritméticos | ClickHouse se desborda en lugar de la aritmética comprobada y cambia el tipo de datos de resultado en función de las reglas personalizadas |
Estado de la función
Feature ID | Nombre de la función | Estatus | Comentario |
---|---|---|---|
E011 | Tipos de datos numéricos | Parcial{.text-warning} | |
E011-01 | Tipos de datos INTEGER y SMALLINT | Sí{.text-success} | |
E011-02 | REAL, DOUBLE PRECISION y FLOAT tipos de datos tipos de datos | Parcial{.text-warning} | FLOAT(<binary_precision>) , REAL y DOUBLE PRECISION no son compatibles |
E011-03 | Tipos de datos DECIMAL y NUMERIC | Parcial{.text-warning} | Solo DECIMAL(p,s) es compatible, no NUMERIC |
E011-04 | Operadores aritméticos | Sí{.text-success} | |
E011-05 | Comparación numérica | Sí{.text-success} | |
E011-06 | Conversión implícita entre los tipos de datos numéricos | No{.text-danger} | ANSI SQL permite la conversión implícita arbitraria entre tipos numéricos, mientras que ClickHouse se basa en funciones que tienen múltiples sobrecargas en lugar de conversión implícita |
E021 | Tipos de cadena de caracteres | Parcial{.text-warning} | |
E021-01 | Tipo de datos CHARACTER | No{.text-danger} | |
E021-02 | Tipo de datos CHARACTER VARYING | No{.text-danger} | String se comporta de manera similar, pero sin límite de longitud entre paréntesis |
E021-03 | Literales de caracteres | Parcial{.text-warning} | Sin concatenación automática de literales consecutivos y compatibilidad con el conjunto de caracteres |
E021-04 | Función CHARACTER_LENGTH | Parcial{.text-warning} | No USING clausula |
E021-05 | Función OCTET_LENGTH | No{.text-danger} | LENGTH se comporta de manera similar |
E021-06 | SUBSTRING | Parcial{.text-warning} | No hay soporte para SIMILAR y ESCAPE cláusulas, no SUBSTRING_REGEX variante |
E021-07 | Concatenación de caracteres | Parcial{.text-warning} | No COLLATE clausula |
E021-08 | Funciones SUPERIOR e INFERIOR | Sí{.text-success} | |
E021-09 | Función TRIM | Sí{.text-success} | |
E021-10 | Conversión implícita entre los tipos de cadena de caracteres de longitud fija y longitud variable | No{.text-danger} | ANSI SQL permite la conversión implícita arbitraria entre tipos de cadena, mientras que ClickHouse se basa en funciones que tienen múltiples sobrecargas en lugar de conversión implícita |
E021-11 | Función POSITION | Parcial{.text-warning} | No hay soporte para IN y USING cláusulas, no POSITION_REGEX variante |
E021-12 | Comparación de caracteres | Sí{.text-success} | |
E031 | Identificador | Parcial{.text-warning} | |
E031-01 | Identificadores delimitados | Parcial{.text-warning} | El soporte literal Unicode es limitado |
E031-02 | Identificadores de minúsculas | Sí{.text-success} | |
E031-03 | Trailing subrayado | Sí{.text-success} | |
E051 | Especificación básica de la consulta | Parcial{.text-warning} | |
E051-01 | SELECT DISTINCT | Sí{.text-success} | |
E051-02 | Cláusula GROUP BY | Sí{.text-success} | |
E051-04 | GROUP BY puede contener columnas que no estén en <select list> |
Sí{.text-success} | |
E051-05 | Los elementos seleccionados pueden ser renombrados | Sí{.text-success} | |
E051-06 | Cláusula HAVING | Sí{.text-success} | |
E051-07 | Calificado * en la lista de selección | Sí{.text-success} | |
E051-08 | Nombre de correlación en la cláusula FROM | Sí{.text-success} | |
E051-09 | Cambiar el nombre de las columnas en la cláusula FROM | No{.text-danger} | |
E061 | Predicados básicos y condiciones de búsqueda | Parcial{.text-warning} | |
E061-01 | Predicado de comparación | Sí{.text-success} | |
E061-02 | ENTRE predicado | Parcial{.text-warning} | No SYMMETRIC y ASYMMETRIC clausula |
E061-03 | Predicado IN con lista de valores | Sí{.text-success} | |
E061-04 | COMO predicado | Sí{.text-success} | |
E061-05 | Predicado LIKE: cláusula ESCAPE | No{.text-danger} | |
E061-06 | Predicado NULL | Sí{.text-success} | |
E061-07 | Predicado de comparación cuantificado | No{.text-danger} | |
E061-08 | Predicado EXISTS | No{.text-danger} | |
E061-09 | Subconsultas en predicado de comparación | Sí{.text-success} | |
E061-11 | Subconsultas en el predicado IN | Sí{.text-success} | |
E061-12 | Subconsultas en predicado de comparación cuantificado | No{.text-danger} | |
E061-13 | Subconsultas correlacionadas | No{.text-danger} | |
E061-14 | Condición de búsqueda | Sí{.text-success} | |
E071 | Expresiones de consulta básicas | Parcial{.text-warning} | |
E071-01 | Operador de tabla UNION DISTINCT | No{.text-danger} | |
E071-02 | Operador de tabla UNION ALL | Sí{.text-success} | |
E071-03 | EXCEPTO operador de tabla DISTINCT | No{.text-danger} | |
E071-05 | Las columnas combinadas a través de operadores de tabla no necesitan tener exactamente el mismo tipo de datos | Sí{.text-success} | |
E071-06 | Operadores de tabla en subconsultas | Sí{.text-success} | |
E081 | Privilegios básicos | Parcial{.text-warning} | Trabajo en curso |
E091 | Establecer funciones | Sí{.text-success} | |
E091-01 | AVG | Sí{.text-success} | |
E091-02 | COUNT | Sí{.text-success} | |
E091-03 | MAX | Sí{.text-success} | |
E091-04 | MIN | Sí{.text-success} | |
E091-05 | SUM | Sí{.text-success} | |
E091-06 | Cuantificador ALL | No{.text-danger} | |
E091-07 | Cuantificador DISTINCT | Parcial{.text-warning} | No se admiten todas las funciones agregadas |
E101 | Manipulación de datos básicos | Parcial{.text-warning} | |
E101-01 | Instrucción INSERT | Sí{.text-success} | Nota: la clave principal en ClickHouse no implica el UNIQUE limitación |
E101-03 | Instrucción UPDATE buscada | No{.text-danger} | Hay una ALTER UPDATE declaración para la modificación de datos por lotes |
E101-04 | Instrucción DELETE buscada | No{.text-danger} | Hay una ALTER DELETE declaración para la eliminación de datos por lotes |
E111 | Instrucción SELECT de una sola fila | No{.text-danger} | |
E121 | Soporte básico del cursor | No{.text-danger} | |
E121-01 | DECLARE CURSOR | No{.text-danger} | |
E121-02 | Las columnas PEDIR POR no necesitan estar en la lista de selección | No{.text-danger} | |
E121-03 | Expresiones de valor en la cláusula ORDER BY | No{.text-danger} | |
E121-04 | Declaración ABIERTA | No{.text-danger} | |
E121-06 | Instrucción UPDATE posicionada | No{.text-danger} | |
E121-07 | Instrucción DELETE posicionada | No{.text-danger} | |
E121-08 | Declaración CERRAR | No{.text-danger} | |
E121-10 | Declaración FETCH: implícita NEXT | No{.text-danger} | |
E121-17 | CON Cursores HOLD | No{.text-danger} | |
E131 | Soporte de valor nulo (nulos en lugar de valores) | Parcial{.text-warning} | Se aplican algunas restricciones |
E141 | Restricciones de integridad básicas | Parcial{.text-warning} | |
E141-01 | Restricciones NOT NULL | Sí{.text-success} | Nota: NOT NULL está implícito para las columnas de tabla de forma predeterminada |
E141-02 | Restricción UNIQUE de columnas NOT NULL | No{.text-danger} | |
E141-03 | Restricciones PRIMARY KEY | No{.text-danger} | |
E141-04 | Restricción básica FOREIGN KEY con el valor predeterminado NO ACTION para la acción de eliminación referencial y la acción de actualización referencial | No{.text-danger} | |
E141-06 | Restricción CHECK | Sí{.text-success} | |
E141-07 | Valores predeterminados de columna | Sí{.text-success} | |
E141-08 | NO NULL inferido en CLAVE PRIMARIA | Sí{.text-success} | |
E141-10 | Los nombres de una clave externa se pueden especificar en cualquier orden | No{.text-danger} | |
E151 | Soporte de transacciones | No{.text-danger} | |
E151-01 | Declaración COMMIT | No{.text-danger} | |
E151-02 | Instrucción ROLLBACK | No{.text-danger} | |
E152 | Instrucción SET TRANSACTION básica | No{.text-danger} | |
E152-01 | Instrucción SET TRANSACTION: cláusula ISOLATION LEVEL SERIALIZABLE | No{.text-danger} | |
E152-02 | Instrucción SET TRANSACTION: cláusulas READ ONLY y READ WRITE | No{.text-danger} | |
E153 | Consultas actualizables con subconsultas | No{.text-danger} | |
E161 | Comentarios SQL usando doble menos inicial | Sí{.text-success} | |
E171 | Soporte SQLSTATE | No{.text-danger} | |
E182 | Enlace de idioma de host | No{.text-danger} | |
F031 | Manipulación básica del esquema | Parcial{.text-warning} | |
F031-01 | Instrucción CREATE TABLE para crear tablas base persistentes | Parcial{.text-warning} | No SYSTEM VERSIONING , ON COMMIT , GLOBAL , LOCAL , PRESERVE , DELETE , REF IS , WITH OPTIONS , UNDER , LIKE , PERIOD FOR cláusulas y sin soporte para tipos de datos resueltos por el usuario |
F031-02 | Instrucción CREATE VIEW | Parcial{.text-warning} | No RECURSIVE , CHECK , UNDER , WITH OPTIONS cláusulas y sin soporte para tipos de datos resueltos por el usuario |
F031-03 | Declaración GRANT | Sí{.text-success} | |
F031-04 | Sentencia ALTER TABLE: cláusula ADD COLUMN | Parcial{.text-warning} | No hay soporte para GENERATED cláusula y período de tiempo del sistema |
F031-13 | Instrucción DROP TABLE: cláusula RESTRICT | No{.text-danger} | |
F031-16 | Instrucción DROP VIEW: cláusula RESTRICT | No{.text-danger} | |
F031-19 | Declaración REVOKE: cláusula RESTRICT | No{.text-danger} | |
F041 | Tabla unida básica | Parcial{.text-warning} | |
F041-01 | Unión interna (pero no necesariamente la palabra clave INNER) | Sí{.text-success} | |
F041-02 | Palabra clave INTERNA | Sí{.text-success} | |
F041-03 | LEFT OUTER JOIN | Sí{.text-success} | |
F041-04 | RIGHT OUTER JOIN | Sí{.text-success} | |
F041-05 | Las uniones externas se pueden anidar | Sí{.text-success} | |
F041-07 | La tabla interna en una combinación externa izquierda o derecha también se puede usar en una combinación interna | Sí{.text-success} | |
F041-08 | Todos los operadores de comparación son compatibles (en lugar de solo =) | No{.text-danger} | |
F051 | Fecha y hora básicas | Parcial{.text-warning} | |
F051-01 | Tipo de datos DATE (incluido el soporte del literal DATE) | Parcial{.text-warning} | No literal |
F051-02 | Tipo de datos TIME (incluido el soporte del literal TIME) con una precisión de segundos fraccionarios de al menos 0 | No{.text-danger} | |
F051-03 | Tipo de datos TIMESTAMP (incluido el soporte del literal TIMESTAMP) con una precisión de segundos fraccionarios de al menos 0 y 6 | No{.text-danger} | DateTime64 tiempo proporciona una funcionalidad similar |
F051-04 | Predicado de comparación en los tipos de datos DATE, TIME y TIMESTAMP | Parcial{.text-warning} | Sólo un tipo de datos disponible |
F051-05 | CAST explícito entre tipos de fecha y hora y tipos de cadena de caracteres | Sí{.text-success} | |
F051-06 | CURRENT_DATE | No{.text-danger} | today() es similar |
F051-07 | LOCALTIME | No{.text-danger} | now() es similar |
F051-08 | LOCALTIMESTAMP | No{.text-danger} | |
F081 | UNIÓN y EXCEPTO en vistas | Parcial{.text-warning} | |
F131 | Operaciones agrupadas | Parcial{.text-warning} | |
F131-01 | Cláusulas WHERE, GROUP BY y HAVING admitidas en consultas con vistas agrupadas | Sí{.text-success} | |
F131-02 | Múltiples tablas admitidas en consultas con vistas agrupadas | Sí{.text-success} | |
F131-03 | Establecer funciones admitidas en consultas con vistas agrupadas | Sí{.text-success} | |
F131-04 | Subconsultas con cláusulas GROUP BY y HAVING y vistas agrupadas | Sí{.text-success} | |
F131-05 | SELECCIONAR una sola fila con cláusulas GROUP BY y HAVING y vistas agrupadas | No{.text-danger} | |
F181 | Múltiples módulos de apoyo | No{.text-danger} | |
F201 | Función de fundición | Sí{.text-success} | |
F221 | Valores predeterminados explícitos | No{.text-danger} | |
F261 | Expresión CASE | Sí{.text-success} | |
F261-01 | Caso simple | Sí{.text-success} | |
F261-02 | CASO buscado | Sí{.text-success} | |
F261-03 | NULLIF | Sí{.text-success} | |
F261-04 | COALESCE | Sí{.text-success} | |
F311 | Instrucción de definición de esquema | Parcial{.text-warning} | |
F311-01 | CREATE SCHEMA | No{.text-danger} | |
F311-02 | CREATE TABLE para tablas base persistentes | Sí{.text-success} | |
F311-03 | CREATE VIEW | Sí{.text-success} | |
F311-04 | CREATE VIEW: WITH CHECK OPTION | No{.text-danger} | |
F311-05 | Declaración GRANT | Sí{.text-success} | |
F471 | Valores escalares de la subconsulta | Sí{.text-success} | |
F481 | Predicado NULL expandido | Sí{.text-success} | |
F812 | Marcado básico | No{.text-danger} | |
T321 | Rutinas básicas invocadas por SQL | No{.text-danger} | |
T321-01 | Funciones definidas por el usuario sin sobrecarga | No{.text-danger} | |
T321-02 | Procedimientos almacenados definidos por el usuario sin sobrecarga | No{.text-danger} | |
T321-03 | Invocación de función | No{.text-danger} | |
T321-04 | Declaración de LLAMADA | No{.text-danger} | |
T321-05 | Declaración DEVOLUCIÓN | No{.text-danger} | |
T631 | Predicado IN con un elemento de lista | Sí{.text-success} |