SQL中为何时常见到 where 1=1?

这篇具有很好参考价值的文章主要介绍了SQL中为何时常见到 where 1=1?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL中为何时常见到 where 1=1?,sql,数据库

你是否曾在 SELECT 查询中看到过 WHERE 1=1 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE,所以它只是返回与没有 WHERE 子句时相同的查询结果。此外,由于查询优化器几乎肯定会删除它,因此对查询执行时间没有影响。那么,WHERE 1=1 的作用是什么?这就是我们今天要在这里回答的问题!

WHERE 1=1 会改善查询执行吗?

正如前文中所述,我们预计查询优化器会删除硬编码的 WHERE 1=1 子句,因此我们不应看到查询执行时间减少。为了证实这个假设,让我们在 Navicat 中运行一个有和一个无 WHERE 1=1 子句的 SELECT 查询。

首先,以下是在 Sakila 示例数据库运行的查询,获取从 Lethbridge 商店租借电影的客户:

SQL中为何时常见到 where 1=1?,sql,数据库

在信息选项卡的底部可以看到 0.004 秒的运行时间(用红色方框突出显示)。

现在,让我们运行相同的查询,但添加了 WHERE 1=1 子句:

SQL中为何时常见到 where 1=1?,sql,数据库

同样,运行时间为 0.004 秒。尽管查询的运行时间可能因许多因素会略有波动,但可以肯定地说 WHERE 1=1 子句对其没有任何影响。

那么,为什么要使用它呢?简单来说,就是...

为方便而设

事实上,WHERE 1=1 子句只是一些开发人员采用的一种惯性做法,以简化静态和动态形式的 SQL 语句的使用。

在静态 SQL 中

向已经具有 WHERE 1=1 的查询添加条件时,此后的所有条件都将包含 AND,因此在注释掉试验查询的条件时更容易。

SQL中为何时常见到 where 1=1?,sql,数据库

这类似于另一种在列名之前而不是之后加入逗号的技巧。同样,更容易注释:

SQL中为何时常见到 where 1=1?,sql,数据库

在动态 SQL 中

这也是以编程方式构建 SQL 查询时的常见做法。从“WHERE 1=1”开始,然后附加其他条件,例如“ and customer.id=:custId”,具体取决于是否提供了客户 ID。这允许开发人员在查询中附加以“and ...”开头的下一个条件。这是一个假设的例子:

stmt  = "SELECT * "
stmt += "FROM TABLE "
stmt += "WHERE 1=1 "
if user chooses option a then stmt += "and A is not null "
if user chooses option b then stmt += "and B is not null "
if user chooses option b then stmt += "and C is not null "
if user chooses option b then stmt += "

总结

在这篇文章中,我们了解到“WHERE 1=1 的目的是什么?”这个古老问题的答案。它不是一种高级优化技巧,而是一些开发人员所主张的一种风格惯例。文章来源地址https://www.toymoban.com/news/detail-583219.html

到了这里,关于SQL中为何时常见到 where 1=1?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 还原Sql Server数据库BAK备份文件的三种方式及常见错误

    这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别 右键点击数据库→还原数据库    在还原的源中选择源设备→点击选择框  在指定备份中点击添加→选择具体文件→确定→确定  勾选用于还原的备份集→这时目标数据库中会自动生成目标数据库名,在此选择即可→

    2023年04月08日
    浏览(64)
  • 揭示十年数据库经验,告诉你如何轻松应对常见问题(SQL 小虚竹)

    回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤

    2023年04月18日
    浏览(55)
  • SQL Server 数据库之SQL Server 数据库的安全设置

    数据库服务器是所有应用的数据中转站,若数据库服务被恶意攻击,可能会造成数据泄露、数据丢失、数据被恶意篡改等诸多无法挽回的损失; 所以,对数据库进行安全设置是每一个数据库管理人员都应掌握的知识; SQL Server 登录模式分为 “Windows 身份验证模式” 和 “SQL

    2024年02月06日
    浏览(73)
  • SQL Server数据库使用SQL Server代理实现数据库自动备份

    在现实中,为了保证数据的安全和完整,防止人为错误和硬件故障等造成的数据丢失和损坏,就需要用到数据库的备份,不同的数据库方法有所差别,我这边主讲SQL Server数据库的备份和使用SQL Server代理作业实现数据库的定时备份。 目录 一、开启SQL Server代理 1、找到SQL Serv

    2024年02月09日
    浏览(76)
  • 【数据库·关系数据库标准语言SQL·学习笔记】Microsoft SQL Server数据库的建立和删除

    开发环境:SQL Server Management Studio(SSMS) 利用数据库对象资源管理器创建数据库 (1)右击对象资源管理器中的数据库,选择新建数据库 (2)在新建数据库界面输入数据库名称 ,并选择确定 利用CREAT DATABASE命令在SSM工具的新建查询中创建数据库 1.语法格式 CREATE DATABASE dat

    2024年02月08日
    浏览(56)
  • sql数据库怎么备份,sql 实时备份

    在当今互联网时代,数据已经成为企业的核心资产。然而,数据的安全性和完整性面临硬件问题、软件故障、人工操作错误等各种威胁。为了保证数据的安全,实时备份已经成为公司必须采取的重要措施之一。下面我们就重点介绍SQL实时备份的重要实施方法。 SQL实时备份的必

    2024年02月10日
    浏览(58)
  • SQL Server数据库——创建数据库

    目录 一、界面方式创建数据库 1.1创建数据库xscj,数据文件和日志文件的属性按默认值设置  1.2在xscj数据库中增加文件xcsj1,其属性均取系统默认值  1.3在数据库xscj中增加一个名为myGroup的文件组。 1.4数据库的重命名  1.5数据库的删除  二、命令方式创建数据库 以创建学生管

    2024年02月01日
    浏览(63)
  • sql 创建sql server数据库文件组

    可以在建立数据库时候创建 如: CREATE DATABASE MyDB ON PRIMARY                           --主文件组和主要数据文件   ( NAME=\\\'MyDB_Primary\\\',    FILENAME= \\\'c:MyDB_Prm.mdf\\\'), FILEGROUP MyDB_FG1                   --用户定义文件组1   ( NAME = \\\'MyDB_FG1_Dat1\\\',    FILENAME = \\\'c:MyDB_FG1_1.ndf\\\'),  --次要数

    2024年02月08日
    浏览(61)
  • SQL数据库案例1——创建商店数据库

    创建商店数据库Commodities_Management 创建商品表、供应商表、进货表、销售表 各表分别输入数据 库名:Commodities_Management 字符集:utf16 表一:商品表 字段名 类型 长度 约束 商品编号 varchar 10 外键(参照进货表) 商品名 varchar 30 — 规格 varchar 20 — 供应商编号 varchar 10 非空 表二:

    2024年02月12日
    浏览(46)
  • SQL 数据库语句- 创建和管理数据库

    SQL CREATE DATABASE 语句用于创建一个新的 SQL 数据库。 以下 SQL 语句创建了一个名为 \\\"testDB\\\" 的数据库: 通过这个简单的语句,你可以成功地创建一个名为 \\\"testDB\\\" 的数据库。记得在实际应用中,你可能需要添加其他选项,比如指定字符集、校对规则等,以满足具体需求。 SQL DRO

    2024年02月05日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包