[]作用
[列名],[表名],或库名,防止列名与关键字重复
单引号和双引号区别
单引号表示字符串常量,‘a’,’’’‘表示一个单引号
双引号表示列名,等价于[],如"name"等价于[a]
SELECT concat(’’’’,‘a’, ‘’’’)
结果’a’
视图缓存
视图a调用视图b,改了视图b,需要刷新视图b,a不需要刷新
exec sp_refreshview ‘TsSeniorTecSupportView’
行列互转
行转列,用case when
列转行,用union all
drop ,delete ,truncate 区别
drop和truncate都是ddl,delete是dml
drop
隐式提交,不能回滚,
删除表结构及所有从数据,将表所占空间全部释放。
删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保 留,但是变为invalid状态。
truncate
删除所有数据,TRUNCATE不记录日志 , 表结构及其列、约束、索引等保持不变。
delete
逐行删除,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作。
常用函数
查看版本号
SELECT @@version
Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)
Oct 28 2016 18:17:30
Copyright © Microsoft Corporation
Enterprise Edition (64-bit) on Windows Server 2012 R2 Datacenter 6.3 (Build 9600: ) (Hypervisor)
分页查询
分页必须有order by,必须先排序
利用row_number关键字
直接利用row_number() over(order by id)函数计算出行数,选定相应行数返回即可,不过该关键字只有在SQL server 2005版本以上才有。
####SQL实现
set statistics time on;
– 分页查询(通用型)
select top pageSize *
from (select row_number()
over(order by sno asc) as rownumber,*
from student) temp_row
where rownumber>((pageIndex-1)*pageSize);
set statistics time on;
– 分页查询第2页,每页有10条记录
select top 10 *
from (select row_number()
over(order by sno asc) as rownumber,*
from student) temp_row
where rownumber>10;
offset /fetch next(2012版本及以上才有)
set statistics time on;
– 分页查询(通用型)
select * from student
order by sno
offset ((@pageIndex-1)*@pageSize) rows
fetch next @pageSize rows only;
– 分页查询第2页,每页有10条记录
select * from student
order by sno
offset 10 rows
fetch next 10 rows only ;