变量、函数、流程控制与游标
实验七:变量、函数、流程控制与游标
实验内容与完成情况(记录所有的实验过程): 1. 使用局部变量、全局变量 (1)定义一个tinyint的整型变量,为其赋值68,并显示变量的值。 declare @var tinyint set @var=58 select @var put (2)定义一个长度为20的可变长度型字符变量,为其赋值“Welcome to FJUT”, 并显示变量的值。 declare @var varchar(20) set @var='Welcome to FJUT' select @var put (3)在批处理中声明两个局部变量@ssex和@sdept并对它们赋值,对Student表进行查询,要求两局部变量在SELECT 语句的 WHERE 子句中被使用,查询的要求是性别为‘男’或所在系为‘CS’系的那些学生。 declare @ssex varchar(2),@sdept varchar(4) set @ssex='男' set @sdept='CS' select * from Student where Ssex=@ssex OR Sdept=@sdept; (4)查询当前数据库管理系统版本。 select @@VERSION version; (5)在student表中执行所有学生年龄加1岁语句,并用 @@ROWCOUNT 来检测是否有发生更改的行。 update Student set Sage+=1 select @@ROWCOUNT change; 2.函数的使用(1) 数学函数的使用:
select abs(-5) '-5的绝对值' select sqrt(25) '25的平方根' select 3*3*3 '3的三次方'
Select '自然对数'=LOG(10), '指数' =EXP(2), '符号' =SIGN(2) Select '圆周率' =PI(), '正弦' =SIN(PI()/2.0), '余弦' =COS(PI()) (2) 字符串函数的使用: 去掉字符串' machine '左边的2个空格,右边与'press'连接起来; declare @var1 varchar(10) ,@var2 varchar(10) set @var1=' machine' set @var2='press' select LTRIM(@var1)+@var2 string (3) 日期、时间函数的使用: 1)返回系统当前日期并以整数形式返回当前日期的年份、月份、日; select datename(yyyy,getdate())+'年'+ datename(mm,getdate())+'月'+ datename(dd,getdate())+'日' 日期; 2)返回给定日期“2019-5-21”与当前日期相差的天数。 select datediff(day,'2019-5-21',getdate()) 相差的天数; (4) 系统函数与元数据函数的使用: 显示当前数据库用户的名称 select user 当前数据库用户的名称;
执行结果形式如下: sno cno Grade Classified grade --------- ---- ---------------- ------ 200215121 4 成绩为空! NULL . . . . . . 200215126 6 不及格 55 200215122 2 良 80 200215122 1 优 92 (11 行受影响) select Sno,Cno, case when Grade<60 then '不及格' when Grade>=60 and Grade<70 then '及格' when Grade>=70 and Grade<80 then '中' when Grade>=80 and Grade<90 then '良' when Grade>=90 and Grade<=100 then '优' else '成绩为空! ' end as 'Grade Classified ',Grade from SC;
declare @a int,@b int set @a=0 set @b=0 while @a<=100 begin if(@a%7=0) set @b+=@a set @a+=1 end print '1~100之间所有能被7整除的数的总和为:'+cast(@b as char(5))
如:求十以内的奇数积 declare @a int,@b int set @a=1 set @b=1 while @a<=10 begin set @b*=((@a%2)*@a) set @a+=2 end print '十以内的奇数积为:'+cast(@b as char(5))
/*这是一段注释*/ -- 这也是一段注释 --下面是求十以内的奇数积 declare @a int,@b int set @a=1 set @b=1 while @a<=10 begin set @b*=((@a%2)*@a) set @a+=2 end print '十以内的奇数积为:'+cast(@b as char(5))
reader(dzh,dzxm, nl,bm) 说明:读者表(读者号,读者姓名,年龄,所在部门) books(tsh,tsm,zz,cbs,cbsj,jg) 说明:图书表(图书号,图书名,作者,出版社,出版时间,价格) borrow(dzh,tsh,jyrq,hsrq) 说明:借阅表(读者号,图书号,借阅日期,还书日期)。 create table reader (dzh char(8) primary key ,dzxm char(20), nl int,bm char(20)) insert into reader values('j0010001','木子',21,'信息学院'); insert into reader values('j0010002','朴树人',20,'数计学院'); insert into reader values('j0010003','单名',20,'数计学院'); insert into reader values('j0010004','欢喜',22,'信息学院'); create table books (tsh varchar(6) primary key,tsm varchar(50) not null,zz char(20), cbs varchar(20),cbsj datetime,jg money) insert into books values('BU1021','The Busy Executive''s Database Guide', '李承德','清华大学出版社','2011-06-12',39); insert into books values('TC4203','Fifty Years in Buckingham Palace Kitchens', '费翔','高等教育出版社','2018-08-12',41); insert into books values('BU1022','Secrets of Silicon Valley', 'Jason','人民出版社','2019-11-12',29); create table borrow (dzh char(8),tsh varchar(6),jyrq datetime,hsrq datetime, primary key (dzh,tsh,jyrq)) insert into borrow values('j0010001','BU1021',getdate(),'2020-06-12'); insert into borrow values('j0010001','BU1022',getdate()-3,'2020-05-22'); insert into borrow values('j0010001','TC4203',getdate()-30,'2020-04-28'); insert into borrow values('j0010002','TC4203',getdate()-10,'2020-05-28'); insert into borrow values('j0010002','BU1021',getdate(),null); insert into borrow values('j0010003','BU1021',getdate()-200,'2020-01-28'); insert into borrow values('j0010003','BU1022',getdate()-300,'2020-02-28'); DECLARE @dzh char(8),@dzxm char(20),@bm char(20) DECLARE REDCUR CURSOR FOR SELECT dzh,dzxm,bm FROM reader OPEN REDCUR FETCH NEXT FROM REDCUR INTO @dzh,@dzxm,@bm WHILE @@FETCH_STATUS=0 BEGIN PRINT '读者号:'+CAST(@dzh AS CHAR(8))+' 姓名:'+CAST(@dzxm AS CHAR(20))+' 部门:'+CAST(@bm AS CHAR(20)) DECLARE @borrowtsh VARCHAR(6),@jyrq datetime,@hsrq datetime,@tsm varchar(50) DECLARE BORCUR CURSOR FOR SELECT borrow.tsh,tsm,jyrq,hsrq FROM borrow,books WHERE @dzh=borrow.dzh and books.tsh=borrow.tsh OPEN BORCUR FETCH NEXT FROM BORCUR INTO @borrowtsh,@tsm,@jyrq,@hsrq IF @@FETCH_STATUS<>0 PRINT ' 此读者无借阅!' WHILE @@FETCH_STATUS=0 BEGIN IF @hsrq is null PRINT CAST(@borrowtsh AS CHAR(6))+' '+CAST(@tsm AS CHAR(50))+CONVERT(varchar(10),@jyrq,0)+' 此书还未还!' ELSE PRINT CAST(@borrowtsh AS CHAR(6))+' '+CAST(@tsm AS CHAR(50))+CONVERT(varchar(10),@jyrq,0)+' '+CONVERT(varchar(10),@hsrq ,0) FETCH NEXT FROM BORCUR INTO @borrowtsh,@tsm,@jyrq,@hsrq END CLOSE BORCUR DEALLOCATE BORCUR
FETCH NEXT FROM REDCUR INTO @dzh,@dzxm,@bm print char(13)+char(10) END CLOSE REDCUR DEALLOCATE REDCUR 附加题: 用 @@ERROR 检测INSERT 和 DELETE 语句的成功操作与否。 insert student values(200000000,'王建','男',22,'MA') select @@ERROR 错误信息 delete from student where sname='王建' select @@ERROR 错误信息 delete from student where sname='王建'and sno=200000000 select @@ERROR 错误信息 |
出现的问题: 对于变量、函数、流程控制与游标理解不够 解决方案(列出遇到的主要问题和解决办法,列出没有解决的问题): --游标 --create table #Temp1(username varchar(20)) --待测试的数据表 --create table #Temp2(username varchar(20)) --结果表 --如果可以的话,可以创建类似上面两个表来存数据 DECLARE 游标名称 (@xxx)--定义游标 DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ... OPEN 游标名称 FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,... --提取操作的列数据放到局部变量中 --@@FETCH_STATUS =0 FETCH 语句成功 --@@FETCH_STATUS =-1 FETCH 语句失败或此行不在结果集中 --@@FETCH_STATUS =-2 被提取的行不存在 WHILE @@FETCH_STATUS=0 --返回被 FETCH 语句执行的最后游标的状态 BEGIN SQL语句执行过程... ... --当满足条件时执行语句 FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,... END CLOSE 游标名称 DEALLOCATE 游标名称 另外,在判断的时候 使用 IF @xxx is null 来判断空值 |
变量、函数、流程控制与游标相关推荐
- MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器
第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...
- 一条一条来,MySQL变量、流程控制与游标,完整详细可收藏
文章目录 1. 变量 2. 定义条件与处理程序 3. 流程控制 4. 游标 MySQL8的新特性-全局变量的持久化 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间 ...
- Mysql基础篇(8)—— 变量、流程控制和游标
变量 变量分为系统变量和用户自定义变量 系统变量 由系统定义,属于服务器层面.这些系统变量定义了当前Mysql服务实例的属性.特征.系统变量分为全局系统变量(需要加global关键字)和会话级系统变量 ...
- MySql基础篇——变量、流程控制与游标
一.变量 在mysql数据库中,变量分为系统变量以及用户自定义变量. 1.系统变量 1.1 介绍 系统变量由系统定义,属于服务器层面.启动mysql服务,生成mysql服务实例期间,mysql将为my ...
- MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06
目录 视图*** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysq ...
- mysql存储过程,函数,变量与流程控制
文章链接:https://codemouse.online/archives/354846877687 存储过程 存储过程和自定义函数是事先经过编译并存储在数据库中的一段SQL语句集合 存储过程参数可 ...
- VBScript基础,变量,函数,流程
文章目录 1 VBScript基础 1.1 Option Explicit 2 函数和过程 2.1 过程 2.2 函数 2.3 调用过程和函数 2.3.1 过程调用 2.3.2 函数调用 2.4 退出 ...
- MySQL变量,存储过程,函数,流程控制详解(小白都能懂哦)
1.系统变量 2.自定义变量 3.存储过程 4.函数 5.流程控制结构 1.系统变量 1.1系统变量的分类 系统变量:分为全局变量和会话变量 1.2系统变量的介绍 系统变量由系统提供,不是用户定义,属 ...
- MySQL(视图、存储过程与函数、流程控制、触发器)
第一章 视图 1 什么是视图 为了提高复杂的SQL语句的复用性和表的操作的安全性 ,MySQL数据库管理系统提高了视图特性,所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和 ...
最新文章
- 美团BERT的探索和实践 | CSDN原力计划
- Linux C编程--进程间通信(IPC)5--System V IPC 机制1--消息队列
- Vue—上手实践—快速入门
- 0100-Same Tree(相同的树)
- spring依赖注入_Spring3:类型安全依赖项注入
- pb11 打印 自定义纸张_pb自定义纸张(连续走纸)
- 马云卸任浙江阿里小额贷款股份有限公司法定代表人、董事长
- JDBC Driver
- maven eclipse 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or new
- Google 搜索的基本语法
- 博文视点大讲堂第40期第一讲:美国TOP60名校逐一点评 圆满结束
- java集合uml_Java开源UML建模集合
- 黑白简约个人网页制作 大学生个人网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码
- 总体分布概况符合无界约翰逊分布(johnsonsu)的情况
- c# 计算一年有多少周
- svg图片调整大小和颜色
- Web服务器技术的优缺点有哪些?
- 曝光过度和曝光不足_过度思考,进化心理学和编程
- 【理科】2020年高考数学(第八章 立体几何)考点与题型全归纳
- TCP/IP卷一:06---Internet地址之(IP前缀和聚合)