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
--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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构