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

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

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

2. 索引 index

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

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

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

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

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

create index Ix_UserName On tbUsers(UserName)

3. 子查询

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

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就传入第几页。

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

5. 视图

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

  创建视图:

create view vw_Users as
select * from tbUsers

  从视图查询:

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源代码

  创建存储过程:

create proc usp_sayHello
as
begin
print 'Hello World'
end

  执行存储过程:

exec usp_sayHello

  创建带参数的存储过程:

create proc usp_add
@num1 int,
@num2 int
as
begin
select @num1+@num2
end

  执行带参数的存储过程:

exec usp_add @num1=100,@num2=200

SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程的更多相关文章

  1. SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器

    SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器 1. T-SQL编程 (1)声明变量 declare @age int (2)为变量赋值 (3)while循环 ...

  2. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  3. SQL Server -- 回忆笔记(三):ADO.NET之C#操作数据库

    SQL Server知识点回忆篇(三):ADO.NET之C#操作数据库 1.连接数据库 (1)创建连接字符串: 使用windows身份验证时的连接字符串: private string conStr= ...

  4. SQL Server -- 回忆笔记(一):初见数据库

    SQL Server知识点回忆篇(一):初见数据库 1.  主键 primary key    唯一标识, 不会重复的值才会用来当做主键使用. 表可以没有主键,但建议每张表都有主键. 2.  数据冗余 ...

  5. SQL SERVER 读书笔记:非聚集索引

    对于有聚集索引的表,数据存储在聚集索引的叶子节点,而非聚集索引则存储 索引键值 和 聚集索引键值.对于非聚集索引,如果查找的字段没有包含在索引键值,则还要根据聚集索引键值来查找详细数据,此谓 Book ...

  6. SQL Server 2005 中的分区表和索引

    SQL Server 2005 中的分区表和索引 SQL Server 2005          69(共 83)对本文的评价是有帮助 - 评价此主题   发布日期 : 3/24/2005 | 更新 ...

  7. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  8. (转载)MS SQL Server 未公开的加密函数有哪些?

    MS SQL Server 未公开的加密函数有哪些? 以下的文章是对MS SQL Server 未公开的加密函数的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以点击了. MS SQL Serv ...

  9. SQL Server如何定位自定义标量函数被那个SQL调用次数最多浅析

    前阵子遇到一个很是棘手的问题,监控系统DPA发现某个自定义标量函数被调用的次数非常高,高到一个离谱的程度.然后在Troubleshooting这个问题的时候,确实遇到了一些问题让我很是纠结,下文是解决 ...

随机推荐

  1. python编译pyc工程--导包问题解决

    利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还 ...

  2. python判断两个文件是否相同

    此方法相当于 Linux 系统下的diff,或者是 git 下的 checkout 官方解释请看: https://docs.python.org/2/library/difflib.html #!/ ...

  3. BBS论坛(十)

    10.1.客户端权限验证功能完成 (1)cms/cms_profile 显示当前用户的角色和权限 <tr> <td>角色:</td> <td> {% f ...

  4. ubuntu 下安装docker 踩坑记录

    ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...

  5. linux下的powerline安装教程

    powerline是一款比较炫酷的状态栏工具,多用于vim和终端命令行.先上两张效果图,然后介绍一下具体的安装教程. 图 1 powerline在shell下的效果图 图 2 powerline在vi ...

  6. iOS逆向开发(6):微信伪造位置

    仍然以微信为例,实战地练习一下使用Reveal.iOSOpenDev等工具注入APP的流程,积累经验.这一系列的文章都是学习过程的总结,不带任何商业目的. 本文解决一个问题:如何伪造一个经纬度,在微信 ...

  7. 微信小程序实现瀑布流布局

    前言 最近在做微信小程序,有一个图片列表页面,想通过瀑布流方式来实现,个人比较喜欢这种效果 先看实现效果图 实现原理及代码 将布局分为两列,我们可以使用flex设置 displex:flex 然后每列 ...

  8. spring学习(五) ———— 整合web项目(SSM)

    一.SSM框架整合 1.1.整合思路 从底层整合起,也就是先整合mybatis与spring,然后在编写springmvc. 1.2.开发需求 查询商品列表(从数据库中查询) 1.3.创建web工程 ...

  9. mac用pecl安装swoole可能出现的报错及解决办法

    一.用pecl安装swoole 2018年4月,由于homebrew的变动,导致无法使用brew install的方式安装php的扩展,现在改为用pecl安装,pecl安装swoole的方法为: pe ...

  10. 【转载】C#将图片转换为二进制流调用

    在C#中可以使用MemoryStream类.BinaryFormatter类等来操作图片,将图片读取到二进制数据流中,最终转成二进制数据流进行调用,详细的实现如下方法所示. private byte[ ...