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
--视图的好处就不言而喻了
数据库的索引和视图实战
最新推荐文章于 2022-04-27 23:34:29 发布