PostgreSQL 和SQL Server哪个更好些?(作为平时学习之用)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL 和SQL Server哪个更好些?(作为平时学习之用)相关的知识,希望对你有一定的参考价值。

如果只是学习用,MSSQL自带的企业管理器、Management 感觉容易一些!也很方便!
POSTGRESQL使用PGADMIN 管理,麻烦一点!POSTGRESQL在windows下稳定性不够!在LINUX下则极稳定!如果在WINDOWS下自学还是MSSQL吧追问

最后这连个我都装了,因为我学的相关教材这两个都要用。PostgreSQL最近几个版本改进非常大,当时开发的初衷只用作研究,没考虑到实用性,后来在实用性上下了很大功夫,并且是开源的。顺便问问,SQL Server和Oracle现在哪个用得最广?我听老师说Oracle在性能上要比SQL Server强。

参考技术A 感觉sqlserver会好一些,而且比较简单、比较大众化、应用也更广泛一些。来自:求助得到的回答 参考技术A

如何将此编码从 SQL Server 更改为在 PostgreSQL [关闭]

【中文标题】如何将此编码从 SQL Server 更改为在 PostgreSQL [关闭]【英文标题】:How to change this coding from SQL Server to be in PostgreSQL [closed] 【发布时间】:2020-10-25 01:30:02 【问题描述】:

此查询使用 Microsoft SQL Server Management Studio 成功运行,但我无法在 PostgreSQL 中使用它。我想要一个类似的查询来使用 PostgreSQL 给出相同的结果 请注意:这将在包含 1 个初级和 2 个高级的表上运行。 如果我有更多的大三和大四,我也想使用这个查询

DECLARE @Budget Int = 50000, @Seniors int = 0, @Juniors int = 0, @SeniorSalary int = 20000, @juniorSalary int = 10000
WHILE @Budget >= @juniorSalary
BEGIN
IF @Budget >= @SeniorSalary
BEGIN
SET @Budget = @Budget - @SeniorSalary;
SET @Seniors = @Seniors + 1;
END
ELSE IF @Budget >= @juniorSalary
BEGIN
SET @Budget = @Budget - @juniorSalary;
SET @Juniors = @Juniors + 1;
END
END
SELECT @Seniors AS [Seniors], @Juniors as [Juniors], @Budget As [RemainingBudget]

【问题讨论】:

我会先修复你的 T-SQL,这意味着摆脱 WHILE。 SQL 不是一种编程语言,它是一种查询语言;将其视为查询语言并使用基于集合的方法。 这不是免费的代码编写或数据库迁移服务。你试过什么?您在哪里遇到问题? PostgreSQL中不能使用"WHILE"和"DECLARE"的问题 为什么你首先要使用WHILE "这将在包含 1 个初级和 2 个高级的表上运行。" - 您的示例中没有表 【参考方案1】:

您的第一个错误是假设某些东西在 SQL Server 中运行,它将 Postgres(或任何其他 DBMS)来自那个的所有流。此外,它不是查询而是脚本,psql 脚本的结构与 T-sql 脚本完全不同。我建议您花大量时间学习一些 Postgres 教程,例如 command line tutorial 和 PostgreSQLTutorial 和/或其他或 !gasp! 旧技术 - 一本书。

我很欣赏有时一个概念问题,比如期望 T-Sql 脚本在 Postgres 中运行。因此,我提供以下内容作为一次性演示,为您指明正确的方向。它是您脚本的 Postgres 翻译,当然不是唯一的,也可能不是最好的。

我把它的描述留给你研究。

create or replace 
function developer_budget
       ( budget       integer  
       , seniorsalary integer
       , juniorsalary integer
       )
 returns table ( seniors    integer 
               , juniors    integer
               , remaining  integer 
               )
 language plpgsql 
as $$ 
declare
  seniors   integer  = 0;
  juniors   integer  = 0;
begin 
   while budget >= juniorsalary
   loop
      if budget >= seniorsalary then
         budget = budget - seniorsalary;
         seniors = seniors + 1;
      elsif budget >= juniorsalary then
         budget = budget - juniorsalary;
         juniors = juniors + 1;
      end if;
   end loop;

   return query select seniors,juniors, budget;
end;
$$;

select seniors   "Seniors"  
     , juniors   "Juniors"  
     , remaining "Remaining bubjet"
  from developer_budget( Budget       => 50000  
                       , SeniorSalary => 20000 
                       , JuniorSalary => 10000
                       );  

【讨论】:

以上是关于PostgreSQL 和SQL Server哪个更好些?(作为平时学习之用)的主要内容,如果未能解决你的问题,请参考以下文章

两个 PostgreSQL 索引中哪个更高效?

ORM 的哪些选择允许在“轻按开关”之间更改 RDBMS...SQL Server/SQL Azure 和 PostgreSQL/“云”PostgreSQL

在 PostgreSql 中批量更新或删除哪个更高效?

TransactionScope:具有不同数据库连接的嵌套事务(SQL Server 和 Postgresql)

如何在 Node.JS 应用程序中同时支持 PostgreSQL 和 SQL Server?

除了mysql 和 sql server, 你还有另外一种选择 postgreSQL