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语句(十九)——存储过程(练习)的更多相关文章

  1. SQL 语句调用这个存储过程,生成顺序编码

    一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...

  2. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  3. 【存储过程】用SQL语句获得一个存储过程返回的表

    定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...

  4. Mysql常用sql语句(九)- like 模糊查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. 用SQL语句获得一个存储过程返回的表

    1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

  6. 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条

    已知一个表 table 里面有两个字段  A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT  ...

  7. sql 语句随机时间存储过程

    CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...

  8. SQL语句(九)使用特殊关系运算符查询

    使用特殊关系运算符查询 特殊关系运算符 IN.NOT IN IS NULL.IS NOT NULL BETWEEN.NOT BETWEEN LIKE.NOT LIKE IN , NOT IN IN 在 ...

  9. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  10. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

随机推荐

  1. 如何在mvc项目中使用apiController

    文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...

  2. 谈谈Keil 中C51的内存分配与优化

    本帖最后由 Cresta 于 2014-1-21 10:49 编辑 看到这篇C51的内存分配和优化的文章,个人觉得分析的十分到位,在这里转给大家   C51的内存分配不同于一般的PC,内存空间有限,采 ...

  3. PAT 1147 Heaps

    https://pintia.cn/problem-sets/994805342720868352/problems/994805342821531648 In computer science, a ...

  4. RPM 安装oracle18c 修改字符集的方法

    1. 安装完preinstall 和 oracle 的rpm版本之后 到这个界面 rpm -ivh oracle-database-preinstall-18c-.el7.x86_64.rpm war ...

  5. Android自动化之旅—生成渠道包

    美团Android自动化之旅—生成渠道包:http://tech.meituan.com/mt-apk-packaging.html   Android Studio系列教程六--Gradle多渠道打 ...

  6. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  7. git工具的使用总结

    Git的使用 进入一个新的公司或者参入一个新的项目后,可能的第一步就是获取代码仓库的代码.公司内部一般放到代码仓库(下面主要以gitHub.Windows平台为例)的代码都经过加密认证的. 如何将Gi ...

  8. iOS 数据库sqlite完整增删改查操作

    1: 创建数据库表格 1.1 — 表格创建使用一个数据库软件快速创建:软件大小14.3M; 下载地址:http://pan.baidu.com/s/1qWOgGoc; 表格创建-> 打开软件,点 ...

  9. [BZOJ2288&BZOJ1150]一类堆+链表+贪心问题

    今天我们来介绍一系列比较经典的堆+链表问题.这类问题的特点是用堆选取最优解,并且通过一些加减操作来实现"反悔". 在看题之前,我们先来介绍一个神器:手写堆. 手写堆的一大好处就是可 ...

  10. BZOJ 3357: [Usaco2004]等差数列

    3357: [Usaco2004]等差数列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 338  Solved: 160[Submit][Statu ...