易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 中 where 1=1 和 1=0的 作用

where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。
在SQL注入时会用到这个,例如select * from table1 where name='lala'给强行加上select * from table1 where name='lala' or 1=1这就又变成了无约束的查询了。
最近发现的妙用在于,在不定数量查询条件情况下,1=1可以很方便的规范语句。例如一个查询可能有name,age,height,weight约束,也可能没有,那该如何处理呢?
String sql=select * from table1 where 1=1
为什么要写多余的1=1?马上就知道了。
if(!name.equals("")){
sql=sql+"name='"+name+"'";
}
if(!age.equals("")){
sql=sql+"age'"+age+"'";
}
if(!height.equals("")){
sql=sql+"height='"+height+"'";
}
if(!weight.equals("")){
sql=sql+"weight='"+weight+"'";
}
如果不写1=1呢,那么在每一个不为空的查询条件面前,都必须判断有没有where字句,否则要在第一个出现的地方加where
有一次在论坛里看到:"SELECT * from strName WHERE 1 = 0";
不理解为什么有1=0?
该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。
另外,这个用在什么地方呢?主要用于创建一个新表,而新表的结构与查询的表的结构是一样的。如下SQL语句:
create table newtable as select * from oldtable where 1=0;


相关文档:

用sql写小计和合计

select case when b.name is null and c.name is null then '合计' when b.name is null and c.name is not null then '小计' else b.name end as mtrname,
sum(a.number),c.name as cname from x_sell a join x_material b on a.mtr=b.fid join p_organi c on c.fid=a.customer
where a.stime>'2009-10-01'
GROUP B ......

一些SQL 和 存储过程

 --行列转换 行转列
DROP TABLE t_change_lc;
CREATE TABLE t_change_lc (card_code VARCHAR2(3), q NUMBER, bal NUMBER);
INSERT INTO t_change_lc
SELECT '001' card_code, ROWNUM q, trunc(dbms_random.VALUE * 100) bal from dual CONNECT BY ROWNUM <= 4
UNION
SELECT '002' card_code, ROWNUM q, tru ......

SQL_学生

 
第二部分
1.所有男生的姓名、年龄:
Select Sname,Sage
from student;
2.所有年龄大于20,计算机科学系学生名单:
SELECT Sname
from Student
WHERE Sage>20 AND Sdept='CS';
3.成绩大于60的学生学号:
SELECT Sno
from SC
WHERE Grade>60;
4.成绩在70到80之间的学生学号:
SELECT Sno
from SC ......

SQL使用小结

1. 如果你希望使用selcet top语句,并且还要附带where条件,那么条件中的列就得是合适的索引,如聚集索引、复合索引里的主列
 等,同时,where条件里也要尽量避开使用函数,or,判断NULL等会引起全部扫描的语句,不然执行的是全表扫描。
2. 通过设置STATISTICS我们可以查看执行SQL时的执行效率以及相关性能测试 ......

数据库SQL语句使用(一)

  数据库sql语句系列都是以下面的表为基础的
1.       写出步骤4中的各项操作的SQL语句。
① 给学生表增加一属性Nation(民族),数据类型为Varchar(20);
alter table Student add Nation varchar(20);
 
② 删除学生表中新增的属性Nation;
alter table Student DR ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号