为了账号安全,请及时绑定邮箱和手机立即绑定

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

SQL中的IN运算符

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

示例:获取您自己的SQL Server

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


SELECT * FROM Customers

WHERE Country IN ('Germany', 'France', 'UK');

语法:


SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1, value2, ...);

演示数据库:

以下是示例中使用的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|

NOT IN

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

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


SELECT * FROM Customers

WHERE Country NOT  IN ('Germany', 'France', 'UK');

IN(SELECT)

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

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


SELECT * FROM Customers

WHERE CustomerID IN (SELECT CustomerID FROM Orders);

NOT IN(SELECT)

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

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


SELECT * FROM Customers

WHERE CustomerID NOT  IN (SELECT CustomerID FROM Orders);

通过练习测试自己:

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


SELECT * FROM YourTableName

WHERE Country IN ('Norway', 'France');

SQL BETWEEN运算符

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

示例:获取您自己的SQL Server

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


SELECT * FROM Products

WHERE Price BETWEEN  10  AND  20;

语法:


SELECT column_name(s)

FROM table_name

WHERE column_name BETWEEN value1 AND value2;

演示数据库:

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

|ProductID|ProductName|SupplierID|CategoryID|Unit|Price|

|-|-|-|-|-|-|

|1|Chais|1|1|10 boxes x 20 bags|18|

|2|Chang|1|1|24 - 12 oz bottles|19|

|3|Aniseed Syrup|1|2|12 - 550 ml bottles|10|

|4|Chef Anton’s Cajun Seasoning|2|2|48 - 6 oz jars|22|

|5|Chef Anton’s Gumbo Mix|2|2|36 boxes|21.35|

NOT BETWEEN

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

示例:


SELECT * FROM Products

WHERE Price NOT  BETWEEN  10  AND  20;

BETWEEN与IN结合使用

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

示例:


SELECT * FROM Products

WHERE Price BETWEEN  10  AND  20

AND CategoryID IN (1,2,3);

BETWEEN文本值

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

示例:


SELECT * FROM Products

WHERE ProductName BETWEEN  'Carnarvon Tigers'  AND  'Mozzarella di Giovanni'

ORDER BY ProductName;

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

示例:


SELECT * FROM Products

WHERE ProductName BETWEEN  'Carnarvon Tigers'  AND  'Chef Anton''s Cajun Seasoning'

ORDER BY ProductName;

NOT BETWEEN文本值

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

示例:


SELECT * FROM Products

WHERE ProductName NOT  BETWEEN  'Carnarvon Tigers'  AND  'Mozzarella di Giovanni'

ORDER BY ProductName;

BETWEEN日期

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

示例:


SELECT * FROM Orders

WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

或者:


SELECT * FROM Orders

WHERE OrderDate BETWEEN  '1996-07-01'  AND  '1996-07-31';

示例表

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

|OrderID|CustomerID|EmployeeID|OrderDate|ShipperID|

|-|-|-|-|-|

|10248|90|5|7/4/1996|3|

|10249|81|6|7/5/1996|1|

|10250|34|4|7/8/1996|2|

|10251|84|3|7/9/1996|1|

|10252|76|4|7/10/1996|2|

SQL别名

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

示例:获取您自己的SQL Server


SELECT CustomerID AS ID

FROM Customers;

AS是可选的

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


SELECT CustomerID ID

FROM Customers;

语法

在列上使用别名时:


SELECT column_name AS alias_name

FROM table_name;

在表上使用别名时:


SELECT column_name(s)

FROM table_name AS alias_name;

演示数据库

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

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|

Orders表

|OrderID|CustomerID|EmployeeID|OrderDate|ShipperID|

|-|-|-|-|-|

|10248|90|5|7/4/1996|3|

|10249|81|6|7/5/1996|1|

|10250|34|4|7/8/1996|2|

列的别名

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


SELECT CustomerID AS ID, CustomerName AS Customer

FROM 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  Address

FROM Customers;

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


SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS  Address

FROM Customers;

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


SELECT CustomerName, (Address || ', ' || PostalCode || ' ' || City || ', ' || Country) AS  Address

FROM 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.CustomerName

FROM Customers AS c, Orders AS o

WHERE c.CustomerName='Around the Horn'  AND c.CustomerID=o.CustomerID;

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


SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName

FROM Customers, Orders

WHERE Customers.CustomerName='Around the Horn'  AND Customers.CustomerID=Orders.CustomerID;

当:

  • 查询涉及多个表

  • 查询中使用函数

  • 列名较大或不太易读

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

别名可能很有用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消