前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL 算术运算符:加法、减法、乘法、除法和取模的用法

SQL 算术运算符:加法、减法、乘法、除法和取模的用法

原创
作者头像
小万哥
发布2023-12-01 20:59:12
9360
发布2023-12-01 20:59:12
举报
文章被收录于专栏:程序人生丶

SQL Server中的存储过程

什么是存储过程?

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

存储过程语法

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

代码语言:sql
复制
CREATE PROCEDURE 存储过程名称
AS
SQL语句
GO;

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

代码语言:sql
复制
EXEC 存储过程名称;

演示数据库

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

CustomerID

CustomerName

ContactName

Address

City

PostalCode

Country

1

Alfreds Futterkiste

Maria Anders

Obere Str. 57

Berlin

12209

Germany

2

Ana Trujillo Emparedados y helados

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

Mexico

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

Mexico

4

Around the Horn

Thomas Hardy

120 Hanover Sq.

London

WA1 1DP

UK

5

Berglunds snabbköp

Christina Berglund

Berguvsvägen 8

Luleå

S-958 22

Sweden

存储过程示例

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

代码语言:sql
复制
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;

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

代码语言:sql
复制
EXEC SelectAllCustomers;

带有一个参数的存储过程

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

代码语言:sql
复制
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;

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

代码语言:sql
复制
EXEC SelectAllCustomers @City = 'London';

带有多个参数的存储过程

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

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

代码语言:sql
复制
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;

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

代码语言:sql
复制
EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP';

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

单行注释

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

代码语言:sql
复制
-- 这是单行注释
SELECT * FROM Customers;

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

单行注释在语句末尾

代码语言:sql
复制
SELECT * FROM Customers -- WHERE City='Berlin';

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

多行注释

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

代码语言:sql
复制
/* 这是
多行注释 */
SELECT * FROM Customers;

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

多行注释忽略多条语句

代码语言:sql
复制
/* SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories; */
SELECT * FROM Suppliers;

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

部分注释

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

代码语言:sql
复制
SELECT CustomerName, /*City,*/ Country FROM Customers;

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

部分注释语句

代码语言:sql
复制
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 算术运算符

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

代码语言:sql
复制
SELECT column1 + column2 AS SumResult FROM tableName;

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

代码语言:sql
复制
SELECT column1 - column2 AS Difference FROM tableName;

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

代码语言:sql
复制
SELECT column1 * column2 AS Product FROM tableName;

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

代码语言:sql
复制
SELECT column1 / column2 AS Quotient FROM tableName;

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

代码语言:sql
复制
SELECT column1 % column2 AS Modulus FROM tableName;

SQL 位运算符

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

代码语言:sql
复制
SELECT column1 & column2 AS BitwiseAND FROM tableName;

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

代码语言:sql
复制
SELECT column1 | column2 AS BitwiseOR FROM tableName;

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

代码语言:sql
复制
SELECT column1 ^ column2 AS BitwiseXOR FROM tableName;

SQL 比较运算符

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 = column2;

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 > column2;

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 < column2;

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 >= column2;

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 <= column2;

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

代码语言:sql
复制
SELECT column1 FROM tableName WHERE column1 <> column2;

SQL 复合运算符

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

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

代码语言:sql
复制
UPDATE tableName SET column1 += 10 WHERE condition;

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

代码语言:sql
复制
UPDATE tableName SET column1 -= 5 WHERE condition;

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

代码语言:sql
复制
UPDATE tableName SET column1 *= 2 WHERE condition;

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

代码语言:sql
复制
UPDATE tableName SET column1 /= 3 WHERE condition;

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

代码语言:sql
复制
UPDATE tableName SET column1 %= 4 WHERE condition;

SQL 逻辑运算符

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

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

代码语言:sql
复制
SELECT * FROM tableName WHERE condition1 AND condition2;

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

代码语言:sql
复制
SELECT * FROM tableName WHERE condition1 OR condition2;

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

代码语言:sql
复制
SELECT * FROM tableName WHERE NOT condition;

以上 ANDORNOT 可以结合使用,以满足更复杂的查询需求。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL Server中的存储过程
    • 什么是存储过程?
      • 存储过程语法
        • 演示数据库
          • 存储过程示例
            • 带有一个参数的存储过程
              • 带有多个参数的存储过程
                • 单行注释
                • 单行注释在语句末尾
                • 多行注释
                • 多行注释忽略多条语句
                • 部分注释
                • 部分注释语句
                • SQL 算术运算符
                • SQL 位运算符
                • SQL 比较运算符
                • SQL 复合运算符
                • SQL 逻辑运算符
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档