SQL 中的运算符与别名:使用示例和语法详解
SQL 中的 IN 运算符
IN
运算符允许您在WHERE
子句中指定多个值,它是多个OR
条件的简写。
示例:获取您自己的 SQL Server
返回所有来自'Germany'、'France'或'UK'的客户:
语法:
演示数据库:
以下是示例中使用的Customers
表的部分选择:
NOT IN
通过在IN
运算符前使用NOT
关键字,您可以返回列表中任何值都不是的所有记录。
示例:返回所有不来自'Germany'、'France'或'UK'的客户:
IN(SELECT)
您还可以在WHERE
子句中使用带有子查询的IN
。使用子查询,您可以返回主查询结果中存在于子查询结果中的所有记录。
示例:返回所有在 Orders 表中有订单的客户:
NOT IN(SELECT)
上面的示例返回了 74 条记录,这意味着有 17 个客户没有下过任何订单。让我们使用NOT IN
运算符来验证是否正确。
示例:返回在 Orders 表中没有下过订单的所有客户:
通过练习测试自己:
练习: 使用IN
运算符选择所有Country
为"Norway"或"France"的记录。
SQL BETWEEN 运算符
BETWEEN
运算符用于选择给定范围内的值,可以是数字、文本或日期。这是一个包容性的运算符,包括开始和结束值。
示例:获取您自己的 SQL Server
选择所有价格在 10 和 20 之间的产品:
语法:
演示数据库:
以下是示例中使用的Products
表的部分选择:
NOT BETWEEN
要显示在前面示例范围之外的产品,请使用NOT BETWEEN
:
示例:
BETWEEN 与 IN 结合使用
以下 SQL 语句选择所有价格在 10 和 20 之间的产品。此外,CategoryID
必须是 1、2 或 3:
示例:
BETWEEN 文本值
以下 SQL 语句选择所有ProductName
在'Carnarvon Tigers'和'Mozzarella di Giovanni'之间的产品:
示例:
以下 SQL 语句选择所有ProductName
在'Carnarvon Tigers'和'Chef Anton's Cajun Seasoning'之间的产品:
示例:
NOT BETWEEN 文本值
以下 SQL 语句选择所有ProductName
不在'Carnarvon Tigers'和'Mozzarella di Giovanni'之间的产品:
示例:
BETWEEN 日期
以下 SQL 语句选择所有OrderDate
在'01-July-1996'和'31-July-1996'之间的订单:
示例:
或者:
示例表
以下是示例中使用的Orders
表的部分选择:
SQL 别名
SQL 别名用于为表或表中的列提供临时名称,通常用于使列名更易读。别名仅在查询的持续时间内存在,使用AS
关键字创建别名。
示例:获取您自己的 SQL Server
AS 是可选的
实际上,在大多数数据库语言中,您可以省略AS
关键字并获得相同的结果:
语法
在列上使用别名时:
在表上使用别名时:
演示数据库
以下是示例中使用的Customers
和Orders
表的部分选择:
Customers 表
Orders 表
列的别名
以下 SQL 语句为CustomerID
列创建两个别名,一个是ID
,另一个是CustomerName
:
在使用空格字符的别名中使用别名
如果要使别名包含一个或多个空格,比如"My Great Products",请用方括号或双引号括起别名。
使用方括号括起带有空格字符的别名的示例:
使用双引号括起带有空格字符的别名的示例:
注意:某些数据库系统允许使用方括号和双引号,而有些只允许其中之一。
连接列
以下 SQL 语句创建一个名为"Address"的别名,该别名组合了四列(Address、PostalCode、City 和 Country):
注意:要使 MySQL 中的上述 SQL 语句工作,请使用以下内容:
注意:要使 Oracle 中的上述 SQL 语句工作,请使用以下内容:
表的别名
当您想要为表使用别名时,适用相同的规则。
将Customers
表称为Persons
:
在表的查询中使用两个表别名时,可能会显得没用,但是当您在查询中使用多个表时,可以使 SQL 语句更短。
以下 SQL 语句选择所有CustomerID
为 4(Around the Horn)的客户的订单。我们使用"Customers"和"Orders"表,并分别给它们命名为"c"和"o":
以下 SQL 语句与上面相同,但没有别名:
当:
查询涉及多个表
查询中使用函数
列名较大或不太易读
两个或更多列合并在一起时
别名可能很有用。
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding
,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注
版权声明: 本文为 InfoQ 作者【小万哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/054d929036c4437d06109ed2e】。文章转载请联系作者。
评论