::在sql语句中是什么写法_不懂就问:SQL 语句中 where 条件后 写上1=1 是什么意思...

e0eb77dcb3bd99e3dd234ecee6228eec.png

程序员在编程过程中,经常会在代码中使用到“where 1=1”,这是为什么呢?

SQL注入

初次看到这种写法的同学肯定很纳闷,加不加where 1=1,查询不都一样吗?例如:

select * from customers;
与
select * from customers where 1=1;

查询出来的结果完全没有区别呀。

是的,上面的查询结果是没有区别,但是这并不是我们要添加它的目的。我们知道1=1表示true,即永真,在SQL注入时配合or运算符会得到意向不到的结果。

例如,当我们要删除客户名称为“张三”的记录,我们可以这样写:

delete from customers where name='张三'

这个时候如果在where语句后面加上 or 1=1会是什么后果?即:

delete from customers where name='张三' or 1=1

本来只要删除张三的记录,结果因为添加了or 1=1的永真条件,会导致整张表里的记录都被删除了。

当然这种事我们可千万不能干,也不能让别人有机可乘,这里只是为了表述where 1=1的作用之一。

语法规范

我们在写代码的过程中,为了保证语法规范的时候,也会使用到where 1=1。

我们先看下面这段Java代码:

String sql="select * from table_name where 1=1";
if( condition 1) {sql=sql+"  and  var2=value2";
}
if(condition 2) {sql=sql+"  and var3=value3";
}

如果我们不写1=1的话,当condition 1为真时,代码拼接后被执行的SQL代码如下:

select * from table_name where and var2=value2;

很明显,这里会出现一个SQL 的语法错误:and必须前后都有条件。

有人说我直接把where写在if语句里面,我就不写where 1=1。

String sql="select * from table_name";
if( condition 1) {sql=sql+" where var2=value2 ";
}
if(condition 2) {sql=sql+" where var3=value3";
}

当condition 1为真,condition 2为假时,上面被执行的SQL代码为:

select * from table_name where var2=value2;

这个确实没有语法错误,但是当condition 1和condition 2都为真呢?那么SQL语句就变成了这样:

select * from table_name 
where var2=value2 
where var3=value3;

很明显这是不符合SQL语法规范的。

这里写上where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误,加上1=1后,不管后面有没有and条件都不会造成语法错误了。

拷贝表

在我们进行数据备份时,也经常使用到where 1=1,当然其实这两可以不写,写上之后如果想过滤一些数据再备份会比较方便,直接在后面添加and条件即可。

create table  table_name
as   
select * from  Source_table
where   1=1;

复制表结构

有1=1就会有1<>1或1=2之类的永假的条件,这个在拷贝表的时候,加上where 1<>1,意思就是没有任何一条记录符合条件,这样我们就可以只拷贝表结构,不拷贝数据了。

create table  table_name
as   
select  * from   
Source_table where   1 <> 1;

更多SQL相关技术内容,请关注公号:SQL数据库开发

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

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

相关文章

U盘:对于目标文件系统,文件过大放不到u盘里

问题描述&#xff1a;从电脑复制粘贴一个11G的压缩包时&#xff0c;提示"对于目标文件系统&#xff0c;文件过大放不到u盘里" 原因&#xff1a;U盘的文件格式为FAT32&#xff0c;转为NTFS格式才支持大文件复制。 解决方法&#xff1a; 格式化为NTFS格式 U盘卷符名为…

django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins

Continuous Integration. CircleCI vs Travis CI vs Jenkins​hackernoon.com持续集成(CI)的定义及其主要目标持续集成(CI)是一种软件开发实践&#xff0c;它基于将代码频繁集成到共享代码仓中。 然后通过自动构建(automated build)验证每个签入(Check-In)。持续集成(CI)的主要…

org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=EXECUTE

直接在hdfs文件系统上修改supergroup的权限&#xff0c;解决问题 [roothadoop001 hadoop-3.1.3]# hdfs dfs -chmod -R 777 /tmp

战双帕弥什自抽号怎么使用_战双帕弥什新S冰露怎么玩《战双帕弥什》新S冰露玩法技巧...

战双帕弥什新S冰露怎么玩呢&#xff0c;新的S构造体更新之后正式登场&#xff0c;不少玩家都对他不太了解&#xff0c;接下来就让小编给大家带来《战双帕弥什》新S冰露玩法技巧介绍。《战双帕弥什》新S冰露玩法技巧介绍 冰露技能分为两种形式&#xff0c;一种是极寒形态&#x…

log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN

1. 警告信息 log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2. 解决方法 在…

ppt讲解中的过渡_PPT黑科技,只用一张图做出3D动画

我一直在探索PPT中平滑切换的应用。这篇文章感觉算是探索到头了。之前的文章中&#xff0c;曾经提到过平滑切换可以让3D模型动起来。但是在实际应用中&#xff0c;能够供PPT使用的3D素材数量有限&#xff0c;难以准确契合我们的需求。后来我发现&#xff0c;只需要1张普通图片&…

HDFS常用端口

HDFS常用端口 HDFS 参数描述默认配置文件例子fs.default.name namenodenamenode RPC交互端口8020core-site.xmlhdfs://master:8020/dfs.http.addressnamenode web管理端口50070hdfs-site.xml0.0.0.0:50070dfs.datanode.addressdatanode控制端口50010hdfs-site.xml0.0.0.0:500…

的好处_女性做下蹲运动有什么好处 原来有这些好处

我们在小时候如果犯了错&#xff0c;那么很可能会被老师或者家长罚着做下蹲。因为下蹲非常的累&#xff0c;其实下蹲累的原因就是它的锻炼效果非常的明显。那么你知道女人做下蹲运动的好处是什么呢&#xff1f;下面我们一起去健身知识那里看看吧&#xff01;女人做下蹲运动的好…

阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误

问题描述&#xff1a; 使用阿里云服务器&#xff0c;在本地windows电脑上使用idea进行hdfs api操作来上传文件时出现错误如下&#xff1a; org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /a.xlsx could only be written to 0 of the 1 minReplication nod…

birt什么意思中文翻译_ECTN是什么意思

ECTN是什么意思&#xff1f;ECTN是英语ELECTRONIC CARGO TRACKING NOTE的简称&#xff0c;中文翻译为电子货物跟踪单。从9月1日起&#xff0c;贝宁ECTN号码必须显示在提单上&#xff0c;根据BENIN贝宁法令&#xff0c;所有发货至贝宁科托努(COTONOU)港或经由此港转往尼日尔、布…

cmd在执行hadoop version时出现系统找不到指定的路径。 Error: JAVA_HOME is incorrectly set

问题描述 系统找不到指定的路径。 Error: JAVA_HOME is incorrectly set. Please update C:\Program_Files\hadoop\hadoop-3.1.3\etc\hadoop\hadoop-env.cmd ‘-Xmx512m’ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因 我的JAVA_HOME路径是"C:\Program Files\J…

dockerfile如何运行镜像内的脚本_第七章 Dockerfile文件解析(一)

七 Dockerfile文件解析-17.1 定义:Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本7.2 Dockerfile内容基础知识:1.每条保留字指令字母必须为大写,并且后面必须跟随参数2.指令从上到下,依次执行3.#为注释内容4.每条指令都会创建一个新的镜像层,并对镜像层…

dfs.client.block.write.replace-datanode-on-failure

问题描述 在使用hdfs api追加内容操作&#xff0c;从windows电脑上的idea对aliyun服务器上的hdfs中的文件追加内容时&#xff0c;出现错误&#xff0c;如下&#xff1a; java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good …

hdfs中Exception in createBlockOutputStream以及MapReduce中I/O error constructing remote block reader

问题描述 (1) windows电脑向aliyun进行hdfs api文件追加操作时出现下方错误&#xff1a; DEBUG [Thread-3] (DFSOutputStream.java:1503) - Connecting to datanode *.*.*.*:9866 DEBUG [IPC Client (927327686) connection to centos8/*.*.*.*:9820 from root] (Client.java:1…

开机显示输入最佳预设值_开机黑屏,有招了(收藏篇)

我的本本有时候就和女朋友一样昨天还好好的&#xff0c;今天就生气了真的啥也没干&#xff0c; 到底因为啥呢&#xff1f;真的想不起来你都干了啥&#xff1f;当然小编想着黑屏问题好像也同样困扰着小伙伴们&#xff1b;所以下次电脑再黑屏&#xff0c;先不要冲动&#xff0c;小…

MapReduce操作时Error:The method setInputPaths(JobConf, String) in the type FileInputFormat is not

问题描述 今天在写java API的MapReduce操作时&#xff0c;出现了Error&#xff1a;The method setInputPaths(JobConf, String) in the type FileInputFormat is not的错误 错误原因 导错了包&#xff0c;JobConf是旧API使用的。导入的错误的包是org.apache.hadoop.mapred.Fil…

小样本点云深度学习库_论文 | 小样本学习综述

转自&#xff1a;专知【https://www.zhuanzhi.ai/】【导读】现有的机器学习方法在很多场景下需要依赖大量的训练样本。但机器学习方法是否可以模仿人类&#xff0c;基于先验知识等&#xff0c;只基于少量的样本就可以进行学习。本文介绍41页小样本学习综述《Few-shot Learning:…

kafka集群脚本启动失败,在kafkaServer.out中提示nohup: failed to run command `java’: No such file or directory

问题描述&#xff1a; 今天在使用shell脚本启动集群时&#xff0c;发现无法启动集群&#xff0c;在logs目录下只有一个kafkaServer.out文件&#xff0c;其中内容为:nohup: failed to run command java’: No such file or directory 原本的shell脚本内容如下 #!/bin/bashcase …

uniapp 可视化开发_uniapp的简单安装流程使用教程

由于本人开发的小程序大部分都是通过uniapp开发的&#xff0c;但是又有部分对uniapp的整理安装流程不大熟悉&#xff0c;所以这次给大家写一个简单完整的使用教程。下载uniapp专用开发工具uniapp是由DCloud公司推出的一款前端应用的框架&#xff0c;所以需要专属的开发工具来开…

Exception in thread “main“ org.apache.hadoop.hbase.client.RetriesExhaustedException: Can‘t get the l

问题描述 今天在windows电脑上使用java api进行hbase的操作时&#xff0c;报了如下错误 Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedException: Cant get the locations问题原因 conf.set(“hbase.zookeeper.quorum”,“hadoop002,…