目录
使用SQL Server Mannagement Studio创建视图
使用SQL Server Management Studio 窗口直接修改视图
使用SQL Server Management Studio 窗口直接删除视图
使用SQL Server Management Studio 窗口直接创建索引文件
使用SQL Server Management Studio 窗口直接创建索引文件
一、视图
(1)、创建视图
(2)、修改视图
(3)、删除视图
二、索引文件的创建与删除
(1)、创建索引文件
(2)、删除索引文件
ps:使用DROP INDEX语句删除索引。由于索引在逻辑和物理上独立于相关表中的数据,在任何时候删除索引都不会影响表(或其他索引)。如果删除了索弓1.所有SQL程序和应用会继续正常运行,但访问先前有索引的数据会变慢。
三、实战演练
CREATE VIEW V_STU
AS
SELECT *FROM tb_student
GO
CREATE VIEW V_SCO
AS
SELECT * FROM tb_score
GO
CREATE VIEW V_SCORE
AS
SELECT tb_student.sno,sn,DEPT,tb_score.cno,sn,score
FROM tb_student,tb_course,tb_score
WHERE tb_student.sno=tb_score.sno AND tb_course.cno=tb_score.cno
GO
CREATE VIEW V_NUM_AVG
AS
SELECT DEPT,COUNT(SNO) AS NUM,AVG(YEAR(GETDATE())-YEAR(BIRTHDAY)) AS AVGA
FROM tb_student GROUP BY dept
GO
CREATE VIEW V_YEAR
AS
SELECT sno,sn,YEAR(BIRTHDAY) AS YEAR
FROM V_STU
GO
CREATE VIEW V_AVG_S_G
AS
SELECT sno,COUNT(score) AS NUM ,AVG(score) AS AVG
FROM V_SCORE
GROUP BY sno
GO
CREATE VIEW V_AVG_C_G
AS
SELECT cno,COUNT(sno) AS NUM,AVG(score) AS AVGE
FROM V_SCORE GROUP BY cno
GO
CREATE VIEW V_YEAR_RJ
AS
SELECT * FROM V_STU WHERE YEAR(birthday)>1986 AND dept='软件工程'
go
CREATE VIEW V_SEX
AS
SELECT * FROM V_STU
WHERE sex='男' AND polity='党员'
GO
ALTER VIEW V_YEAR
AS
SELECT * FROM V_STU WHERE YEAR(birthday)<1986 AND dept='软件工程'
GO
DROP VIEW V_YEAR
INSERT INTO V_SCO(sno,cno,score)
VALUES('2020020140','10002',87)
UPDATE V_SCO SET score=90 WHERE sno='2020020140' AND cno='10002'
DELETE FROM V_SCO WHERE sno='2020020140' AND cno='10002'
查询以上所建视图结果
查询方法①
SELECT SNO,SN,AVG(SCORE) FROM V_SCORE
WHERE SNO IN (SELECT SNO FROM V_SCORE GROUP BY SNO HAVING AVG(score)>90) GROUP BY sno,sn
查询方法②
SELECT SNO,SN,AVG(SCORE) FROM V_SCORE
WHERE sno IN (SELECT SNO FROM V_AVG_S_G WHERE AVG >90)
查询方法①
SELECT SNO,SN,V1.CNO,CN,SCORE FROM V_SCORE V1 ,V_AVG_C_G V2
WHERE V1.cno=V2.cno AND V1.score>V2.AVGE --AND V1.cno='C10'
查询方法②
SELECT SNO,SN,V1.CNO,CN,SCORE FROM V_SCORE V1 WHERE score >
(SELECT AVG(score) FROM V_SCORE V2 WHERE V2.cno=V1.cno GROUP BY cno) --AND V1.cno='C10' AND score<85
SELECT dept,COUNT(VS.sno) FROM V_STU VS ,V_AVG_S_G VA
WHERE VS.sno=VA.sno AND VA.AVG>80 GROUP BY VS.dept
CREATE CLUSTERED INDEX IX_SNO ON TB_STUDENT(SNO DESC)
CREATE INDEX IX_CNO ON TB_SCORE(CNO,SCORE DESC)
CREATE UNIQUE INDEX IX_CNO ON TB_COURSE (CNO ASC)
CREATE UNIQUE INDEX IX_SN ON TB_STUDENT(SN)