mysql和postgres的比较(待续)

本文对比了MySQL与PostgreSQL在表结构调整方面的不同之处,包括列的添加与删除、权限管理等方面的差异。此外还介绍了两者在数据插入方式上的区别。
1.  postgres不支持列顺序重排,除非重建表;而mysql可以说alter table mytable add column after column。
2. 删除列是,postgres其实是把这个列隐藏了,并没有真正删除,而mysql能真正删除。此外,mysql还提供optimize table,repair table和analyze table等工具分析和改善数据表的存储状况。
The DROP COLUMN form does not physically remove the column, but simply makes it invisible to SQL operations. Subsequent insert and update operations in the table will store a null value for the column. Thus, dropping a column is quick but it will not immediately reduce the on-disk size of your table, as the space occupied by the dropped column is not reclaimed. The space will be reclaimed over time as existing rows are updated
3. mysql的权限精确到数据表中的每个列,而postgres只能精确到表或者同级别的视图、函数、触发器等。
You can restrict access to individual columns of a table for a particular user or group by denying them direct access to it, and creating a view containing only the columns they should see for them to use instead. If your users need to update the data, you can create rules to apply updates to the view to the base table instead.
4. mysql支持同时插入多条纪录:insert into table values (), (), ();,为了避免重复插入主键相同的纪录还可以用replace into。而postgres只能插入一条,如果要插入多条纪录,可以使用COPY语句。至于mysql的replace和insert ... on duplicate key update等扩展的语法,可以用postgres的触发器来实现。

以后添加更多的比较
### MySQL PostgreSQL 的基本概念 #### MySQL 基本概念 MySQL 是一种关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来管理操作数据。MySQL以其快速、可靠易于使用的特性著称,在Web应用程序开发中广泛应用,尤其是在LAMP(Linux, Apache, MySQL, PHP/Python/Perl)栈环境中。 #### PostgreSQL 基本概念 PostgreSQL 同样是一种开源的关系型数据库系统,强调标准兼容性高级功能的支持。相比其他RDBMS,PostgreSQL提供了更为丰富的SQL标准实现以及多种编程接口,并且内置了对复杂事务处理的支持,适用于构建大型企业级应用服务平台[^1]。 ### 主要差异 #### 性能表现 对于不同的应用场景,两者表现出不同优势。当面对轻量化需求或是简化管理的任务时,MySQL往往能够提供更优的选择;而对于涉及大量复杂查询或承受高并发访问压力的情况,则PostgreSQL通常会成为更好的解决方案。 #### 扩展能力 - **PostgreSQL**: 支持像Citus这样的扩展工具来进行分布式SQL处理。 - **MySQL**: 凭借其成熟的分片策略及集群架构设计,在应对互联网领域内海量用户的横向扩容方面展现出较高的灵活性[^2]。 #### SQL 特性支持程度 就SQL特性的覆盖范围而言,PostgreSQL明显优于MySQL——前者几乎完全遵循ANSI/ISO的标准定义,后者则仅部分实现了这些规范,比如缺乏对公共表表达式的直接支持(即`WITH`子句)[^3]。 #### 数据操纵语句的安全考量 在执行更新(`UPDATE`)或删除(`DELETE`)操作时,如果涉及到左外联结(`LEFT JOIN`)的方式,应当谨慎行事,因为这可能导致实际影响到超出预期数量的数据记录。这种情况下,建议先明确业务逻辑再做决定[^4]。 ```sql -- 示例:安全地使用 UPDATE 配合 LEFT JOIN (假设为 MySQL) UPDATE orders o JOIN customers c ON o.customer_id = c.id SET o.status = 'processed' WHERE c.country = 'USA'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值