MySQL 与 PostgreSQL 关键对比二(SQL语法)

目录

1 详细示例

1.1自动增量列

1.2 字符串连接

1.3 JSON 支持

2 总结


MySQL 和 PostgreSQL 是两种流行的开源关系数据库管理系统(RDBMS)。尽管它们在许多方面相似,但在 SQL 语法和功能上存在一些显著差异。

以下SQL语句的执行如果需要开发工具支持,可以尝试使用SQLynx或Navicat来执行。

以下是 MySQL 和 PostgreSQL 在 SQL 方面的主要差异的对比表:

类别MySQLPostgreSQL
数值类型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINTSMALLINT, INTEGER, BIGINT
日期和时间类型DATE, DATETIME, TIMESTAMP, TIME, YEARDATE, TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL
字符串类型CHAR, VARCHAR, TEXT, BLOBCHAR, VARCHAR, TEXT, BYTEA
自动增量列AUTO_INCREMENTSERIAL, BIGSERIAL
字符串连接CONCAT()`
公共表表达式(CTE)从 8.0 版本开始支持长期支持
JSON 支持从 5.7 版本开始支持 JSON 类型和函数从 9.2 版本开始支持 JSON,从 9.4 版本开始支持 JSONB,提供丰富的操作函数和操作符
索引类型B-tree, Full-text, Hash(仅限 MEMORY 引擎)B-tree, Hash, GiST, SP-GiST, GIN, BRIN,多种索引类型,允许创建自定义索引
并发控制默认使用 InnoDB 引擎,支持行级锁和 MVCC原生支持 MVCC,高效的并发控制
存储过程和函数使用 DELIMITER 命令定义存储过程使用 CREATE FUNCTIONPL/pgSQL 定义存储过程
高可用性和集群支持主从复制、组复制和 InnoDB 集群支持物理和逻辑复制,提供 pgpool-IIPatroni 等工具实现高可用性和自动故障转移

1 详细示例

1.1自动增量列
  • MySQL:

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100)
    );
    

  • PostgreSQL:

    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100)
    );
    

1.2 字符串连接
  • MySQL:

    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
    

  • PostgreSQL:

    SELECT first_name || ' ' || last_name AS full_name FROM users;
    

1.3 JSON 支持
  • MySQL:

    CREATE TABLE users (
        id INT PRIMARY KEY,
        data JSON
    );
    
    SELECT JSON_EXTRACT(data, '$.name') FROM users;
    

  • PostgreSQL:

    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        data JSONB
    );
    
    SELECT data->>'name' FROM users;
    

2 总结

选择 MySQL 还是 PostgreSQL 取决于具体的需求和应用场景。MySQL 通常更适用于简单的 Web 应用和频繁读取的场景,而 PostgreSQL 则因其强大的功能和高扩展性更适用于复杂查询和大数据处理的场景。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chat2tomorrow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值