SQL 存储过程(学生,课程表,选修表)

一.存储过程的分类 在SQL Server中存储过程分过两类:

1)系统存储过程("sp_"作为前缀)

2)用户自定义存储过程

二.创建和执行存储过程

1)创建在存储过程的方法一般有两种:

1.使用SQL Server Management Studio

2.使用T—SQL语句(重点)

2)T—SQL中常用的控制流关键字

begin...end(定义语句块);break(退出最内层的while循环);continue(重新开始while循环); goto label;if...else;return;waitfor(为语句的

执行设置延迟);while(当特定条件为true时重复语句)

3)实例:使用T-SQL语句创建和执行存储过程的方法

--3.1 创建名为"Stuproc1"的存储过程,用来查询班级为"计算机应用"的学生的学号,姓名和性别
create proc Stuproc1
as
select 学号,姓名,性别
from 学生
where 学生.班级='计算机应用' exec Stuproc1
--备注:as 用于指定该存储过程要执行的操作 --3.2 创建存储过程"Stuproc2",根据用户输入的班级名,查询该班学生的学号,姓名和性别.若不输入班级名,则显示"计算机应用"班的学生
create proc Stuproc2
@班级 char(20)='计算机应用'
as
select 学生.学号,学生.姓名,学生.性别
from 学生
where 学生.班级=@班级 exec Stuproc2 @班级='计算机网络' --3.3 创建存储过程Stuproc3,根据用户输入的学号和课程名,返回该课程的成绩
create proc Stuproc3
(@学号 char(9),@课程名 char(20))
as
select 选修.成绩
from 课程 inner join 选修 on 选修.课程号=课程.课程号
where 选修.学号=@学号 and 课程.课程名=@课程名 exec Stuproc3 @学号='1002',@课程名='计算机软件' --3.4 创建存储过程Stuproc4,根据用户输入的课程名,返回选修该课程的学生人数
create proc Stuproc4
@课程名 char(20)
as
select 课程名,COUNT(*) as 学生人数
from 课程 inner join 选修 on 课程.课程号=选修.课程号
group by 课程名 exec Stuproc4 @课程名='计算机应用' drop proc Stuproc4 --3.5 创建存储过程Stuproc5,用于查询不及格课程数在4门以上(不包含4门)的学生的全部信息.将这些学生信息存入退学表
create table 退学(
学号 char(9) primary key,
姓名 nvarchar(5),
班级 char(20),
性别 nchar(1),
出生年月日 smalldatetime,
电话 char(11),
Email varchar(30),
备注 varchar(100)
)
create proc Stuproc5
as
insert into 退学
select*
from 学生
where 学号 in(select 学号
from 选修
where 成绩<60
group by 学号
having COUNT (*) >4
)
drop proc Stuproc5 exec Stuproc5
select * from 退学 --3.6 某些同学因为个人志向,入学后向学校提出转班级申请.创建存储过程Stuproc6,根据输入的学生学号,修改该同学的班级名称
create proc Stuproc6
(@学号 char(10),@班级 char(20))
as
update 学生
set 班级=@班级
where 学号=@学号 exec Stuproc6 @学号='1001',@班级='计算机导论'
select *
from 学生

三.查看存储过程

--用于显示存储过程的所有者,创建时间,存储过程的参数及其数据类型

sp_help

--用于显示存储过程的源代码

sp_helptext [存储过程名称]

例:

sp_helptext Stuproc5

--用于显示和存储过程相关的数据库对象

sp_depends

--用于返回当前数据库中的存储过程列表

sp_stored_procedures

例:

exec Stuproc5

四.修改存储过程

--把存储过程Stuproc1修改为能查询"计算机应用班"学生的全部信息
alter proc Stuproc1
as
select *
from 学生
where 班级='计算机应用' sp_helptext Stuproc1 exec Stuproc1

五.重命名存储过程

--把存储过程"Stuproc1"重命名为"计算机网络学生"
sp_rename Stuproc1,计算机网络学生
sp_help

六.册除存储过程

--要删除存储过程"Stuproc2"
drop proc Stuproc2

SQL 存储过程(学生,课程表,选修表)的更多相关文章

  1. SQL 触发器(学生,课程表,选修表)

    SQL 触发器(学生,课程表,选修表) 触发器是一种特殊类型的存储过程,它不由用户通过命令来执行,而是在用户对表执行了插入,删除或修改表中数据等操作时激活执行.可以这样形容:存储过程像一个遥控炸弹,我 ...

  2. 一个SQL存储过程面试题(比较简单)

    三个月前刚毕业的时候,听到存储过程就头疼. 写一个SQL存储过程,建立一个表USER 字段是姓名,年龄,职位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所有信息. 下面是答案: 复制代码 ...

  3. 学生表 课程表 成绩表 教师表 50个常用sql语句

    原文:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572276.html Student(S#,Sname,Sage,Ssex) ...

  4. 数据库 简单查询 Sql Server 学生表 课程表 选课表

    创建教材中的三张表格,并输入相应的数据 Create table student( Sno char(9), Same char(20), Ssex char(2), Sage smallint, S ...

  5. 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名

    一.SQL语言查询选修了全部课程的学生的学号和姓名. 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数.相应的SQL语言如下: select S#,SNAME ...

  6. sql-hive笔试题整理 1 (学生表-成绩表-课程表-教师表)

    题记:一直在写各种sql查询语句,最长的有一百多行,自信什么需求都可以接,可......,想了想,可能一直在固定的场景下写,平时也是以满足实际需求为目的,竟不知道应试的题都是怎么出的,又应该怎么做.遂 ...

  7. SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

    SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...

  8. Sql中判断"数据库"、"表"、"临时表"、"存储过程"和列"是否存在

    --判断数据库是否存在 IF EXISTS (SELECT * FROM MASTER..sysdatabases WHERE NAME = '库名')    PRINT 'exists ' else ...

  9. SQL Server 删除数据库所有表和所有存储过程

    场景: SQL Server中,需要删除所有表或所有存储过程时,手动的方式只能逐个进行删除,耗个人时间,所以想弄个语句来实现这样的需求.   如果由于外键约束删除table失败,则先删除所有约束: - ...

随机推荐

  1. GNU :6.47 Function Names as Strings

    链接:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function-Names GCC provides three magic var ...

  2. HDU4857——逃生(反向建图+拓扑排序)(BestCoder Round #1)

    逃生 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会 ...

  3. 深入理解ob_flush和flush的区别

    ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑… 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_* ...

  4. jquery的smartWizard插件使用方法

    jquery 的smartWizard插件常用在一些向导式的,按步骤的功能中,是的用户按照我们设定的步骤进行操作,这样一方面有较好的用户体验,可以将庞大的表格 数据分解成多个步骤,是的每个步骤的数据量 ...

  5. bzoj3996

    把这个式子弄清楚就知道这是最小割了 相当于,选某个点i有收入ai,i,会损失ci, 如果i,j都被选则有额外收入ai,j+aj,i 明显,对每个点i,连(s,i,∑ai,j) (i,t,ci) 对每对 ...

  6. sencha touch tabsidebar 源码扩展

    先上图看效果 没错,这是一个sencha touch 项目,而这里的右边推出效果(下文叫做tabsiderbar),使用插件tabsiderbar来扩展的. 插件js下载地址:http://www.m ...

  7. FormsAuthentication实现单点登录

    原文地址:http://www.wlm.so/Article/Detail/lmb48bk9f690n00000 单点登录,这种在网络非常常见,在这里讨论的是实现同一主域下的子站间的单点登录,同样也适 ...

  8. UVa 201 Squares

    题意: 给出这样一个图,求一共有多少个大小不同或位置不同的正方形. 分析: 这种题一看就有思路,最开始的想法就是枚举正方形的位置,需要二重循环,枚举边长一重循环,判断是否为正方形又需要一重循环,复杂度 ...

  9. BZOJ3792: 跑步

    题解: 感觉被坑出翔... 显然我们把矩阵乘法中的点当成原图中的边就可以了. 先写opertor 在struct里面居然只能带一个变量?... 放到外面,然后还得加引用? 然后题目描述不清,重边怎么算 ...

  10. CDN-内容推送网络

    前段时间介绍了浏览器缓存机制,通过浏览器缓存一方面可以改善用户的体验,而不用漫长地等待从服务器下载资源:另一方面减轻服务器压力.节省流量.CDN是另一种可以大幅度优化用户体验,且减轻服务器压力的技术. ...