SQL子查询

-----------------------------------
--1使用子查询实现命题查询出所有没有参加考试的同学的学生编号,姓名。
use MySchool
select * from Student
select * from Score


select sNo,sName from Student
where sId not in(select studentId from Score)


--2使用联接重做:查询出所有没有参加考试的同学的学生编号,姓名。
   
   select sNo,sName from(
   select sNo,sName,scoreId from Student
   left outer join Score on Student.sId=Score.studentId )
   as tab1 where scoreId is null
   
--3查询所有英语及格的学生姓名、年龄及成绩


  select sName,sAge,english,math  from Student
  inner join Score on Student.sId=Score.studentId
  where english>60 and math>60
  
--4查询所有参加考试的(english分数不为null)学生姓名、年龄及成绩


   select sName,sAge,english from Student
   inner join Score on Student.sId=Score.studentId
   where english is not null


--5查询所有学生(报考的和未报考的)的学生姓名、年龄、成绩,如果报考了
--但是没有参加考试显示缺考,如果小于english&math小于60分显示不及
--如果没有报考显示没有报考(添加两列 ,“是否报考”,“是否合格”)


 select sName,sAge,
 english=case
  when english is null then '缺考'
  else CONVERT(nvarchar(6),english)
  end,
  math=case
  when math is null then '缺考'
  else CONVERT(nvarchar(6),math)
  end,
  是否报考=case
   when scoreId is null then '未报考'
   else '已报考'
   end,
   是否合格=case
   when english>60 and math>60 then '合格'
   else '不合格'
   end
  from Student
 left outer join Score on Student.sId=Score.studentId
 
--6新建 临时表(#MyStudents,包含2个字段分别为sName、sAge)
--并将Mystudents中的相应数据copy其中。
 
 create table #Mystudents
 (
   sName nvarchar(50),
   sAge int
 )
 
 insert into #Mystudents (sName,sAge) 
 select sName,sAge from Student
 
 select * from #Mystudents
 
--7定义表变量、插入数据并查询:
--表变量在会话结时,自动释放掉
  declare @tabBL table (col1 int,col2 nvarchar(50))
  insert into @tabBL
  select 1,'A' union
  select 2,'B'
select * from @tabBL


--8新建视图,修改视图,删除视图


 create view shitu
 as
  select sName,sAge,
 english=case
  when english is null then '缺考'
  else CONVERT(nvarchar(6),english)
  end,
  math=case
  when math is null then '缺考'
  else CONVERT(nvarchar(6),math)
  end,
  是否报考=case
   when scoreId is null then '未报考'
   else '已报考'
   end,
   是否合格=case
   when english>60 and math>60 then '合格'
   else '不合格'
   end
  from Student
 left outer join Score on Student.sId=Score.studentId


 select * from shitu
 
 update Student set sName='西施' where sName='华佗'
 
 drop view shitu
原文地址:https://www.cnblogs.com/qiqiBoKe/p/2791628.html