SQL语句(十九)——存储过程(练习)
select * From Student
select * From Course
select * from SC --INSERT INTO SC (Sno, Cno, Grade)
--VALUES ('1513032087', '7', 99); --(1)找出至少选修X课和Y课的学生学号(P1)
-- 执行P1,输出X=数据库,Y=数据结构
GO
Create Proc SelectLessonToSno @X varchar(), @Y varchar()
AS
begin
select SC.Sno
from SC, Course
where SC.Cno = Course.Cno
and SC.Cno in (Select SC.Cno
From SC, Course
Where SC.Cno = Course.Cno and
Cname in (@X, @Y)
)
END EXEC SelectLessonToSno @X = '数据库', @Y = '数据结构' --(2)找出至少选修X老师讲的一门课的学生姓名(P2)
--执行P2,X=程老师
GO
Create Proc TnameToSname @Tname varchar()
AS
BEGIN
Select distinct Sname
From Student,Course,SC
where Student.Sno = SC.Sno and
Course.Cno = SC.Cno and
SC.Sno in (select Sno
from SC, Course
where SC.Cno = Course.Cno and
Course.Tname = @Tname
)
END
EXEC TnameToSname @Tname = '程老师' --(3)查询X号课程得最高分的学生的学号(P3)
--执行P3,X=数据库对应的课程号
GO
Create Proc maxofCno @X varchar()
AS
BEGIN
select Sno
From SC
Where SC.Cno = @X and Grade =
(select MAX(Grade)
From SC
Group by Cno
Having Cno = @X
)
END
EXEC maxofCno @X = '' --(4)X课程得最高分的学生的姓名、性别、所在系(P4)
--执行P4,X=数据库
GO
Create Proc LessonToStudentInfo @X varchar()
AS
BEGIN
Select Sname, Ssex, Sdept
From Student, SC, Course
Where Student.Sno = SC.Sno and SC.Cno = Course.Cno and
Course.Cname = @X and Grade =
(
Select MAX(Grade)
from SC, Course
where SC.Cno = Course.Cno and
Course.Cname = @X
)
END
EXEC LessonToStudentInfo @X = '数据库' --(5)取出没有选修X课程的学生姓名和年龄(P5)
--执行P5,X=数据库
GO
Create Proc SelectNoLessonToStudentInfo @X varchar()
AS
BEGIN
Select Sname, Sage
From Student, SC, Course
where Student.Sno = SC.Sno and
Course.Cno = SC.Cno and
SC.Sno not in (
Select Sno
from SC, Course
where SC.Cno = Course.Cno and Course.Cname = @X
)
END
EXEC SelectNoLessonToStudentInfo @X = '数据库' --(6)求选修课程名为X的学生的平均年龄(P6)
--执行P6,X=数据库
GO
Create Proc LessonToStudentAge @X varchar() = '数据库' --默认值
AS
BEGIN
Select AVG(Sage)
From Student, Course, SC
Where Student.Sno = SC.Sno and
Course.Cno = SC.Cno and
Course.Cname = @X
END
EXEC LessonToStudentAge @X = '数据库' --(7)求X老师讲的每门课的学生平均成绩(P7)
--执行P7,X=程老师
GO
Create Proc LessonToAvage @X varchar()
AS
BEGIN
Select SC.Cno, AVG(Grade) AS 平均分
From Course, SC
Where Course.Cno = SC.Cno and
Course.Tname = @X
Group by SC.Cno
END
Exec LessonToAvage @X = '程老师'
SQL语句(十九)——存储过程(练习)的更多相关文章
- SQL 语句调用这个存储过程,生成顺序编码
一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...
- LINQ to SQL语句(20)之存储过程
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...
- 【存储过程】用SQL语句获得一个存储过程返回的表
定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...
- Mysql常用sql语句(九)- like 模糊查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- 用SQL语句获得一个存储过程返回的表
1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...
- 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条
已知一个表 table 里面有两个字段 A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT ...
- sql 语句随机时间存储过程
CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...
- SQL语句(九)使用特殊关系运算符查询
使用特殊关系运算符查询 特殊关系运算符 IN.NOT IN IS NULL.IS NOT NULL BETWEEN.NOT BETWEEN LIKE.NOT LIKE IN , NOT IN IN 在 ...
- MySQL存储过程动态SQL语句的生成
用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
随机推荐
- DocX插件
DocX是一个用C#编写的.NET库,它允许开发人员以简单直观的方式操作Word文件.
- Internet History, Technology and Security (Week5.2)
Week5 Now, I want to make it real clear that, when I give you a 15 minute video of an amazing invent ...
- PAT 1074 宇宙无敌加法器
https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808 地球人习惯使用十进制数,并且默认一个数字的每 ...
- QTime的本质上是一个int,QDateTime本质上是一个qint64
研究这个问题的起因发现使用<=比较时间的不准确,所以怀疑是一个浮点数(Delphi里的time就是一个浮点数).结果却发现是一个int class Q_CORE_EXPORT QTime { e ...
- ES6 常用1
( (1)交换变量的值 ) [x, y] = [y, x]; ( (2)从函数返回多个值 // 返回一个数组function example() { return [1, 2, 3]; } var [ ...
- HDU4292_Food
给出一些人,一些食物,一些饮料,每个人都只喜欢喝某些饮料,吃某些食品,每个食品和饮料都有一定的数量,现在问最多能满足多少人的需求. 注意理解题意了,每个人只需要要拿一个食物和一个饮料即可,这题目说得好 ...
- Java中线程同步的理解 - 其实应该叫做Java线程排队
Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可 ...
- The Best Path HDU - 5883(欧拉回路 && 欧拉路径)
The Best Path Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- 用vim去掉utf-8 BOM
'去掉utf-8 BOM :set nobomb '保留utf-8 BOM :set bomb
- 九省LNOI2018退役记
立个flag不会退役. Day 0: 水一发. 大连大学的键盘敲起来就跟敲纸似的. 膜拜要进队的gqh,yxd,sjq. (都进啦2333) (高斯消元,高原反应,分麾下治……) 给我这只弱鸡烧根香. ...