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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
原文地址:https://www.cnblogs.com/chenze-Index/p/9829457.html