• SQL的特性,各种数据库的支持


    To get a more in-depth comparison about some of the SQL features compared here, please visit Modern SQL

    FeatureOraclePostgresSQL ServerIBM DB2MySQLMariaDBFirebirdH2HSQLDBDerbySQLite
    Queries                      
    Window functions Yes Yes(*) Yes(*) Yes Yes(*) Yes(*) Yes(*) No No No Yes(*)
    Common Table Expressions Yes Yes Yes Yes Yes(*) Yes(*) Yes No Yes No Yes(*)
    CTE in a sub-query(*) Yes Yes No No Yes(*) No Yes No Yes No Yes
    Recursive Queries Yes Yes Yes Yes Yes(*) Yes Yes (Yes)(*) Yes No Yes(*)
    Row constructor(*) No Yes Yes(*) Yes No No No No Yes Yes Yes
    Filtered aggregates(*) No Yes(*) No No No No No No Yes No Yes(*)
    PIVOT Support Yes No(*) Yes No No No No No No No No
    GROUP BY .. ROLLUP Yes Yes(*) Yes Yes Yes Yes No No No Yes No
    GROUP BY .. GROUPING SETS(*) Yes Yes(*) Yes Yes No No No No No No No
    Temporal queries(*) Yes No Yes(*) Yes No Yes(*) No No No No No
    SELECT without a FROM clause No Yes Yes No (Yes)(*) (Yes)(*) No Yes Yes(*) No Yes
    Parallel queries(*) Yes Yes(*) Yes Yes No No No No No No No
    Aggregates for strings Yes(*) Yes Yes(*) Yes Yes Yes Yes Yes Yes No Yes
    Tuple comparison (Yes)(*) Yes No Yes Yes(*) Yes(*) No (Yes)(*) Yes No (Yes)(*)
    Tuple updates Yes Yes(*) No Yes No No No Yes Yes No Yes(*)
    UPDATE with a join No Yes Yes No Yes Yes No No No No No
    ANSI date literals(*) Yes Yes No Yes Yes Yes Yes Yes Yes No No
    Query variables(*) No No Yes No Yes Yes No Yes No No No
    UNNEST(*) No Yes No Yes No No No No Yes No No
    Regular Expressions Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Comparison based on RegEx(*) Yes Yes No No Yes Yes Yes Yes Yes No No
    Substring(*) Yes Yes No No Yes(*) Yes(*) Yes(*) No Yes No No
    Replace(*) Yes Yes No No Yes(*) Yes(*) No Yes Yes(*) No No
    Constraints Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Deferred constraints(*) Yes Yes No No No No No No No Yes(*) Yes
    Check constraints Yes Yes Yes Yes No Yes(*) Yes Yes Yes Yes Yes
    Check constraints with sub-query No No No No No No Yes No No No No
    Check constraints using custom functions(*) No Yes Yes Yes No No Yes No No No No(*)
    Exclusion constraints(*) No Yes No Yes(*) No No No No No No No
    Statement based constraint evaluation Yes Yes Yes Yes No No No Yes Yes Yes Yes
    ON DELETE CASCADE(*) Yes Yes (Yes)(*) Yes Yes Yes Yes Yes Yes Yes Yes
    ON UPDATE CASCADE(*) No Yes (Yes)(*) No Yes Yes Yes Yes Yes No Yes
    Indexing Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Partial index(*) Yes(*) Yes (Yes)(*) No No No No No No No Yes
    Descending Index(*) Yes Yes Yes Yes Yes(*) No (Yes)(*) Yes Yes No Yes
    Index on expression(*) Yes Yes (No)(*) (Yes)(*) (No)(*) (No)(*) (Yes)(*) No No No Yes(*)
    Index using a custom function(*) Yes Yes No Yes No No No No No No No(*)
    Index include columns(*) No Yes(*) Yes Yes No No No No No No No
    Clustered index(*) Yes(*) No Yes Yes Yes Yes No No No No Yes
    Duplicate NULL values in unique index(*) No(*) Yes No No Yes(*) Yes(*) No Yes Yes No Yes
    DML Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Writeable CTEs(*) No Yes(*) Yes(*) No No No No No No No No
    Multi-row INSERTs(*) No Yes Yes Yes Yes Yes No Yes Yes Yes Yes
    TRUNCATE table with FK(*) Yes(*) Yes No No No No No No No No No
    Read consistency during DML operations(*) Yes Yes Yes Yes No Yes(*) Yes Yes Yes Yes Yes
    Use target table in sub-queries(*) Yes Yes Yes Yes No No Yes Yes Yes Yes No(*)
    MERGE support(*) Yes Yes(*) Yes Yes Yes(*) Yes(*) Yes Yes Yes Yes(*) No
    SELECT .. FOR UPDATE NOWAIT(*) Yes Yes No(*) No Yes(*) No No No No No No
    RETURNING clause as a result set No Yes Yes No No No Yes No No No No
    Parallel DML(*) Yes No No No No No No No No No No
    Data Types(*) Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    User defined datatypes(*) Yes Yes No(*) Yes No No No No Yes No No
    Domains(*) No Yes (Yes)(*) No No No Yes Yes Yes No No
    Distinct types(*) No No No Yes No No No No No No No
    Arrays No Yes No No No No (Yes)(*) Yes Yes No No
    Enums(*) No Yes No No Yes Yes No No No No No
    IP address No Yes No No No No No No No No No
    BOOLEAN(*) No(*) Yes No(*) No(*) No(*) No(*) Yes(*) Yes Yes Yes No
    Interval Yes Yes No No No No No No Yes No No
    TIME(*) No Yes Yes Yes Yes Yes Yes Yes Yes No No
    DATE(*) No(*) Yes Yes Yes Yes Yes Yes Yes Yes Yes No
    TIMESTAMP(*) Yes Yes Yes(*) Yes Yes(*) Yes(*) Yes Yes Yes Yes No
    TIME ZONE Support(*) Yes Yes Yes(*) No No No No Yes Yes No No
    Range types(*) (No)(*) Yes No No No No No No No No No
    DDL Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Transactional DDL(*) No Yes Yes Yes No No Yes No No No Yes
    Computed columns(*) Yes No(*) Yes Yes Yes(*) Yes(*) Yes Yes Yes No No
    Functions as column default(*) (Yes)(*) Yes Yes No No Yes(*) Yes(*) Yes Yes(*) No (Yes)(*)
    Sequences Yes Yes Yes Yes No Yes(*) Yes Yes Yes Yes No
    Auto increment columns(*) Yes(*) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
    Synonyms Yes No Yes Yes No No No No Yes(*) Yes No
    Non-blocking index creation(*) Yes Yes Yes Yes No No No No No No No
    Partitioning Yes (Yes)(*) Yes Yes Yes Yes No No No No No
    Cascading DROP(*) Yes Yes No Yes No(*) No(*) No Yes Yes No No
    DDL Triggers(*) Yes Yes Yes No No No Yes(*) No No No No
    TRUNCATE Trigger(*) (No)(*) Yes No No No No No No No No No
    Custom name for PK constraint(*) Yes Yes Yes Yes No No Yes Yes Yes Yes Yes
    ALTER a table used in a view(*) Yes No(*) Yes Yes Yes Yes Yes Yes Yes Yes Yes
    Add table column at specific position(*) No No No No Yes Yes Yes Yes Yes No No
    Materialized views(*) Yes Yes Yes(*) Yes(*) No No No No No No No
    MVIEW with query rewrite(*) Yes No Yes No No No No No No No No
    Automatically updated MVIEWS(*) Yes No Yes Yes No No No No No No No
    Temporary Tables Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Permanent global temporary tables(*) Yes No No Yes No No Yes No Yes No No
    Global temporary tables(*) No No Yes No No No No Yes No No No
    Session local temporary tables(*) No Yes Yes No Yes Yes No Yes Yes No Yes
    Use a temporary table twice in a single query Yes Yes Yes Yes No No Yes Yes Yes No(*) Yes
    Programming Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Stored procedures(*) Yes Yes(*) Yes Yes Yes Yes Yes No Yes No(*) No(*)
    Table functions(*) Yes Yes Yes Yes No No Yes No Yes No No(*)
    Custom aggregates(*) Yes Yes No(*) No No No No No Yes No No
    Function overloading(*) Yes(*) Yes No Yes No No No No Yes No No
    User defined operators(*) No(*) Yes No No No No No No No No No
    Statement level triggers(*) Yes Yes Yes Yes No No No No(*) Yes Yes No
    Row level triggers(*) Yes Yes No Yes Yes Yes Yes No(*) Yes Yes Yes
    RETURNING clause in a programming language(*) Yes Yes Yes No No No Yes No No No No
    Before triggers(*) Yes Yes (No)(*) Yes Yes Yes Yes No(*) Yes Yes Yes
    Dynamic SQL in functions(*) Yes Yes No(*) Yes No No Yes No No No No
    Dynamic SQL in triggers(*) Yes Yes Yes No No No Yes No No No No
    Delete triggers fired by cascading deletes(*) Yes Yes Yes Yes No No Yes No Yes Yes Yes(*)
    Built-in scheduler Yes No Yes Yes Yes Yes No No No No No
    Views Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Updateable Views Yes Yes Yes Yes Yes Yes Yes No Yes No No
    WITH CHECK OPTION(*) Yes Yes Yes Yes Yes Yes Yes No Yes No No
    Triggers on views Yes Yes Yes Yes No No Yes No Yes No Yes
    Views with derived tables(*) Yes Yes Yes Yes No No Yes Yes Yes Yes Yes
    JOINs and Operators Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    CROSS JOIN Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
    FULL OUTER JOIN Yes Yes Yes Yes No No Yes No Yes Yes No
    LATERAL JOIN Yes(*) Yes (Yes)(*) Yes No No No No Yes No No
    JOIN ... USING (...)(*) Yes Yes No No Yes Yes Yes No Yes Yes Yes
    JOINs using tuple comparison(*) Yes Yes No Yes Yes Yes No Yes Yes No No
    INTERSECT (Yes)(*) Yes (Yes)(*) Yes No Yes(*) No (Yes)(*) Yes Yes (Yes)(*)
    EXCEPT (Yes)(*) Yes (Yes)(*) Yes No Yes(*) No (Yes)(*) Yes Yes (Yes)(*)
    ORDER BY ... NULLS LAST Yes Yes No Yes No No Yes Yes Yes Yes No
    IS DISTINCT FROM No Yes No (Yes)(*) Yes(*) Yes(*) Yes No Yes No No
    BETWEEN SYMMETRIC No Yes No No No No No No Yes No No
    OVERLAPS(*) (Yes)(*) Yes No Yes(*) No No No No Yes No No(*)
    Other Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    Catalogs ("databases") (Yes)(*) (Yes)(*) Yes No Yes Yes (Yes)(*) Yes Yes No Yes
    Schemas Yes Yes Yes Yes No No No Yes Yes Yes No
    INFORMATION_SCHEMA(*) No Yes Yes No Yes Yes No Yes Yes No No
    NoSQL Features Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    XML Support(*) Yes Yes Yes Yes Yes Yes No No No No No
    XPath(*) Yes Yes Yes Yes Yes Yes No No No No No
    XQuery Yes No Yes Yes No No No No No No No
    JSON(*) Yes(*) Yes Yes(*) (Yes)(*) Yes(*) Yes(*) No No No No(*) Yes(*)
    Indexes on JSON documents(*) Yes Yes(*) (Yes)(*) Yes (No)(*) No(*) No No No No (Yes)(*)
    Key/Value storage No Yes No No No(*) No No No(*) No No No
    Security Oracle Postgres SQL Server IBM DB2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
    User groups / Roles Yes Yes Yes Yes Yes(*) Yes(*) Yes Yes Yes Yes No
    Row level security(*) Yes Yes(*) Yes Yes No No No No No No No
    Grant on column level(*) Yes Yes Yes Yes Yes Yes Yes No Yes No No
  • 相关阅读:
    Spring Cloud 企业云服务架构common-service代码分析
    Spring Cloud云服务架构代码结构构建
    配置环境真是复杂的事情
    一起来关注c11 吧!!!
    utubu
    今天开放了这个居然
    编译linux程序,unistd.h vc的处理
    postgres 设置密码
    提供各种开源软件编译服务的想法
    CSS基础
  • 原文地址:https://www.cnblogs.com/liuwd/p/10904387.html
Copyright © 2020-2023  润新知