黑马程序员技术交流社区

标题: 数据库查询疑问 [打印本页]

作者: jibenwujie    时间: 2014-1-2 11:06
标题: 数据库查询疑问
都知道查询的sql语法 查询是用select语句 例如:
  1. SELECT * FROM T(俺假设的表)
复制代码

但是在很多时候,我见到了一种写法是这样的:
  1. SELECT * FROM T WHERE 1 = 1
复制代码

不知道有没有遇到这样的朋友解释下疑问呢,两者同为查询,有什么不一样


作者: 浮出一个美    时间: 2014-1-2 11:34
本帖最后由 浮出一个美 于 2014-1-2 11:36 编辑

这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=new StringBuilder("from T where 1=1  ");               
sb.append("and name = 'songfen' ");
这样,及时没有添加查询条件,SQL也是成立的。
楼主妹妹,给分哦


作者: jibenwujie    时间: 2014-1-2 11:37
浮出一个美 发表于 2014-1-2 11:34
这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=ne ...

噢喔 ,是这样啊,原来要工作了才会明白呀
作者: 浮出一个美    时间: 2014-1-2 11:39
浮出一个美 发表于 2014-1-2 11:34
这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=ne ...

还没说清楚,不充点,补充也要给分的哟。
就是如果没有where 1=1,
你写第一个查询条件的时候,没有and,而后面的查询条件有and
还要判断一下,麻烦
如果有where 1=1,
后面的查询条件就只管and就行了
作者: 于洋    时间: 2014-1-2 21:24
说白了两者间区别在于后者有一个where语句
where子句是设置查询条件,过滤掉不需要的数据行
比如 SELECT * FROM student WHERE name = zhangsan 就是在学生表student查询名字为张三的学生 name是表中字段名 zhangsan是表中字段值
如果没有WHERE name = zhangsan这句那就是查询学生表student中所有的学生
作者: 道逍云心    时间: 2014-1-2 23:30
where 1=1 这是sql 注入问题 很难讲清 百度一下把




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2