数据库查询和数据操纵——SQL语句连接、相关、子查询

掌握各种查询的使用方法

掌握数据操纵的使用方法

创建的学生作业管理数据库以及其中的学生表、课程表和学生作业表见前面文章

1.使用查询语句完成以下任务(每一个查询都要给出SQL语句,并且列出查询结果)。

(1)查询与“张志国”同一班级的学生信息(使用连接查询和子查询方式)。

(2)查询比“计算机应用基础”学时多的课程信息(使用连接查询和子查询方式)。

(3)查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、相关子查询)。

(4)查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。

2.使用数据操纵完成以下任务(每一个任务都要给出SQL语句,并且列出查询结果)。

(1)在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。

(2)将所有课程的学分数变为原来的两倍。

(3)删除张乐的信息。

使用查询语句完成以下任务(每一个查询都要给出SQL语句,并且列出查询结果)

调用数据库查看数据表

use STU_Information
go
select * from Stu
select * from StuWork
select * from Course

Stu表:

           数据库查询和数据操纵——SQL语句连接、相关、子查询_第1张图片

 StuWork表:

           数据库查询和数据操纵——SQL语句连接、相关、子查询_第2张图片

Course表:

          数据库查询和数据操纵——SQL语句连接、相关、子查询_第3张图片

--(1)查询与“张志国”同一班级的学生信息(使用连接查询和子查询方式)。

--连接查询
select Stu1.* from Stu as Stu1,Stu as Stu2
where Stu2.SN='张志国' and Stu2.ProClass=Stu1.ProClass

--子查询
select * from Stu
where ProClass =(select ProClass from Stu 
where SN='张志国')
 
--(2)查询比“计算机应用基础”学时多的课程信息(使用连接查询和子查询方式)。

--连接查询
select Course1.* from Course as Course1,Course as Course2
where Course2.CN='计算机应用基础' and Course1.CHour>Course2.CHour

--子查询
select * from Course 
where CHour >(select CHour from Course
where CN='计算机应用基础')

--(3)查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、相关子查询)。

--连接查询
select Stu.SNo,Stu.SN from Stu,StuWork
where Stu.SNo=StuWork.SNo and StuWork.CNo='K002'

--普通子查询
select distinct Stu.SNo,Stu.SN from Stu,StuWork
where Stu.SNo in (select Stu.SNo from StuWork
where Stu.SNo=StuWork.SNo and StuWork.CNo='K002'
)

--相关子查询
select distinct Stu.SNo,Stu.SN from Stu,StuWork
where Stu.SNo in(select StuWork.SNo from StuWork
where StuWork.CNo='K002')

--exists 关键字的相关子查询
select distinct Stu.SNo,Stu.SN from Stu,StuWork
where exists (select * from StuWork
where Stu.SNo=StuWork.SNo and StuWork.CNo='K002')

--(4)查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。

--子查询
 
 select distinct SNo,CNo,WScore1,WScore2,WScore3
 from  StuWork
 where SNo not in (select SNo from StuWork where CNo='K001'or CNo='M001')

 --2.使用数据操纵完成以下任务(每一个任务都要给出SQL语句,并且列出查询结果)。

--(1)在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。

--修改Stu表中Birthday属性可以为空
alter table Stu 
alter column Birthday datetime null
--添加语句
insert into Stu(SNo,SN,Sex,ProClass) values('0593','张乐','男','电子05')

select * from Stu

--(2)将所有课程的学分数变为原来的两倍。

--select CN,Credit from Course
update Course set Credit = Credit*2
update Course set Credit = Credit/2
--(3)删除张乐的信息。
delete from Stu where SN='张乐'
select * from Stu

--(1)查询与“张志国”同一班级的学生信息(使用连接查询和子查询方式)。

--连接查询

select Stu1.* from Stu as Stu1,Stu as Stu2

where Stu2.SN='张志国' and Stu2.ProClass=Stu1.ProClass

  

--子查询

select * from Stu

where ProClass =(select ProClass from Stu

where SN='张志国')

--(2)查询比“计算机应用基础”学时多的课程信息(使用连接查询和子查询方式)。

--连接查询

select Course1.* from Course as Course1,Course as Course2

where Course2.CN='计算机应用基础' and Course1.CHour>Course2.CHour

--子查询

select * from Course

where CHour >(select CHour from Course

where CN='计算机应用基础')

--(3)查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、相关子查询)。

--连接查询

select Stu.SNo,Stu.SN from Stu,StuWork

where Stu.SNo=StuWork.SNo and StuWork.CNo='K002'

数据库查询和数据操纵——SQL语句连接、相关、子查询_第4张图片

--普通子查询

select distinct Stu.SNo,Stu.SN from Stu,StuWork

where Stu.SNo in (select Stu.SNo from StuWork

where Stu.SNo=StuWork.SNo and StuWork.CNo='K002')

数据库查询和数据操纵——SQL语句连接、相关、子查询_第5张图片

--相关子查询

select distinct Stu.SNo,Stu.SN from Stu,StuWork

where Stu.SNo in(select StuWork.SNo from StuWork

where StuWork.CNo='K002')

数据库查询和数据操纵——SQL语句连接、相关、子查询_第6张图片

--exists 关键字的相关子查询

select distinct Stu.SNo,Stu.SN from Stu,StuWork

where exists (select * from StuWork

where Stu.SNo=StuWork.SNo and StuWork.CNo='K002')

数据库查询和数据操纵——SQL语句连接、相关、子查询_第7张图片

--(4)查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。

--子查询

 select distinct SNo,CNo,WScore1,WScore2,WScore3

 from  StuWork

 where SNo not in (select SNo from StuWork where CNo='K001'or CNo='M001')

数据库查询和数据操纵——SQL语句连接、相关、子查询_第8张图片

 

--2.使用数据操纵完成以下任务(每一个任务都要给出SQL语句,并且列出查询结果)。

--(1)在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。

--修改Stu表中Birthday属性可以为空

alter table Stu

alter column Birthday datetime null

--添加语句

insert into Stu(SNo,SN,Sex,ProClass) values('0593','张乐','男','电子05')

     

select * from Stu

  数据库查询和数据操纵——SQL语句连接、相关、子查询_第9张图片

--(2)将所有课程的学分数变为原来的两倍。

--select CN,Credit from Course

update Course set Credit = Credit*2

                         数据库查询和数据操纵——SQL语句连接、相关、子查询_第10张图片  

                        数据库查询和数据操纵——SQL语句连接、相关、子查询_第11张图片数据库查询和数据操纵——SQL语句连接、相关、子查询_第12张图片

--(3)删除张乐的信息。

delete from Stu where SN='张乐'

      数据库查询和数据操纵——SQL语句连接、相关、子查询_第13张图片

select * from Stu

 数据库查询和数据操纵——SQL语句连接、相关、子查询_第14张图片

 -----------------------------------------------------------------------------------------------------------------------------

创建的学生作业管理数据库以及其中的学生表、课程表和学生作业表见前面文章

     

      

你可能感兴趣的:(SQL,数据库,sql)