数据库查询和数据操纵——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表:

           

 StuWork表:

           

Course表:

          

--(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'

--普通子查询

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

                           

                        

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

delete from Stu where SN='张乐'

      

select * from Stu

 

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

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

     

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小凡同学zero

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值