经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » MS SQL Server » 查看文章
SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程
来源:cnblogs  作者:在代码的世界里游走  时间:2018/10/29 9:48:07  对本文有异议

SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程

1. CASE函数(相当于C#中的Switch)

  1. select UserName,Age,类别=case when Age<18 then '未成年人' else '成年人' end from tbUsers

2. 索引 index

  聚集索引(物理):一个表只能有一个。创建一个表时,如果有主键,主键会自动创建聚集索引。

  非聚集索引(逻辑):一个表可以有多个。

  增加索引后,会增加额外的存储空间开销,降低了增加新纪录、修改、删除的效率。

  建索引:索引应该建在经常查询时用到的列上,查询时用到才有意义。数据量大时,使用有索引的列查询,效率会大幅度提高。

 

  语法格式: create  index  索引名称 On  表名(列名)

  1. create index Ix_UserName On tbUsers(UserName)

 

3. 子查询

  查询出的结果供外层的查询使用。

  1. select * from tableA where id=(select id from tableB where Name='小胡子')

 

4. 分页查询

  使用row_number()实现分页

  思路:比如说要实现每页有10条记录的分页,获取第8页的数据。那么第8页的第一行的行号是前7页的总行数加1,第8页的最后一行的行号是8*10 。

    那么每一页的第一行是(n-1)*10+1, 最后一行是n*10。要取第几页的数据,n就传入第几页。

  1. select * from
  2. (select *,iRowNumer=row_number() over(order by id asc) from tbUsers) r
  3. where r.iRowNumer between (8-1)*10+1 and 8*10

 

5. 视图

  视图里只能存查询语句。如果视图查询语句中有重名的列,必须起别名。

  创建视图:

  1. create view vw_Users as
  2. select * from tbUsers

  从视图查询:

  1. select * from vw_Users

 

6. 存储过程

  数据库中默认存在的以sp_开头的是数据库系统的存储过程。

  exec sp_databases:  返回实例中的所有数据库
  exec sp_tables: 返回当前数据库下的所有表
  exec sp_columns: 用于获取指定表中的所有列(例:exec sp_columns  'tbUsers' )
  exec sp_helptext  'sp_databases' :获取sp_databases源代码

  创建存储过程:

  1. create proc usp_sayHello
  2. as
  3. begin
  4. print 'Hello World'
  5. end

  执行存储过程:

  1. exec usp_sayHello

  创建带参数的存储过程:

  1. create proc usp_add
  2. @num1 int,
  3. @num2 int
  4. as
  5. begin
  6. select @num1+@num2
  7. end

  执行带参数的存储过程:

  1. exec usp_add @num1=100,@num2=200

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号