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

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 {.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 {.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 {.text-success}
F221 Valores predeterminados explícitos No{.text-danger}
F261 Expresión CASE {.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 {.text-success}
F481 Predicado NULL expandido {.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 {.text-success}