zoukankan      html  css  js  c++  java
  • Sql server 编程

    变量是可以储存数据值的对象,可以使用局部变量向SQL语句传递数据

      局部变量:局部变量的名称必须以标记@作为前缀。 declare @variablea_name DataType

    其中,variable_name为局部变量的名称,DataType为数据类型 变量的赋值有两个方法:SET或SELECT

    set @variable_name =value 或 select @variable_name=value

    !!! select   和 set 区别  在什么时候赋值使用select。

    在给变量赋值时,如果数据源来源于表中的某一列,则采用select 问题1: 根据学号查找‘李文才’的信息以及与‘李文才’的学号响铃的学生的信息 /*--查找李文才的信息--*/ declare @name varchar(8)    --学生姓名 set @name='李文才'          --使用Set赋值 select StudentNo,StudentName,BornDate,Address From Student where StudentName=@name /*--查找与李文才相邻的学生的信息--*/ declare @StudentNo int    --学号 select @StudentNo=StudentNo From Student    --使用select赋值 where StudentName=@name Select StudentNo,StudentName,BornDate,Address From Student where (StudentNo=@StudentNo+1) or (StudentNo=@Student-1) 全局变量:SQLServer中的所有全局变量都使用两个@@符号作为前缀。 程序员不可以手动改变或添加公共变量 @@error               最后一个T-SQL错误的错误号 @@identty       最后一次插入的标识值 @@rowcount     可以常见的,同时连接的最大数目 @@servername    本地服务器的名称 @@version         SQL Server的版本信息 Print 局部变量或字符串 Select 局部变量 AS 自定义列名

    数据类型的转换 CAST()和CONVERT()函数 与C#语言相似,在T-SQL语言中,数据类型的转换也分为隐式转换和显示转换 Cast(表达式 AS 数据类型) Convert(数据类型【(长度)】,表达式【,样式】) 逻辑控制语句 Begin-End语句 (Begin-End语句将多个T-SQL语句定义成一个语句块,把每个语句块视为一个单元) Begin   语句或语句块 End if-else条件语句 if(条件) 语句或语句块1 else 语句或语句块2 (如果有多条语句,则需要与Begin-End结合使用,表示一个完整的语句块) if(条件) Begin 语句1 语句2 ....... end else ...... 问题2: ( 统计并显示2013-08-09 的oop考试平均分 如果平均分在70分以上,显示“考试成绩优秀”,并显示前三名学生的考试信息 如果在以下,显示“考试成绩较差”,并显示后三名学生的考试信息 ) declare @subid int select @subid=SubjectId from Subject where subjectname='oop' declare @avg int --定义一个变量,保存平均分 --如何求2013-08-09   oop  平均分 select @avg=AVG(StudentResult) from result              --判定@avg和的关系 where examdate>='2013-08-09' and  examdate<'2013-08-10' and subjectid=@subid if(@avg>=70) begin
    print '成绩优秀'          --01.打印成绩优秀 select top 3 studentno,studentresult from result where examdate>='2013-08-09' and examdate<'2013-08-10'  and subjectid=@subid                                  --02.显示前3名学生成绩信息 order by studentresult desc end else begin print '良好'            --打印成绩良好 select top 3 studentno,studentresult from result where examdate>='2013-08-09' and examdate<'2013-08-10' --显示后3名学生成绩 and subjectid=@subid order by studentresult asc End   While循环语句 (在SQL 中,只有while一种循环,没有do-while和for循环) while(条件) begin 语句或语句块 【break|continue】 end

    问题3: 求1到100之间的偶数和 declare @sum int set @sum=0 declare @num int set @num=1 while(@num<=100) begin if(@num%2=0) begin set @sum+=@num end set @num+=1 end print @sum 问题4: (检查学生“oop”课最近一次考试是否有不及格(60分及格)的学生,如有,每人加2分,高于95分的学生不再加分,直至所有学生这次考试成绩均及格) declare @subid int select @subid=subjectid from subject where subjectname='oop' declare @mydate datetime select @mydate=max(examdate) from result where subjectid=@subid declare @num int select @num=count(1) from result where subjectid=@subid and examdate=@mydate and studentresult<70 while(@num>0)  begin update result set studentresult+=2 where studentresult<95 and subjectid=@subid and examdate=@mydate select @num=count(1) from result where subjectid=@subid and examdate=@mydate and studentresult<70 print @num end select * from result order by subjectid,examdate

    case多分支语句 case-end语句计算一组条件表达式,并返回其中一个符合条件的结果 case when 条件一 then 结果一 when 条件二 then 结果二 when 条件三 then 结果三 ...... end 问题五:(采用美国的A到E五级打分制来显示学生'oop'课程最近一次考试成绩) ( A级:   90分以上 B级:80-分 C级:   70-分 D级:60-分 E级:60分以下 ) declare @subid int declare @maxdate datetime select @subid=subjectid from subject where subjectname='oop' select @maxdate=max(examdate) from result where subjectid=@subid   select studentname,等级= case    when studentresult>=90 then 'A'    when studentresult>=80 then 'B'    when studentresult>=70 then 'C'    when studentresult>=60 then 'D'    else 'E'   end from student,result where student.StudentNo=result.StudentNo and subjectid=@subid and examdate=@maxdate

  • 相关阅读:
    JSP所需要掌握的部分
    Parameter index out of range (1 > number of parameters, which is 0).
    Servlet到Servlet的请求转发与重定向的区别
    servlet范围:数据共享
    hihocoder 1169 猜数字
    UVA 1149 Bin Packing
    Using a Comparison Function for the Key Type
    STL Iterators
    SPOJ Pouring Water
    求DAG上两点的最短距离
  • 原文地址:https://www.cnblogs.com/zhangzhenzhen/p/5251241.html
Copyright © 2011-2022 走看看