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

news2024/11/18 6:16:16

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表的部分选择:

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

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表的部分选择:

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18
2Chang1124 - 12 oz bottles19
3Aniseed Syrup1212 - 550 ml bottles10
4Chef Anton’s Cajun Seasoning2248 - 6 oz jars22
5Chef Anton’s Gumbo Mix2236 boxes21.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表的部分选择:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
102489057/4/19963
102498167/5/19961
102503447/8/19962
102518437/9/19961
102527647/10/19962

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表
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
Orders表
OrderIDCustomerIDEmployeeIDOrderDateShipperID
102489057/4/19963
102498167/5/19961
102503447/8/19962

列的别名

以下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;

当:

  • 查询涉及多个表
  • 查询中使用函数
  • 列名较大或不太易读
  • 两个或更多列合并在一起时

别名可能很有用。

最后

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于减法平均优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训 在当今数字化时代,大数据技术的迅猛发展带来了前所未有的数据增长,同时也催生了对数据安全和网络安全的更为迫切的需求。本篇博客将聚焦于大数据技术背景下的数据安全与网络安全&#xff…

多项式求和之十二

题目描述 给定程序中函数 fun 的功能是:计算 sf(-n)f(-n1)…f(0)f(1)f(2)…f(n)的值。 f(x)函数定义如下: 输入格式 输入参数。 输出格式 计算公式返回的结果。 输入输出样例 输入1 5 输出1 10.407143 def fun(n):"""s f(-n) …

Facebook的特点优势

Facebook作为全球最大的社交媒体平台之一,同时也是最受欢迎的社交网站之一,Facebook具有许多独特的特点和优势。本文小编将说一些关于Facebook的特点及优势。 1、全球化 Facebook拥有数十亿的全球用户,覆盖了几乎所有国家和地区。这使得人们…

【Spring配置】properties yml配置文件

前言 SpringBoot的配置文件有三种格式 1.properties 2.yaml 3.yml(yaml的简写) (yml和yaml是同一个) 事实上,springboot只支持3个文件. 1. application.properties 2. application.yaml 3. application.yml 如果项目中同时存在properties和yml配置文件,两个同时生效,但是pr…

Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制

Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制 几点需要知道的信息 【1】crontab一般来说服务器都是有的,依赖crond服务,这个服务也是必须安装的服务,并且也是开机自启动的服务,也就是说,他基本上是…

接收网络包的过程——从硬件网卡解析到IP层

当一些网络包到来触发了中断,内核处理完这些网络包之后,我们可以先进入主动轮询 poll 网卡的方式,主动去接收到来的网络包。如果一直有,就一直处理,等处理告一段落,就返回干其他的事情。当再有下一批网络包…

LeetCode Hot100 226.翻转二叉树

题目: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 递归:深度优先遍历 迭代:广度优先遍历 方法:迭代 class Solution {public TreeNode invertTree(TreeNode root) {if (root null…

vue3 tab切换 动态组件

vue3 tab切换 动态组件 先看一张图 具体代码: 组件实例信息 如果你把组件实例放到Reactive Vue会给你一个警告:Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by markin…

leetCode 1080.根到叶路径上的不足节点 + 递归

给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 ,需要被删除…

【教学类-06-07】20231124 (55格版)X-Y之间“加法+题” (以10-20之间为例)(正序+逆序,题目多)

作品展示 上下两套题目不一样 背景需求 在大四班里,预测试55格“5以内、10以内、20以内的加法题、减法题、加减混合题”的“实用性”。 现场发现,只打印一份20以内加法减法混合题。 “这套20以内的加减法最难,谁会做?”&#x…

Linux基本指令及周边(第二弹)

文章目录 前言echo命令重定向more命令less指令(重要)head指令tail指令时间相关的指令Cal指令find指令:(非常重要) -namegrep指令.zip/unzip指令:tar指令(重要):打包/解包…

国标交流充电桩接口和直流充电桩接口介绍

1、背景 与传统油车相比,纯电车有太多的优势,但是纯电需要考虑充电时间的长短以及电池的使用寿命。然而相比较而言,混动有好多的备选方案比如插电式、增程式等,除了满足比电车较远的续航外,充电等待时间大大缩短。 在…

浅谈dll劫持免杀

文章目录 前置知识dll加载dll寻找DLL劫持-白加黑-导入加载DLL劫持-白加黑-导出编译DLL劫持-白加黑-图片分离hookdll原理win api核心代码注意事项 前置知识 基础技能 c语言基本知识win32 API 知识会在微软官网查询APIPE结构知识 原理 DLL劫持的原理主要就是windows下加载DLL…

柯桥学历提升培训,考研党要不要关闭朋友圈

关掉朋友圈的好处 在众多上岸人的考研经验贴中,可以看到,“适时关闭朋友圈”成为常见内容。 学长学姐给的建议都是不要通过朋友圈去过度关注别人的光鲜生活,也不必一定要向外展示自己的现状,喜怒哀乐自我消化,保持思想…

设置标题绑定目录

格式要求 正文标题 1标题 2标题 3款标题绑定多级标题目录页眉页脚 正文 宋体、小四、段前段后各设为 0.5 行,左边空两格、样式: XXX 左边不留空格什么意思呢?以下是有空格和没有空格的区别: 修改下正文的格式。先看下模板格式要…

报错0x0000007b问题解决

DirectX_Repair(Enhanced_Edition)工具可以解决win7 win8 win10缺少的vc库和系统库的依赖问题 链接:https://pan.baidu.com/s/1Bl_DtYNdaHEXYJJEb597tA 提取码:7p1y 有问题,请大家多多评论

二分查找之红蓝二分查找

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

Executors(线程池操作类)

一,常用方法 二,案例 package XianChengChildren;import java.util.concurrent.*;public class ThewadPoolTest1 {public static void main(String[] args) throws Exception { // ExecutorService pool new ThreadPoolExecutor(3,5,8, // …

中国开源年度报告.问卷篇第二轮抽奖来袭!

中国开源年度报告.问卷篇第二轮抽奖来袭!填问卷,赢鼠标垫,共建未来! 中国开源年度报告由开源社发起,旨在多维度、多方式、多协作地呈现国内开源的发展情况。今年,我们再次邀请您一同参与,成为这…