使用SQL创建视图和存储过程

简介: 使用SQL创建视图和存储过程

1.定义所有女生信息的视图“F_Student”(5分)

CREATE VIEW F_Student
AS 
SELECT *
FROM  Student
WHERE  Sex='女'

2.通过视图“F_Student”查询小于18岁的女生人数。(5分)

SELECT COUNT(*)
FROM F_Student
WHERE Sage<18

3.定义“计算机系”学生的视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)

CREATE VIEW CS_Student
AS 
SELECT Sno,Sname,Sex,Sage,Sdept
FROM  Student
WHERE  Sdept= '计算机系'
WITH CHECK OPTION

4.通过视图CS_Student插入一条学生记录,数据自拟,插入的数据在Sdept是否有限制?(5分)

INSERT INTO CS_Student
VALUES('19250101','王芳','女',20,'计算机系')
有限制:所插入的数据在Sdept列上必须是“计算机系”
5.通过视图CS_Student删除姓名为“徐庆”的学生记录,能否成功?为什么?(10分)
DELETE FROM CS_Student
WHERE Sname='徐庆'
go
--执行结果显示0行受影响,则说明未删除成功
SELECT *
FROM Student
WHERE Sname='徐庆'
go
--执行查询依然可看到该生信息
原因:徐庆并非“计算机系”学生,因此无法透过视图“CS_Student”来实现删除功能。

6.建立选修了“数据库原理”这门课的学生信息视图“DB_SC”,视图列包含:学号,姓名,所在系,课程名,分数。(5分)

CREATE VIEW DB_SC(Sno,Sname,Sdept,Cname,Score)
AS
SELECT Student.Sno,Sname,Sdept,Course.Cname,Score
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Cname='数据库原理'

7.在视图“DB_SC”上定义新视图“DB_SC_60”,选修了“数据库原理”这门课且成绩及格的学生信息视图。(5分)

CREATE VIEW DB_SC_60
AS
SELECT *
FROM DB_SC
WHERE Score>=60
8.将每门课程及其平均分建立视图,视图名自定义(5分)
CREATE VIEW Cour_AVG(Cno,Cavg)
AS
SELECT Cno, AVG(Score)
FROM SC
GROUP BY Cno
go
Select *
from Cour_AVG
GO

9.将视图“F_Student”修改为记录所有男生信息的视图。(5分)

ALTER VIEW F_Student
AS 
SELECT *
FROM  Student
WHERE  Sex='男'

10.删除视图“F_Student”(5分)

DROP VIEW F_Student

存储过程

11.创建一个存储过程“PROC_STU”,查询所有学生信息,执行该存储过程,查看结果。(10分)

CREATE PROCEDURE PROC_STU
AS
SELECT *
FROM Student
GO
EXEC PROC_STU
go

12.创建一个存储过程“PROC_SELECT_SEX_COUNT”,查询男生和女生的人数。执行该存储过程,查看执行结果。(10分)

CREATE PROCEDURE PROC_SELECT_SEX_COUNT
AS
SELECT Sex,COUNT(Sno)
FROM Student
GROUP BY Sex
GO
EXEC PROC_SELECT_SEX_COUNT
GO

13.创建一个带有参数的存储过程,根据系别查询学生人数,执行该存储过程,查看执行结果。(10分)

CREATE PROCEDURE PROC_SELECT_COUNT_BYDEPT
@Dept varchar(50)
AS
SELECT COUNT(Sno)
FROM Student
WHERE Sdept=@Dept
GROUP BY Sdept
go
EXEC PROC_SELECT_COUNT_BYDEPT '计算机系'
go

14.创建一个带有参数的存储过程,根据课程名,查询其先修课的课程名,要求使用输出参数返回查询结果,并执行该存储过程查看结果。(15分)

CREATE PROCEDURE PROC_COURSE_PRE
@cname varchar(50),@precname varchar(50) OUTPUT
AS
SELECT @precname=Cname
FROM Course
WHERE Cno IN(SELECT Cpno
FROM Course
WHERE Cname=@cname)
GO
DECLARE @name varchar(50),@pre varchar(50)
SET @name='数据库原理'
EXEC PROC_COURSE_PRE @name,@pre OUTPUT
PRINT @pre
go


目录
相关文章
|
4天前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
17 3
|
1天前
|
SQL 存储 数据库
实验4:SQL视图操作与技巧
在SQL数据库管理中,视图(View)是一种虚拟表,它基于SQL查询的结果集创建,并不存储实际数据,而是存储查询定义
|
1天前
|
SQL 存储 数据库
实验4:SQL视图操作技巧与方法
在数据库管理系统中,视图(View)是一种虚拟表,它基于SQL查询的结果集创建,并不实际存储数据
|
3天前
|
存储 SQL 安全
|
3天前
|
SQL 数据库
SQL使用视图的优缺点
SQL使用视图的优缺点
4 0
|
2月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
32 1
|
2月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
87 0
|
2月前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
85 0
|
8天前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
19 5
|
7天前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
26 3