sql常用手法(二)
drop,TRUNCATE和delete的区别
1、DROP删表,表结构将删了,当然数据也不存在了
2、TRUNCATE和DELETE删数据,表结构还在
3、DELETE可以带条件删除,TRUNCATE是全部删除
4、DELETE删除会写日志,TRUNCATE不写
5、DELETE效率低,数据可以恢复,TRUNCATE效率高,数据不可恢复
cast(强制类型转化)
cast(column_name as varchar2(20))之类的
排序:
order by a,b desc 等同于 order by a asc,b desc
查询id最小值的列表:
select * from table where id=(select min(id) from table)
解决not in 太慢问题
select tbl1.id from table1 tbl1 left join tbl2 on tbl1.id=tbl2.id where tbl2.id is null
利用 ROW_NUMBER() OVER 进行分页
select * from (select id,ROW_NUMBER() OVER(ORDER BY id desc) as counts from Student) a where a.counts between 0 and 10
在使用CTE时应注意如下几点:(借鉴:CTE简化嵌套sql)
- CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。
- CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔
- 如果CTE的表达式名称与某个数据表或视图重名,则紧跟在该CTE后面的SQL语句使用的仍然是CTE,当然,后面的SQL语句使用的就是数据表或视图了
WITH temp_Table AS ( SELECT name FROM TeacherInfo ) SELECT * FROM temp_Table;
【numeric(5,2) 的使用】
numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,所以说应该是总位数为5,小数点后为2
截取字符串长度
select left('10.30.455',len('10.30.455')-charindex('.',REVERSE('10.30.455')))
作者:chenze 出处:https://www.cnblogs.com/chenze-Index/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |