期末速成数据库极简版【分支循环函数】(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()的函数,该函数的功能是为根据学生学号查询学生姓名。并且调用
--create function get_name_fn(@sno char(12))
--returns char(8)
--begin
-- declare @sname char(8)
-- select @sname=sname from student 
-- where sno=@sno
-- return @sname
--end;
--调用
--print dbo.get_name_fn('6310410104 ')

 

--【例2】创建一个函数get_name_fn(),该函数查询成绩不及格的学生的学号,并且调用
--create function get_name_down_fn(@grade int)
--returns char(8)
--begin
--declare @sno char(8)
--select @sno=sno from scores
--where grade=@grade
--return @sno
--end;
----调用
--print dbo.get_name_down_fn(60)
//❌查询结果只有一个??

 

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

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

函数创建

函数调用


🙂

--【例1】创建一个函数get_name_fn(),该函数查询成绩不及格的学生的学号,并且调用
--create function get_grade_down_fn(@grade as int)
--returns table
--return
--(  
--select sno from scores
--where grade=@grade
--)
----调用
--select *
--from dbo.get_grade_down_fn(60)
//✔

 

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

oops-framework框架 之 Excel转Json

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-plugin-excel-to-json 注&#xff1a; 作者dgflash的oops-framework框架QQ群&#xff1a; 628575875 配置 作者dgflash在oops-framework的框架中&#xff0c;提供了关于Excel数据表转换为Json和TypeSc…

typora中显示除号的问题

问题 在latex中“除号&#xff08; \div &#xff09;” 通常用 \div。但在typora中写数学公式时&#xff0c;却发现 “除号” 如果使用 \div 并没有显示为 “ \div ”&#xff0c;而是 “ ∇ ⋅ \nabla \cdot ∇⋅ ”。 原因 typora中&#xff0c;\div 显示为 ∇ ⋅ \…

Html转PDF,前端JS实现Html页面导出PDF(html2canvas+jspdf)

Html转PDF&#xff0c;前端JS实现Html页面导出PDF&#xff08;html2canvasjspdf&#xff09; 文章目录 Html转PDF&#xff0c;前端JS实现Html页面导出PDF&#xff08;html2canvasjspdf&#xff09;一、背景介绍二、疑问三、所使用技术html2canvasjspdf 四、展示开始1、效果展示…

Java第21章网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封 装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可 以编写出高质量的网络…

pyinstaller 常用命令参数

PyInstaller是一个用于将Python程序打包成独立的可执行文件的工具。它可以将Python代码和所有依赖的库、资源文件等打包成一个单独的可执行文件&#xff0c;方便在不安装Python解释器的环境中运行。PyInstaller提供了许多参数&#xff0c;用于配置打包过程和生成的可执行文件的…

NSS [NSSCTF 2022 Spring Recruit]babyphp

NSS [NSSCTF 2022 Spring Recruit]babyphp 考点&#xff1a;PHP特性 开局源码直接裸奔 <?php highlight_file(__FILE__); include_once(flag.php);if(isset($_POST[a])&&!preg_match(/[0-9]/,$_POST[a])&&intval($_POST[a])){if(isset($_POST[b1])&&…

java--Date、SimpleDateFormat时间类,JDK8之前的

1.Date 代表的是日期和时间 2.SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式。 3.时间格式常见符号 4.SimpleDateFormat解析字符串时间成为日期对象

Redis之IO多路复用模型

Redis之IO多路复用模型 多路复用要解决的问题 解决同步阻塞IO模型下大量线程创建导致资源的浪费问题 同步阻塞IO模式的特点就是用一个进程来处理一个网络连接(一个用户请求)&#xff0c;比如一段典型的示例代码如下。 直接调用 recv 函数从一个 socket 上读取数据。 int main…

语义分割 简介及数据集简介

参考文章 MS COCO数据集介绍以及pycocotools简单使用-CSDN博客

Linux7安装tomcat9.0.83教程

1.下载tomcat.tar.gz包 地址&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 2.将包上传到linux服并解压 cd /home/local # 跳转到上传包的目录 tar -zxvf apache-tomcat-9.0.83.tar.gz # 解压包 mv apache-tomcat-9.0.83 tomcat # 重命名目录为tomcat cp …

【PUSDN】SpringBoot的jar进行解压后,替换其中的文件重新生成新的jar-SW

当你解压Spring Boot的JAR文件时&#xff0c;实际上是在打开一个压缩文件&#xff0c;类似于ZIP。你可以按照以下步骤进行替换文件并重新生成新的JAR&#xff1a; 解压原始的JAR文件&#xff1a; 使用任何ZIP工具&#xff08;如WinRAR、7-Zip或命令行工具&#xff09;&#xf…

详解异常 ! !(对异常有一个全面的认识)

【本章目标】 1. 异常概念与体系结构 2. 异常的处理方式 3. 异常的处理流程 4. 自定义异常类 1. 异常的概念与体系结构 1.1 异常的概念 在生活中&#xff0c;一个人表情痛苦&#xff0c;出于关心&#xff0c;可能会问&#xff1a;你是不是生病了&#xff0c;需要我陪你去看医…

在线测试http接口,为您解析最佳测试方法

您是否正在寻找一种方便、高效且可靠的方法来测试您的http接口&#xff1f;在这篇文章中&#xff0c;我们将为您介绍在线测试http接口的最佳方法&#xff0c;帮助您确保您的接口在各种情况下都能正常运行。 什么是http接口&#xff1f; 在开始介绍如何测试http接口之前&#x…

AG1KLPQ48 User Manual

1.&#xff09;软件安装&#xff1a; 解压缩或执行安装文件&#xff0c;安装 Supra 软件。执行文件为 bin 目录中的 Supra.exe。 运行 Supra&#xff0c;选择菜单 File -> Import license&#xff0c;选择 license 文件并导入 License。 2.&#xff09;新建项目&#xff1a;…

掌握iText:轻松处理PDF文档-进阶篇

简体中文写入 iText本身对简体中文的支持有限&#xff0c;但可以通过引入额外的字体包来增强其对简体中文的支持。例如&#xff0c;可以使用iTextAsian.jar这个亚洲字体包&#xff0c;它包含了几种简单的亚洲字体&#xff0c;其中包括简体中文字体。只需要将iTextAsian.jar放到…

Star CCM+ 停止并保存用命令行运行的计算

在 StarCCM 命令行运行 中介绍了命令行运行计算的方法&#xff0c;有网友询问停止计算的命令&#xff0c;但计算一旦提交之后应该是不能用命令结束的&#xff0c;除非是用 kill 或任务管理器直接结束进程。然而&#xff0c;直接结束进程不会自动保存计算结果。 问题 通常情况下…

tidb安装 centos7单机集群

安装 [rootlocalhost ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh [rootlocalhost ~]# source .bash_profile [rootlocalhost ~]# which tiup [rootlocalhost ~]# tiup playground v6.1.0 --db 2 --pd 3 --kv 3 --host 192.168.1…

【C++】C++中的String类详解及模拟实现示例

文章目录 string类简介string类的基本用法string类的常用方法string类的优势 string类的模拟实现存储结构头文件string.h源文件string.cpp源文件test.cpp string类简介 string类简介在C编程中&#xff0c;字符串是一种非常常见的数据类型&#xff0c;用于存储文本信息。C标准库…

用 Python 自动创建 Markdown 表格

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Markdown表格是文档中整理和展示数据的重要方式之一。然而&#xff0c;手动编写大型表格可能会费时且容易出错。本文将介绍如何使用Python自动创建Markdown表格&#xff0c;通过示例代码详细展示各种场景下的创建…

Java 何时会触发一个类的初始化

Java 何时会触发一个类的初始化&#xff1f; 使用new关键字创建对象访问类的静态成员变量 或 对类的静态成员变量进行赋值调用类的静态方法反射调用类时&#xff0c;如 Class.forName()初始化子类时&#xff0c;会先初始化其父类&#xff08;如果父类还没有进行过初始化的话&a…