Sql Server 数据库 多表连接操作
2017-03-24 17:29
218 查看
--相对应的数据库文件在下面
--多表连接查询
select Student.StudentName,Subject.SubjectName,Result.StudentResult from Student,Subject,Result
where Student.StudentNo=Result.StudentNo
and Subject.SubjectId=Result.SubjectId
order by StudentName
--inner join 链接的表必须有相同的列,主外键关系
select Student.StudentName,Subject.SubjectName,Result.StudentResult,Grade.GradeName,AVG(Result.StudentResult) as '平均分' from Student
inner join Subject
on Student.GradeId=Subject.GradeId
inner join Result
on Subject.SubjectId=Result.SubjectId
inner join Grade
on Grade.GradeId=Student.GradeId
where Grade.GradeName='s2'
group by Student.StudentName,Grade.GradeName,Subject.SubjectName,Result.StudentResult
having AVG(Result.StudentResult)>60
order by AVG(Result.StudentResult) desc
--查询年纪编号为1的年纪名称、科目名称及学时
select Grade.GradeName,Subject.SubjectName,Subject.ClassHour from Grade
inner join Subject
on Grade.GradeId=Subject.GradeId
where Grade.GradeId=1
--查询学生学号、姓名、考试科目及成绩
select Student.StudentNo,Student.StudentName,Subject.SubjectName,Result.StudentResult from Student
inner join Subject
on Student.GradeId=Subject.GradeId
inner join Result
on Result.SubjectId=Subject.SubjectId
--查询参加‘走进java编程世界’考试的学生姓名、成绩、日期
select Subject.SubjectName,Student.StudentName,Result.StudentResult,Result.ExamDate from Student
inner join Result
on Student.StudentNo=Result.StudentNo
inner join Subject
on Subject.SubjectId=Result.SubjectId
where Subject.SubjectName='走进Java编程世界'
order by Result.StudentResult desc
--左右连接
--左连接,左表和右表有数据差异,查出左表数据,右表差异部分显示为空
select distinct(Student.StudentNo),Result.SubjectId,Result.SubjectId from Student
left join Result
on Student.StudentNo=Result.StudentNo
where Result.SubjectId is null
--查询所有科目的参加考试的学生信息
select * from Student
left join Subject
on Student.GradeId=Subject.GradeId
--右连接的左边为右表连接数据
--查询从未考试的科目信息
select * from Result
right join Student
on Student.StudentNo=Result.StudentNo
where Result.StudentResult is null
--查询所有年级对应的学生信息
select * from Grade
left join Student
on Grade.GradeId=Student.GradeId
--多表连接查询
select Student.StudentName,Subject.SubjectName,Result.StudentResult from Student,Subject,Result
where Student.StudentNo=Result.StudentNo
and Subject.SubjectId=Result.SubjectId
order by StudentName
--inner join 链接的表必须有相同的列,主外键关系
select Student.StudentName,Subject.SubjectName,Result.StudentResult,Grade.GradeName,AVG(Result.StudentResult) as '平均分' from Student
inner join Subject
on Student.GradeId=Subject.GradeId
inner join Result
on Subject.SubjectId=Result.SubjectId
inner join Grade
on Grade.GradeId=Student.GradeId
where Grade.GradeName='s2'
group by Student.StudentName,Grade.GradeName,Subject.SubjectName,Result.StudentResult
having AVG(Result.StudentResult)>60
order by AVG(Result.StudentResult) desc
--查询年纪编号为1的年纪名称、科目名称及学时
select Grade.GradeName,Subject.SubjectName,Subject.ClassHour from Grade
inner join Subject
on Grade.GradeId=Subject.GradeId
where Grade.GradeId=1
--查询学生学号、姓名、考试科目及成绩
select Student.StudentNo,Student.StudentName,Subject.SubjectName,Result.StudentResult from Student
inner join Subject
on Student.GradeId=Subject.GradeId
inner join Result
on Result.SubjectId=Subject.SubjectId
--查询参加‘走进java编程世界’考试的学生姓名、成绩、日期
select Subject.SubjectName,Student.StudentName,Result.StudentResult,Result.ExamDate from Student
inner join Result
on Student.StudentNo=Result.StudentNo
inner join Subject
on Subject.SubjectId=Result.SubjectId
where Subject.SubjectName='走进Java编程世界'
order by Result.StudentResult desc
--左右连接
--左连接,左表和右表有数据差异,查出左表数据,右表差异部分显示为空
select distinct(Student.StudentNo),Result.SubjectId,Result.SubjectId from Student
left join Result
on Student.StudentNo=Result.StudentNo
where Result.SubjectId is null
--查询所有科目的参加考试的学生信息
select * from Student
left join Subject
on Student.GradeId=Subject.GradeId
--右连接的左边为右表连接数据
--查询从未考试的科目信息
select * from Result
right join Student
on Student.StudentNo=Result.StudentNo
where Result.StudentResult is null
--查询所有年级对应的学生信息
select * from Grade
left join Student
on Grade.GradeId=Student.GradeId
相关文章推荐
- 学习笔记:jdbc连接、操作数据库SQL Server 2008 ——MyEclipse web示例
- 在Sql Server里通过Sql语句【连接】和【操作】另一个【外地数据库】!
- 学习笔记:jdbc连接、操作数据库SQL Server 2008(二)
- SQL Server Mobile 学习(二):通过 VS2005 创建和连接及操作 SQL Server Mobile 数据库
- SQL Server Mobile 学习(二):通过 VS2005 创建和连接及操作 SQL Server Mobile 数据库
- PowerShell 连接 SQL SERVER 数据库进行操作
- SQL Server Mobile 学习(二):通过 VS2005 创建和连接及操作 SQL Server Mobile 数据库
- 使用VS2010连接SQL Server 2008数据库混合编程以实现对数据库的操作
- 在Sql Server里通过Sql语句【连接】和【操作】另一个【外地数据库】
- 学习笔记:jdbc连接、操作数据库SQL Server 2008
- 数据库开发基本操作-SQL Server 2005 不允许远程连接解决方法
- java对三大主流数据库sql server、mysql、oracle的连接和操作
- C# 连接 SQL Server 2008 基础操作+数据库增删改查
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- ASP常用数据库连接及操作的方法和技巧
- 数据库:连接字符串,操作等
- 数据库操作中的函数应用(难忘的 字符串连接出错~!
- ASP常用数据库连接及操作的方法和技巧
- 关于JDBC driver连接SQL Server 2000数据库问题的解决办法
- SQL Server 2000数据库连接