视图的一系列sql语句

本文详细介绍了SQL中视图的创建、查询、更新、修改及删除操作,强调了视图作为虚拟表的特点,并展示了如何通过ALTER VIEW和SP_RENAME修改和重命名视图。此外,还提供了查看视图定义和删除视图的示例,帮助理解数据库视图的管理和使用。
摘要由CSDN通过智能技术生成

A.使用视图前,必须先创建视图,并且遵守一下原则。

a.只有在当前数据库中才能创建视图,视图命名必须遵循标识符规则。

b.不能将规则、默认值或触发器与视图相关联。

c.不能再视图上建立任何索引。

--创建视图(create view必须是第一条语句)
--例6.1 在stsc数据库中创建st_comm视图,包括学号、姓名、课程名、成绩、专业,且专业为通信
use stsc
go
create view st_comm
AS
(
    select student.stno,student.stname,course.cname,score.grade,student.speciality
    from student,course,score
    where student.stno=score.stno AND course.cno=score.cno AND student.speciality='通信'
)
go

B.查询视图

使用select语句。使用select语句对视图进行查询,举例如下:

--例6.2 查询视图st_comm
use stsc
select * from st_comm
go

--例6.3查询通信专业学生的姓名、课程名、成绩
use stsc
select stname,cname,grade
from st_comm
go

--例6.4 查询学生平均成绩在85分以上的学号和平均成绩
--use stsc
--select stno AS '学号',AVG(grade)AS '平均成绩'
--from score
--group by stno
--go

use stsc
select * from score
go

use stsc
go
create view sc_avg(stno,avg_grade)
AS
(
    select stno,AVG(grade)
    from score
    group by stno
)
go

use stsc
select *
from sc_avg
where avg_grade>=85
go

C.更新、插入、修改、删除视图(只有select里没有聚合函数才能更新)。由于视图是不存储数据的虚表。因此对视图的更新最终转换为对基表的更新。举例如下:

--例6.5 在stsc数据库中,以student表为基表,创建专业为计算机的可更新视图st_cp
use stsc
go
create view st_cp
AS
(
    select * from student
    where speciality='计算机'
)
go
--查询
use stsc
select * from st_cp
go
--例6.6 向st_cp中插入一条记录
use stsc
insert into st_cp values('122009','董智强','男','1992-11-23','计算机','50')
go

use stsc
select * from st_cp
go

--例6.7 将st_cp中学号为122009的学生的总学分加2
use stsc
update st_cp set tc=tc+2
where stno='122009'
go

use stsc
select * from st_cp
go
--例6.8删除st_cp中学号为122009的记录
use stsc
delete from st_cp
where stno='122009'
go
use stsc
select * from st_cp
go

D.视图定义之后,可以修改视图定义或重命名视图,而无需删除并重新创建视图,举例如下:

--例6.9 将st_comm进行修改,取消专业为通信的要求
use stsc
go
alter view st_comm
AS
(
    select student.stno,student.stname,course.cname,score.grade,student.speciality
    from student,score,course
    where student.stno=score.stno AND course.cno=score.cno
)
go
use stsc
select * from st_comm
go
--例6.10 将视图st_view1重命名为st_view2
use stsc
go
create view st_view1
AS
(
    select student.stno,student.stname,course.cname,score.grade
    from student,course,score
    where student.stno=score.stno AND course.cno=score.cno 
)
go

use stsc
go
exec sp_rename 'st_view1','st_view2'
go

E.查看视图信息包括查看视图怎么从基表中引用、查看视图定义等。

--例6.11 查看视图st_comm的定义信息
use stsc
go
exec sp_helptext st_comm
go

F.删除视图
--例6.12 将st_view2删除
use stsc
drop view st_view2
go

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值