索引与视图

2018.09.11

星期三

1.索引

      索引是数据表中数据和相应存储位置的列表,可以提高在表或视图中查找数据的速度。

    聚集索引:

               指表中数据行的物理存储顺序与索引顺序完全相同

    非聚集索引:

               不改变表中数据行的物理存储位置,数据与索引分开存储,通过索引指向的地址与表中的数据发生关系。

               使用非聚集索引的情况:重复较少,数据量较少,已包含聚集索引。

      区别:      

聚集索引非聚集索引
每个表只允许有一个聚集索引最多可以有249个非聚集索引
物理的重排表中的数据以符合索引约束创建一个键值列表,键值指向数据在数据页中的位置
用于经常查找数据的列用于从中查找单个值的列

       示例:           

               --创建索引
                create  nonclustered
                index index_score
                on stumarks(score)
                with fillfactor=40
               --查询
                select StuInfo.stuid'学号',stuname'姓名',subject'科目',score'成绩' from StuInfo,StuMarks
                with (index=index_score)
                where StuInfo.stuid=StuMarks.stuid and score<'80'
               --删除
                drop index stumarks.index_score
                go

2.视图

      视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上的,

      视图中并不存放数据,而是存放在视图所引用的原始表中,同一张原始表,根据不同用户的不同需求,可以创建不同的视图。

      创建:   

--创建视图
create view View_stuinfo_marks
as
  select StuInfo.stuid'学号',stuname'姓名',stusex'性别',subject'科目',score'成绩'
  from StuInfo,StuMarks where StuInfo.stuid=StuMarks.stuid
go

--查询所有男同学成绩
select * from View_stuinfo_marks where 性别='男'

--查询所有不及格女同学的学号、姓名及科目
select 学号,姓名,科目 from View_stuinfo_marks where 成绩<'60' and 性别='女'
go

--创建新的加密视图
create view View_stuinfo
with encryption
as
  select DENSE_RANK()
  over(order by sum(score) desc)'排名',stuinfo.stuid'学号',stuname'姓名',sum(score)'总成绩'
  from StuInfo,StuMarks where StuInfo.stuid = StuMarks.stuid
  group by StuInfo.stuid,stuname
go
--查询所有学生的总成绩排名
select * from View_stuinfo
--删除所有视图
drop view View_stuinfo_marks,View_stuinfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值