SQL 算术运算符

2023-12-13 18:05:03

SQL Server中的存储过程

什么是存储过程?

存储过程是一段预先编写好的 SQL 代码,可以保存在数据库中以供反复使用。它允许将一系列 SQL 语句组合成一个逻辑单元,并为其分配一个名称,以便在需要时调用执行。存储过程可以接受参数,使其更加灵活和通用。

存储过程语法

创建存储过程的语法如下:

CREATE?PROCEDURE?存储过程名称
AS
SQL语句
GO;

执行存储过程的语法如下:

EXEC?存储过程名称;

演示数据库

以下是 Northwind 示例数据库中 "Customers" 表的部分内容:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbk?pChristina BerglundBerguvsv?gen 8Lule?S-958 22Sweden

存储过程示例

以下 SQL 语句创建了一个名为 "SelectAllCustomers" 的存储过程,用于从 "Customers" 表中选择所有记录:

CREATE?PROCEDURE?SelectAllCustomers
AS
SELECT?*?FROM?Customers
GO;

执行上述存储过程的方法如下:

EXEC?SelectAllCustomers;

带有一个参数的存储过程

以下 SQL 语句创建了一个存储过程,该过程从 "Customers" 表中选择特定城市的客户:

CREATE?PROCEDURE?SelectAllCustomers?@City?nvarchar(30)
AS
SELECT?*?FROM?Customers?WHERE?City?=?@City
GO;

执行上述存储过程的方法如下:

EXEC?SelectAllCustomers?@City?=?'London';

带有多个参数的存储过程

设置多个参数非常简单。只需逐个列出每个参数及其数据类型,用逗号分隔。

以下 SQL 语句创建了一个存储过程,该过程从 "Customers" 表中选择特定城市和特定邮政编码的客户:

CREATE?PROCEDURE?SelectAllCustomers?@City?nvarchar(30),?@PostalCode?nvarchar(10)
AS
SELECT?*?FROM?Customers?WHERE?City?=?@City?AND?PostalCode?=?@PostalCode
GO;

执行上述存储过程的方法如下:

EXEC?SelectAllCustomers?@City?=?'London',?@PostalCode?=?'WA1?1DP';

SQL 注释用于提供对 SQL 语句的解释,或者在调试和维护过程中临时禁用某些语句。注释不会被数据库执行。

单行注释

单行注释以?--?开头,后面的文本将被注释掉。

--?这是单行注释
SELECT?*?FROM?Customers;

在单行注释中,--?后面的文本会被忽略。

单行注释在语句末尾

SELECT?*?FROM?Customers?--?WHERE?City='Berlin';

在这个例子中,--?后面的文本和语句末尾的内容都被忽略。

多行注释

多行注释以?/*?开头,以?*/?结尾,之间的所有文本都被注释掉。

/*?这是
多行注释?*/
SELECT?*?FROM?Customers;

在多行注释中,/*?和?*/?之间的文本都被忽略。

多行注释忽略多条语句

/*?SELECT?*?FROM?Customers;
SELECT?*?FROM?Products;
SELECT?*?FROM?Orders;
SELECT?*?FROM?Categories;?*/
SELECT?*?FROM?Suppliers;

在这个例子中,/*?和?*/?之间的所有语句都被注释掉。

部分注释

要仅忽略语句的一部分,可以在适当位置使用?/* */?注释。

SELECT?CustomerName,?/*City,*/?Country?FROM?Customers;

在这个例子中,/*?和?*/?之间的?City?列会被注释掉,而其他部分保持不变。

部分注释语句

SELECT?*?FROM?Customers?WHERE?(CustomerName?LIKE?'L%'
OR?CustomerName?LIKE?'R%'?/*OR?CustomerName?LIKE?'S%'
OR?CustomerName?LIKE?'T%'*/?OR?CustomerName?LIKE?'W%')
AND?Country='USA'
ORDER?BY?CustomerName;

在这个例子中,/*?和?*/?之间的部分条件被注释掉,但其他条件保持不变。

SQL 算术运算符

加法 (+):?用于将两个值相加。

SELECT?column1?+?column2?AS?SumResult?FROM?tableName;

减法 (-):?用于从第一个值中减去第二个值。

SELECT?column1?-?column2?AS?Difference?FROM?tableName;

乘法 (*):?用于将两个值相乘。

SELECT?column1?*?column2?AS?Product?FROM?tableName;

除法 (/):?用于将第一个值除以第二个值。

SELECT?column1?/?column2?AS?Quotient?FROM?tableName;

取模 (%):?返回除法的余数。

SELECT?column1?%?column2?AS?Modulus?FROM?tableName;

SQL 位运算符

按位与 (&):?对二进制数进行按位与运算。

SELECT?column1?&?column2?AS?BitwiseAND?FROM?tableName;

按位或 (|):?对二进制数进行按位或运算。

SELECT?column1?|?column2?AS?BitwiseOR?FROM?tableName;

按位异或 (^):?对二进制数进行按位异或运算。

SELECT?column1?^?column2?AS?BitwiseXOR?FROM?tableName;

SQL 比较运算符

等于 (=):?判断两个值是否相等。

SELECT?column1?FROM?tableName?WHERE?column1?=?column2;

大于 (>):?判断一个值是否大于另一个值。

SELECT?column1?FROM?tableName?WHERE?column1?>?column2;

小于 (<):?判断一个值是否小于另一个值。

SELECT?column1?FROM?tableName?WHERE?column1?<?column2;

大于等于 (>=):?判断一个值是否大于或等于另一个值。

SELECT?column1?FROM?tableName?WHERE?column1?>=?column2;

小于等于 (<=):?判断一个值是否小于或等于另一个值。

SELECT?column1?FROM?tableName?WHERE?column1?<=?column2;

不等于 (****<>**?或?!=):** 判断两个值是否不相等。

SELECT?column1?FROM?tableName?WHERE?column1?<>?column2;

SQL 复合运算符

复合运算符是一组用于执行多个操作的运算符。

加等于 (+=):?将右侧的值添加到左侧的值,并将结果分配给左侧的值。

UPDATE?tableName?SET?column1?+=?10?WHERE?condition;

减等于 (-=):?从左侧的值中减去右侧的值,并将结果分配给左侧的值。

UPDATE?tableName?SET?column1?-=?5?WHERE?condition;

乘等于 (*=):?将左侧的值乘以右侧的值,并将结果分配给左侧的值。

UPDATE?tableName?SET?column1?*=?2?WHERE?condition;

除等于 (/=):?将左侧的值除以右侧的值,并将结果分配给左侧的值。

UPDATE?tableName?SET?column1?/=?3?WHERE?condition;

取模等于 (%=):?将左侧的值除以右侧的值并取余数,结果分配给左侧的值。

UPDATE?tableName?SET?column1?%=?4?WHERE?condition;

SQL 逻辑运算符

逻辑运算符用于连接和改变条件语句的逻辑关系。

AND:?如果由?AND?分隔的所有条件都为?TRUE,则为?TRUE

SELECT?*?FROM?tableName?WHERE?condition1?AND?condition2;

OR:?如果由?OR?分隔的任何条件都为?TRUE,则为?TRUE

SELECT?*?FROM?tableName?WHERE?condition1?OR?condition2;

NOT:?如果条件不为?TRUE,则显示记录。

SELECT?*?FROM?tableName?WHERE?NOT?condition;

以上?ANDOR?和?NOT?可以结合使用,以满足更复杂的查询需求。

文章来源:https://blog.csdn.net/qq_59831338/article/details/134976581
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。