zoukankan      html  css  js  c++  java
  • SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    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
  • 相关阅读:
    js实现冒泡排序
    AngularJS控制器
    AngularJS指令
    AngularJS表达式
    AngularJS基础
    Python小例子(判断质数)
    Python小例子(求和)
    Python笔记
    js小例子(简单模糊匹配输入信息)
    word学习笔记
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/sqlSeverPart4.html
Copyright © 2011-2022 走看看