【数据库】分支与循环&函数&存储过程

简介: 【数据库】分支与循环&函数&存储过程



函数

【1】

--(1)定义一个根据学生姓名查询该生学习课程的函数stu_count。
--create function stu_count(@sname char(8))--学生姓名
--returns char(12)--学习课程
--begin
--declare @course char(12)--学习课程
--select @course=course from scores
--join student on scores.sno=student.sno
--where sname=@sname--根据姓名
--return @course--学习课程
--end;
--调用
--print dbo.stu_count('杜敏')

【2】

----定义一个根据系名和课程名,查询该系学生在该门课程上程的平均分的函数sdept_avggrade。
--create function sdept_avggrade(@dept varchar(20),@course varchar(20))
--returns decimal(4,1)
--begin
--declare @avg decimal(4,1)
--select @avg=avg(grade) 
--from scores join student on scores.sno=student.sno
--where @dept in(select dept from classes join  student on classes.classno=student.sno)
--and course=@course
--return @avg
--end;
----分别用select和print调用函数sdept_avggrade,查询“计算机系”学生在“数据库原理与应用”这门课程上的平均成绩。
--print dbo.sdept_avggrade('计算机系','大学英语')
--select dbo.sdept_avggrade('计算机系','大学英语')

【3】❗

--(3)创建一个函数f1,根据学生的学号和选修的课程查询该生在该门课程上的成绩,然后返回这个成绩所对应的等级(90及以上:优秀;80及以上:良好;70及以上:中等;60及以上:及格;60以下:不及格)。
--create function f1(@sno char(8),@course char(12))
--returns char(8)
--begin 
--declare @level char(8),@grade int
--select @grade=grade from scores 
--if @grade>=90
--set @level='优秀'
--else if @grade>=80 
--set @level='良好'
--else if @grade>=70
--set @level='中等'
--else if @grade>=60
--set @level='及格'
--else
--set @level='不及格'
--return @level
--end;
--调用
--print dbo.f1('6320210622 ','大学英语')
--select dbo.f1('计算机系','大学英语')
create function f1(@sno char(8),@course char(12))
returns char(8)
begin 
declare @level char(8),@grade int
select @grade=grade from scores 
select @level=CASE
when @grade>=90 then '优秀'
when @grade>=80  then'良好'
when @grade>=70 then '中等'
when @grade>=60 then '及格'
else '不及格'
end
return @level
end;

【4】

--(4)创建一个自定义函数f2,根据学生的学号查询该学生的姓名、选修课程名称和对应课程的成绩。(表值函数)
--create function f2(@sno char(8))
--returns table
--return
--(
--select sname,course,grade from student
--join scores on student.sno=scores.sno
--where student.sno=@sno
--)
--(7)调用函数f2,查询“St0109010001”号学生的姓名、选修课程名称和对应课程的成绩。
--select * from dbo.f2('6320210630')

--使用DROP FUNCTION语句来删除f1和f2函数。
drop function f1,f2

存储过程

思考&分析

目录
相关文章
|
29天前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
31 5
|
3月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
41 1
|
3月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
3月前
|
SQL 数据处理 数据库
|
3月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
112 0
|
3月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
331 0
|
4月前
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
5月前
|
存储 传感器 时序数据库
时序数据库influx有字符串拼接函数吗
【6月更文挑战第25天】时序数据库influx有字符串拼接函数吗
92 0
|
10天前
|
存储 SQL NoSQL
下一篇
无影云桌面