敲代码的帅boy
T-SQL 课堂笔记速记 2019-11-12

T-SQL

   ----create view 必须是批处理命令中仅有的语句

 create view  学生成绩视图(姓名,课程名,成绩)
 as
  select  sname,cname,grade from student ,cj,course
 where(student.sno=cj.sno  and cj.cno=course.cno)

 go                          -- 通过go结束create的执行



 select * from 学生成绩视图


/*    局部变量的定义和赋值*/

 declare @MY_VAR1 char(20),@MY_VAR2 char(10)

 select  @MY_VAR1='你好',@MY_VAR2='HAPPY'       
 --均是联接输出 
 select @MY_VAR1+@MY_VAR2              --------通常情况下可以输出的是一列
 print   @MY_VAR1+@MY_VAR2                       ---一般打印的是文本

 select * from student where(ssex='女')

 --可以通过给所要查询的进行定义变量,并对变量进行赋值操作,通过select变量来得到结果查询
 




 /*    BEGIN  ......END*/

例:

 /*在cj表中查询是否开过“C语言”
 这门课  开过计算平均分*/
 select  * from course where(cname='SQL SERVER')

 if exists(
 select sno from cj,course
 where(cname='C语言'and cj.cno=course.cno))

 begin
 select avg(grade) 平均成绩  from  cj,course
 where cj.cno=course.cno and cname='C语言'
 select  '已开过;平均成绩如上'
 end
 else
 select '没人选修'
 
 
 
 /*通过定义变量,给变量赋值的方法*/


if exists(
 select sno from cj,course
 where(cname='C语言'and cj.cno=course.cno))

 begin
 DECLARE @AVG FLOAT

  SET @AVG=(select avg(grade) 平均成绩  from  cj,course
 where cj.cno=course.cno and cname='C语言')
 select  '已开过C语言',@AVG AS 平均分

 end
 else
 select '没有开过C语言课'

 









--CASE表达式,进行分支选择
 /*
 显示cj表中的数据。并使用case语句将课程号替换为课程名

 */
 例:
 select 
 课程名=(case cno
 when  '1'   then 'C语言'
 when  '2'   then '数据结构'
 when  '3'   then '数据库原理'
 when   '4'   then   'SQL SERVER'
 end
 ) ,
 sno,grade  from cj





 /*case的搜索表达式 
 when 逻辑表达式 1 then 结果表达式1
 else
 */



例:
 /*显示cj数据
 输出考试等级
 >90优,80-90良,70-80中,60-70及格,<60不及格

 */
 select 
 成绩=(case 
 when  grade>=90   then '优'
 when  grade>=80   then '良'
 when   grade>=70   then '中'
 when    grade>=60    then   '及格'
 else  '不及格'
 end
 ) ,
 sno,grade  from cj

 /*GOTO语句*/
 
 --例:求5的阶乘
 
 DECLARE  @I int, @T  int
 SET @I=1
 SET @T=1

 LABEL:
 SET @T=@T*@I
 SET @I=@I+1
 IF @I<=5
 GOTO LABEL
 SELECT @T