数据库的索引和视图实战

use jk
--以学生的姓名来创建一个索引
--只要数据库认为可以使用某个已经创建好的索引,索引就会自动被使用
--格式 create index 索引名 on 表名(字段名)
create index sname_index on student(sname)
--删除索引
--格式drop index 表名.索引名
drop index student.sname_index
drop index student.sno_index
--唯一索引
--格式create unique index 索引名 on 表名(字段名)
create unique index sno_index on student(sno)

--创建多列表索引
create index classgrade_index on sc(sno asc,grade desc)

--为索引重命名
exec sp_rename 'sc.classgrade_index','sc.grade.index'

--视图:是一个虚表,看到的数据来自select语句查询的基表中,虚表中没有数据,视图中存储的是视图的定义语句
--学生的学号及其平均成绩定义一个视图
create view avges(学号,平均成绩)
as
select student.sno,avg(grade) from student,sc
where student.sno = sc.sno
group by student.sno
--查看视图框中所能观察到的数据
select * from avges
--查询视图本身的语句
sp_helptext avges

--创建一个包含学生的学号,姓名和出身年份的视图
create view stu_view2(学号,姓名,出身年份)
as
select sno,sname,YEAR(GETDATE()) - sage from student
select * from stu_view2


--通过视图来修改基表中的数据
update stu_view2 set 姓名 = '五毒'
where 学号 = '02'



--创建加密视图
--创建计科1804班视图
create view jkclass1
with encryption
as
select * from student
where sclass like '%1804_'
sp_helptext jkclass1--对象 'jkclass1' 的文本已加密。
select * from jkclass1

update jkclass1 set sname = '1_1'
where sno = '180508010401'

--基于视图来创建视图
create view old
as
select * from jkclass1 
where sage = 21
with check option
select * from old


--建立我们班同学数据库成绩的视图
create view shu_grade 
as
select a.sno,sname,cname,grade from student a,course b,sc c
where a.sno = c.sno and b.cno = c.cno and cname = '数据库' and sclass like '%1804_'
select * from shu_grade

--查询数据库成绩大于80的同学信息
select * from shu_grade
where grade > 80

--查询数据库及格的人数
select count(*) 及格人数 from shu_grade
where grade > 60

--视图的好处就不言而喻了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值