期末速成数据库极简版【分支循环函数】(4)

目录

全局变量&局部变量

局部变量定义declare

局部变量赋值select

局部变量赋值select

【1】分支结构IF

【2】分支结构CASE

简单CASE语句

搜索CASE语句

【3】循环结构While 

【4】系统函数

常用字符串函数

时间函数

【5】自定义函数—标量函数 

函数创建

函数调用

【6】自定义函数—内嵌表值函数

函数创建

函数调用


  • 语法
  • 注意事项
  • 举例
  • 与C语言差别就是把花括号{ } ,变成了begin end语句块,其他均差不多

 

全局变量&局部变量

 @@全局变量

  • 全局变量由系统提供且预先声明的变量。
  • 全局变量的使用: 用户只能读取,不能修改
  • 引用全局变量时,变量名前一定要加上@@标记
  • 输出全局变量可以采用SELECT或者PRINT命令。

@局部变量 

  • 局部变量由用户根据需要定义,用于保存临时数据或由存储过程返回的结果。
  • 局部变量的使用: 引用局部变量时,变量名前一定要加上@标记
  • 采用DECLARE命令定义declare
  • 采用SET或者SELECT命令赋值select
  • 输出局部变量可以采用SELECT或者PRINT命令。select  print

局部变量定义declare

局部变量的定义:局部变量是由用户采用declare命令定义。

DECLARE  @ 变量名  数据类型   [,… n]  

  • 一次可以声明多个变量,变量之间用逗号隔开;
  • 声明时可不赋初值,此时均初始化为NULL;
  • 声明时也可以根据需要赋初值。

例: DECLARE    @A   CHAR(20)

DECLARE    @f  float,@cn  CHAR(8)=‘aa’ 

局部变量赋值select

局部变量赋值:局部变量可以在定义变量的同时赋值,也可以定义后采用SET或者SELECT命令赋值。

  • 格式一:定义变量的同时赋值

例: DECLARE    @A   int=888

  • 格式二:SET 赋值

语法具体为: SET  @变量名 = 表达式

DECLARE  @a char(30),@b int      

SET  @a = 'This is my test'        

SET  @b=999

注:SET语句一次只能给一个变量赋值

局部变量赋值select

  • 格式三: SELECT 赋值

语法具体为: SELECT  @变量名 = 表达式 [,…n ]

例: DECLARE  @a char(30),@b int        

SELECT  @a = 'This is my test',@b=999  

注:SELECT语句可同时为多个变量赋值。

【1】分支结构IF

 

--【例1】 对给定学号进行查询,如果其平均成绩不及格的则打印学号和平均成绩,否则打印学号即可declare @sno char(12),@avgrade numeric(3,1) 
set @sno='6310910329'
select @avgrade=avg(grade)
from scores
where sno=@sno
if @avgrade<60
begin
print @sno
print @avgrade
end
else
begin
print @sno
end
--【例2】 对给定学号进行查询,运用多分支IF句型实现分等级打印学生成绩。declare @sno char(12),@grade float(10)
set @sno='6310910329'
select @grade=grade
from scores
IF @grade>=90.0   
begin 
PRINT '优秀' 
print @grade
end
ELSE IF @grade>=80.0  
begin 
PRINT '良好'
print @grade
end
ELSE IF @grade>=70.0  
begin
PRINT '中等'
print @grade
end
ELSE IF @grade>=60.0 
begin 
PRINT '及格'
print @grade
end
ELSE   
PRINT '不及格'

【2】分支结构CASE

简单CASE语句

--【例1】查询教师姓名、职称以及职称等级。其中职称等级对应规则为:
--教授与副教授为高级;讲师为中级;助教为初级;其它为不清楚。
--select teachername,profession,
--case profession
--when '教授' then  '高级'
--when '副教授' then  '高级'
--when '讲师' then  '中级'
--when '助教' then  '初级'
--else '不清楚'
--end as 职称等级
--from teacher;

搜索CASE语句

--【例2】查询grade表中的学号、课程号以及成绩等级。其中成绩等级对应规则为:
--成绩>=90,等级为“优”;
--成绩>=80,等级为“良”;
--成绩>=60,等级为“及格”;
--成绩<60,等级为“不及格”。
select sno,grade,course,--逗号千万不要忘记
case
when grade >=90 then '优'
when grade >=80 then '良'
when grade >=60 then '及格'
when grade< 60 then '不及格'
end as 等级
from scores

【3】循环结构While 

看的懂即可,和C语言差不多 

 

【4】系统函数

进入函数,函数和C语言也一样,分为系统函数和用户自定义函数(个人创建)

常用字符串函数

  • ltrim(x)函数用于去掉字符串x开头的所有空格字符。
  • rtrim(x)函数用于去掉字符串x结尾的所有空格字符。
  • left(x,n)函数返回字符串x的前n个字符。
  • right(x,n)函数返回字符串x的后n个字符。
  • substring(x,start,length)函数返回从字符串x的第n个位置开始获取length长度的字符串。
  • concat(x1,x2,….)函数用于将x1、x2等若干个字符串连接成一个新字符串。
--【例1】将字符串' 中 国 '作为参数,观察两个函数的返回结果。
select ltrim('  中国')
select rtrim('中国   ')
select left('中国',1)
select right('中国',1)
select substring('我爱中国',1,2)
select concat('我爱','中国')

 

时间函数

  • GETDATE()函数返回当前系统日期和时间。(无参数)          
  • YEAR(date)函数返回表示指定日期中的年份。(有参数)
--【例2】采用系统函数返回当前系统日期和时间以及当前的年份。
select GETDATE(),YEAR(GETDATE())

 

【5】自定义函数—标量函数 

  • 标量型函数只能返回单个值。
  • 只能是输入参数,不能有输出参数,所有输入参数前加@
  • create后返回,单词是returns,不是return
  • returns 后面是返回值的变量类型
  • 在函数体中式 return

函数创建

函数调用


 🙂

--【例1】创建一个名为get_name_fn()的函数,该函数的功能是为根据学生学号查询学生姓名。并且调用
--【例2】创建一个函数get_name_fn(),该函数查询成绩不及格的学生的姓名,并且调用

【6】自定义函数—内嵌表值函数

  • 内联表值函数返回结果为一张表

函数创建

函数调用


🙂

--【例1】在xkgl数据库中创建一个用户自定义函数uf_Getcno1,该函数通过输入的学号返回该生选修课程的课程号。

这章的内容会考察一个【大题】必须会!!但是其实和C语言差不多,相信大家都能够轻松上手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何学习Java并发编程

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 2012年我刚转行到互联网…

MySQL三 | 多表查询

目录 多表查询 内连接 隐式内连接 显示内连接 外连接 左外连接 右外连接 自连接 子查询 多表查询 笛卡尔积:集合A和集合B的所有组合情况 A * B 在多表查询时应消除无效的笛卡尔积 内连接 查询的是两张表交集的地方 隐式内连接 SELECT 字段列表 FROM 表1&#xf…

定义一个学生类,其中有3个私有数据成员学号、姓名、成绩,以及若于成员。 函数实现对学生数据的赋值和输出。

#include <stdio.h> // 定义学生类 typedef struct Student { int stuNum; // 学号 char name[20]; // 姓名&#xff0c;假设最长为20个字符 float score; // 成绩 } Student; // 初始化学生信息 void initializeStudent(Student *student, int num, const…

一件小事情

开始我发现表格里面有一个生僻字&#xff0c;开始识别的很好&#xff0c;但是后面就识别的不好&#xff0c;于是我想用之前的方法去识别这个字&#xff0c;但是之前的方法不太好用&#xff0c;因为之前的方法现在不用了&#xff0c;我要用第二种方法&#xff0c;但是第二种方法…

Office Tool Plus 使用教程 让个人也能轻松使用上免费的Office

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

接雨水-困难

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a;输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

忘记PDF密码了,怎么办?

PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和office一样&#xff0c;可以对文件进行加密&#xff0c;但是没有提供恢复密码的功…

在Azure虚拟机中使用XDP Native模式

在进行eBPF的开发中&#xff0c;我们可以看到支持XDP Native的网卡驱动列表&#xff1a; https://docs.cilium.io/en/stable/bpf/progtypes/#xdp 使用azure上的vm进行开发时&#xff0c;我们发现尝试使用XDP Native模式失败&#xff0c; 经过查阅文档&#xff1a; https://www…

优雅草蜻蜓I即时通讯·水银版私有化部署之安卓Android端编译-02

Android 项目配置 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 使用以上Android studio版本 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 下载最低sdk最低版本28 完成后就可以导入项目(项目导入不能开VPN,会导致部分三方库…

lombok原理 @Slf4j 怎么生成get set log

Lombok是一种Java库&#xff0c;通过注解的方式提供了许多有用的功能&#xff0c;包括生成Getter、Setter、日志等。Slf4j注解是Lombok中的一种&#xff0c;它用于自动生成日志记录器&#xff08;Logger&#xff09;。 下面简要介绍一下Lombok的原理&#xff0c;以及Slf4j注解…

一v一聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

使用加密工具The Enigma Protector ,快速保护您的软件安全

我们多次被问到使用Enigma Protector保护软件免遭破解和逆向工程的最佳方法是什么&#xff1f;在这里我将解释保护常用应用程序的技巧是什么。 许多开发人员认为&#xff0c;如果他们只需单击“保护”按钮&#xff0c;保护程序就会自动完成所有操作&#xff0c;无需嵌入额外的…

【Java基础系列】JavaWeb入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux学习笔记7-SPI的应用和ICM-26068

和IIC类似&#xff0c;我也会针对一个使用SPI通信的芯片ICM-26068来写它的驱动&#xff0c;从而学习SPI通信的应用。 SPI通信的基本原理在单片机中已经详细学习过了&#xff0c;我认为需要理解的是它的全双工&#xff0c;即在同一时间内既可以从主机发送数据到从机&#xff0c;…

「C++」哈希表的实现(unordered系底层)

&#x1f4bb;文章目录 &#x1f4c4;前言哈希表概念哈希函数 哈希冲突闭散列开散列 &#x1f4d3;总结 &#x1f4c4;前言 unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构&#xff0c;使其在查找上的时间复杂度几乎减低到了 O ( 1 ) O(1) O(1)。 哈希…

企业ERP软件定制开发的重点|app小程序网站建设

企业ERP软件定制开发的重点|app小程序网站建设 随着企业信息化程度的不断提高&#xff0c;企业资源计划&#xff08;ERP&#xff09;软件成为了现代企业管理的重要工具。然而&#xff0c;由于不同企业的业务流程、组织结构和管理模式各异&#xff0c;现有的通用ERP软件无法完全…

qt 定时器用法

在qt开发中&#xff0c;定时器是我们经常用到的。我们接下来说一下定时器的三种用法&#xff0c;需要注意的是定时器事件是在主线程中触发的&#xff0c;因此在处理耗时操作时应特别小心&#xff0c;以避免阻塞应用程序的事件循环。 1. 三种定时器使用 1.1 QObject的定时器 …

HTTPS双向认证

HTTPS双向认证和普通的HTTPS认证在安全性和验证方式上有所区别。 安全性&#xff1a; 普通的HTTPS认证&#xff08;单向认证&#xff09;只验证服务器的身份&#xff0c;客户端的身份没有得到验证&#xff0c;因此安全性相对较低。HTTPS双向认证则不仅需要服务器进行身份验证&a…

基于若依的ruoyi-nbcio的flowable流程管理系统增加服务任务和我的抄送功能

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 1、增加一个状态字段 wf_copy增加下面两个字段 就用未读已读来区分 2、前端 api接口增加如下&#xff…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第一次作业

1 设关系 r r r 和 s s s 如下&#xff1a; r ( A B C ) a 2 b 3 c 2 a 2 b 1 c 1 a 2 b 2 c 1 a 1 b 1 c 2 s ( B C D ) b 1 c 1 d 1 b 2 c 1 d 1 b 2 c 2 d 1 \begin{array}{c} r&(A & B & C) \\ &\;\;a_2 & b_3 & c_2\; \\ &\;\;a_2 & …