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哪个更好些?(作为平时学习之用)的主要内容,如果未能解决你的问题,请参考以下文章
ORM 的哪些选择允许在“轻按开关”之间更改 RDBMS...SQL Server/SQL Azure 和 PostgreSQL/“云”PostgreSQL
TransactionScope:具有不同数据库连接的嵌套事务(SQL Server 和 Postgresql)