SQL为什么不允许使用语法@i=100;为变量赋值;?

SQL为什么不允许使用语法@i=100;为变量赋值;?,sql,sql-server,tsql,Sql,Sql Server,Tsql,与编程语言不同,SQL不允许使用以下语法为变量赋值,我们必须使用SET或SELECT: SQL不允许这样做有什么特别的原因吗 谢谢为什么任何语言都使用它使用的语法 维护约定、防止歧义和简化解析 请注意,正确称为赋值语句的SET语句的语法与UPDATE语句的SET子句中的语法相似: UPDATE mytable SET somecolumn = 100; SQL不是一种编程语言 我不能说我知道原因。然而,这可能与SQL的预期用途有关。也就是说,处理数据。谁处理大量数据?商人。因此,语言使用了更多

与编程语言不同,SQL不允许使用以下语法为变量赋值,我们必须使用SET或SELECT:

SQL不允许这样做有什么特别的原因吗


谢谢

为什么任何语言都使用它使用的语法

维护约定、防止歧义和简化解析

请注意,正确称为赋值语句的SET语句的语法与UPDATE语句的SET子句中的语法相似:

UPDATE mytable SET somecolumn = 100;

SQL不是一种编程语言


我不能说我知道原因。然而,这可能与SQL的预期用途有关。也就是说,处理数据。谁处理大量数据?商人。因此,语言使用了更多的单词和更少的符号。将VisualBasic的风格与C++比较。

< P>你不妨说,为什么我不能在C?< /P >中这样做?
SELECT * FROM MyArray[]
为什么我必须反复使用Console.WriteLine?这只是一组数据,我希望一次性看到

声明变量后,将其初始化为NULL。使用SET语句为声明的变量分配一个非空值


他说。我不记得必须使用。

这些变量是Transact-SQL的一部分,而不是SQL标准


SQL不是为编写过程性代码而设计的,因此它对集合操作以外的任何操作的支持基本上都固定在专有扩展中。

为什么变量名的开头需要@?帮助解析命令

SET或SELECT有助于区分赋值和比较,这正是TSQL的设计方式

使用:


我相信他们故意这么做只是为了惹恼您。

我想到的第一个原因是SQL使用“=”符号作为值的设置来比较两个值。这意味着它需要不同的语法来区分值的比较和设置。在其他一些编程中,使用“=”-符号和“=”-符号设置和比较值是有区别的。 例如,在SQL中:

SET @a = 100 --To set the value of @a.
if (@a = 100) -- To compare the value of @a.
例如,在C中:

a = 100; //To set the value of a.
if (a == 100) //To compare the value of a.

SQL不是编程语言[需要引证]究竟是什么让一种语言成为编程语言而另一种语言不是编程语言?SQL被视为4G编程语言;Java/C/etc被认为是3G。SQL的评级更高,因为它更接近自然的英语语法,还有一些我在学校忘记的东西…@Bill Karwin,这取决于你们对“是”的定义是什么;SQL由两部分组成:数据操作语言和数据定义语言。这取决于你想如何分割头发@OMG小马整个3G/4G的一个问题是G代表一代。因此,将4G的另一个含义(即不是语言类型的第四次迭代,而是将其称为“评级”)放在首位是有问题的。4GL是一个专门用于工作领域的语言术语,为程序员提供了更大的抽象性。4GL距离机器更远,距离域更近。领域特定语言(DSL)是类似概念的较新术语。4GL这个术语直到1982年才流行起来,但SQL和一些早期语言确实符合它的定义。Givem PL/SQL语法类似于Ada,这并不奇怪……另外MySQL也只对系统级变量使用SET关键字,我想象PostgreSQL与Oracle相似…从MyArray select中的项开始item@John桑德斯:你不必那么做-+一个可能的答案。SET是ANSI SQL thoughWait吗?你的意思是不是故意惹我生气,而是其他人?!?!?
SELECT @i=100,@a=200,@c=300  --for multiple assignements, which is
                             --faster than the equivalent multiple SET commands
SET @a = 100 --To set the value of @a.
if (@a = 100) -- To compare the value of @a.
a = 100; //To set the value of a.
if (a == 100) //To compare the value of a.