写点什么

SQL 中的运算符与别名:使用示例和语法详解

作者:小万哥
  • 2023-11-25
    广东
  • 本文字数:2683 字

    阅读完需:约 9 分钟

SQL 中的运算符与别名:使用示例和语法详解

SQL 中的 IN 运算符

IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写。

示例:获取您自己的 SQL Server

返回所有来自'Germany'、'France'或'UK'的客户:


SELECT * FROM CustomersWHERE Country IN ('Germany', 'France', 'UK');
复制代码

语法:

SELECT column_name(s)FROM table_nameWHERE column_name IN (value1, value2, ...);
复制代码

演示数据库:

以下是示例中使用的Customers表的部分选择:


NOT IN

通过在IN运算符前使用NOT关键字,您可以返回列表中任何值都不是的所有记录。

示例:返回所有不来自'Germany'、'France'或'UK'的客户:

SELECT * FROM CustomersWHERE Country NOT IN ('Germany', 'France', 'UK');
复制代码

IN(SELECT)

您还可以在WHERE子句中使用带有子查询的IN。使用子查询,您可以返回主查询结果中存在于子查询结果中的所有记录。

示例:返回所有在 Orders 表中有订单的客户:

SELECT * FROM CustomersWHERE CustomerID IN (SELECT CustomerID FROM Orders);
复制代码

NOT IN(SELECT)

上面的示例返回了 74 条记录,这意味着有 17 个客户没有下过任何订单。让我们使用NOT IN运算符来验证是否正确。

示例:返回在 Orders 表中没有下过订单的所有客户:

SELECT * FROM CustomersWHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
复制代码

通过练习测试自己:

练习: 使用IN运算符选择所有Country为"Norway"或"France"的记录。


SELECT * FROM YourTableNameWHERE Country IN ('Norway', 'France');
复制代码

SQL BETWEEN 运算符

BETWEEN运算符用于选择给定范围内的值,可以是数字、文本或日期。这是一个包容性的运算符,包括开始和结束值。

示例:获取您自己的 SQL Server

选择所有价格在 10 和 20 之间的产品:


SELECT * FROM ProductsWHERE Price BETWEEN 10 AND 20;
复制代码

语法:

SELECT column_name(s)FROM table_nameWHERE column_name BETWEEN value1 AND value2;
复制代码

演示数据库:

以下是示例中使用的Products表的部分选择:


NOT BETWEEN

要显示在前面示例范围之外的产品,请使用NOT BETWEEN

示例:

SELECT * FROM ProductsWHERE Price NOT BETWEEN 10 AND 20;
复制代码

BETWEEN 与 IN 结合使用

以下 SQL 语句选择所有价格在 10 和 20 之间的产品。此外,CategoryID必须是 1、2 或 3:

示例:

SELECT * FROM ProductsWHERE Price BETWEEN 10 AND 20AND CategoryID IN (1,2,3);
复制代码

BETWEEN 文本值

以下 SQL 语句选择所有ProductName在'Carnarvon Tigers'和'Mozzarella di Giovanni'之间的产品:

示例:

SELECT * FROM ProductsWHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'ORDER BY ProductName;
复制代码


以下 SQL 语句选择所有ProductName在'Carnarvon Tigers'和'Chef Anton's Cajun Seasoning'之间的产品:

示例:

SELECT * FROM ProductsWHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Chef Anton''s Cajun Seasoning'ORDER BY ProductName;
复制代码

NOT BETWEEN 文本值

以下 SQL 语句选择所有ProductName不在'Carnarvon Tigers'和'Mozzarella di Giovanni'之间的产品:

示例:

SELECT * FROM ProductsWHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'ORDER BY ProductName;
复制代码

BETWEEN 日期

以下 SQL 语句选择所有OrderDate在'01-July-1996'和'31-July-1996'之间的订单:

示例:

SELECT * FROM OrdersWHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;
复制代码


或者:


SELECT * FROM OrdersWHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';
复制代码

示例表

以下是示例中使用的Orders表的部分选择:


SQL 别名

SQL 别名用于为表或表中的列提供临时名称,通常用于使列名更易读。别名仅在查询的持续时间内存在,使用AS关键字创建别名。

示例:获取您自己的 SQL Server

SELECT CustomerID AS IDFROM Customers;
复制代码


AS 是可选的


实际上,在大多数数据库语言中,您可以省略AS关键字并获得相同的结果:


SELECT CustomerID IDFROM Customers;
复制代码

语法

在列上使用别名时:


SELECT column_name AS alias_nameFROM table_name;
复制代码


在表上使用别名时:


SELECT column_name(s)FROM table_name AS alias_name;
复制代码

演示数据库

以下是示例中使用的CustomersOrders表的部分选择:

Customers 表

Orders 表

列的别名

以下 SQL 语句为CustomerID列创建两个别名,一个是ID,另一个是CustomerName


SELECT CustomerID AS ID, CustomerName AS CustomerFROM Customers;
复制代码

在使用空格字符的别名中使用别名

如果要使别名包含一个或多个空格,比如"My Great Products",请用方括号或双引号括起别名。


使用方括号括起带有空格字符的别名的示例:


SELECT ProductName AS [My Great Products]FROM Products;
复制代码


使用双引号括起带有空格字符的别名的示例:


SELECT ProductName AS "My Great Products"FROM Products;
复制代码


注意:某些数据库系统允许使用方括号和双引号,而有些只允许其中之一。

连接列

以下 SQL 语句创建一个名为"Address"的别名,该别名组合了四列(Address、PostalCode、City 和 Country):


SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS AddressFROM Customers;
复制代码


注意:要使 MySQL 中的上述 SQL 语句工作,请使用以下内容:


SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS AddressFROM Customers;
复制代码


注意:要使 Oracle 中的上述 SQL 语句工作,请使用以下内容:


SELECT CustomerName, (Address || ', ' || PostalCode || ' ' || City || ', ' || Country) AS AddressFROM Customers;
复制代码

表的别名

当您想要为表使用别名时,适用相同的规则。


Customers表称为Persons


SELECT * FROM Customers AS Persons;
复制代码


在表的查询中使用两个表别名时,可能会显得没用,但是当您在查询中使用多个表时,可以使 SQL 语句更短。


以下 SQL 语句选择所有CustomerID为 4(Around the Horn)的客户的订单。我们使用"Customers"和"Orders"表,并分别给它们命名为"c"和"o":


SELECT o.OrderID, o.OrderDate, c.CustomerNameFROM Customers AS c, Orders AS oWHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;
复制代码


以下 SQL 语句与上面相同,但没有别名:


SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerNameFROM Customers, OrdersWHERE Customers.CustomerName='Around the Horn' AND Customers.CustomerID=Orders.CustomerID;
复制代码


当:


  • 查询涉及多个表

  • 查询中使用函数

  • 列名较大或不太易读

  • 两个或更多列合并在一起时


别名可能很有用。

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。


看完如果觉得有帮助,欢迎点赞、收藏关注



发布于: 刚刚阅读数: 4
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
SQL 中的运算符与别名:使用示例和语法详解_MySQL_小万哥_InfoQ写作社区