数据库查询资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5、利用字符串函数,截取“SQL Server2005”,从第5个字符开始的长度为10的字符串。
declare@stringtestchar(20)
set@stringtest='SQL Server 2005'
selectsubstring(@stringtest,5,7)
6、利用字符串函数,将“hello world”的前导空格去掉。
12.删除计算机科学系学生视图C_Student中学号为091714145的学生的记录:
usexsgl
go
deletefromc_student
wheresno='091714145'
13.删除视图S_G:
Usexsgl
go
dropviews_g
1.创建所有学生的基本信息和选课信息的视图
Select view s_sc as select student.* cno, grade from student, sc where student.sno=sc.sno
fromcourse
go
4、计算’ZB171402’号课程的学生的平均成绩,最高分和最低分:
selectavg(grade)as平均成绩,max(grade)as最高成绩,min(grade)as最低成绩
joinsconsc.sno=s.sno
wheredname='计算机科学系'andcno='ZB171401'
3.建立计算机科学系选修了ZB171401号课程且成绩在90分以上的学生的视图:
usexsgl
go
createviewc_course
as
selects.sno,sname,ssex,birth,depart,dname,cno,gradefromstudent sjoindepartment dons.depart=d.deno
GO
select
*fromdbo.top_grade('17')
go
8、自定义一个名为Fun_add函数,实现两个数值的加法,并返回其和值。并调用该函数。
CREATEFUNCTIONFun_add
(@num1int,@num2int)
RETURNSint
AS
BEGIN
declare@numint
set@num=@num1+@num2
joinsconsc.sno=s.sno
wheredname='计算机科学系'andcno='ZB171401'andgrade>90
4.创建一个反映学生出生年份的视图:
usexsgl
go
createviews_year
as
selectsno,sname,datepart(yyyy,birth)出生年份fromstudent
return@num
END
select
dbo.fun_add(10,20)
3、利用日期函数,计算你来到这个世界已经有多少天?
setlanguageus_english
declare@firsttimedatetime,@secondtimedatetime
set@firsttime='1991-12-02'
)
go
select*fromkcci('张三')
go
2、使用XSGL数据库中适当的表,创建一个自定义函数—xbxs,该函数可以根据输入的系部名称返回该系学生的学号、姓名和出生日期。并调用该函数。
createfunctionxbxs(@dnamevarchar(20))
returnstable
as
return(
selectsname,s.sno,birthfromstudent sjoin
department dond.deno=s.depart
wheredname=@dname
)
ห้องสมุดไป่ตู้go
select*fromxbxs('计算机科学系')
go
3、使用系统存储过程sp_helptext查看kccj函数的文本信息。
8、给出课程号为“ZB171401”的学生成绩单,将百分制成绩换算成优、良、中等、及格、不及格。
selectsname,sc.sno,cno,grade,成绩评级=
case
whengrade>=85then'优'
whengrade>=80andgrade<85then'良'
whengrade>=70andgrade<80then'中等'
set@secondtime=getdate()
selectdatediff(dy,@firsttime,@secondtime)
4、将32768.55转换为整数。
declare@floattestfloat
set@floattest='32768.55'
selectcast(@floattestasint)
groupbyS.sno
6.将视图C_student修改为计算机科学系的所有女生的视图
usexsgl
go
ALTERviewc_student
as
selectsno,sname,ssex,birth,depart,dnamefromstudent sjoindepartment dons.depart=d.deno
CREATEFUNCTIONtop_grade(@deptchar(20))
RETURNSTABLE
AS
RETURN(SELECTtop3 sc.sno,s.sname,avg(grade)as平均成绩FROMStudent S,SC
WHERES.Sno=SC.SnoANDDepart=@deptgroupbysc.sno,s.snameorderby平均成绩desc)
declare@stringtestchar(20)
set@stringtest=' hello world'
selectltrim(@stringtest)
7、延迟20秒执行查询select * from student
usexsgl
go
waitfordelay'00:00:20'
select*fromstudent
whengrade>=60andgrade<70then'及格'
whengrade<60then'不及格'
else
'没选修成绩'
end
fromsc,student
wheresc.sno=student.snoandcno='ZB171401'
1、查询学生总人数:
selectcount(*)学生总人数
END
selectdbo.sc_pass(95)
7、定义一个内嵌表值函数,通过课程名、系名称可以查询某系中选修了该课程的全部学生名单和成绩。并调用该函数。
CREATEFUNCTIOND_courseG(@deptchar(20),@Cnavarchar(20))
RETURNSTABLE
AS
RETURN(SELECTSname,Cname,GradeFROMStudent S,SC,Course C
8.查询计算机科学系选修了ZB171401号课程的学生:
usexsgl
go
SELECT*fromc_course
9.在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩:
select*
fromS_G
where平均分>90
10.将计算机科学系学生视图C_student中学号为”061713101”的学生姓名改为”刘辰”:
2.基于上述视图查询各系学生各门功课的平均成绩.
Select sdept, cno, avg(grade) as avg_grade from s_sc group by cno, sdept.
1、使用XSGL数据库中适当的表,创建一个自定义函数—kccj,该函数可以根据输入的学生姓名返回该学生选修的课程名称和成绩。并调用该函数。
WHERES.Sno=SC.SnoANDSC.Cno=C.CnoANDDepart=@deptAND@Cna=C.Cname)
GO
Select*fromd_courseg('17','操作系统')
8、创建自定义函数top_grade( ),根据输入的系代码统计出该系平均成绩最高的前三名同学的信息。并调用该函数。
2.创建计算机科学系选修了ZB171401号课程的学生的视图C_course:
usexsgl
go
createviewc_course
as
selects.sno,sname,ssex,birth,depart,dname,cnofromstudent sjoindepartment dons.depart=d.deno
RETURNSCHAR(8)
AS
BEGIN
DECLARE@infochar(8)
IF@grade1>=90SET@info='优秀'
ELSEIF@grade1>=75SET@info='良好'
ELSEIF@grade1>=60SET@info='通过'
ELSESET@info='不通过'
RETURN@info
usexsgl
go
updateC_student
setsname='刘辰'
wheresno='061713101'
比较:update C_Student set sname=’刘辰’ where sno=’091714150’此语句不能实现数据的更新.
(为什么呢?因为在视图中并没有”091714150”这条记录)
course conc.cno=sc.cno
wheresno=@sno
)
Go
5、删除xbxs函数。
dropfunctionxbxs
6、自定义一个函数,其功能是将一个百分制的成绩按范围转换为“优秀”,“良好”,“通过”,“不及格”。并调用该函数。
CREATEFUNCTIONsc_pass
(@grade1int)
sp_helptextkcci
4、修改kccj函数,使该函数根据输入的学生学号返回该学生的姓名、选修课程名称和成绩。
alterfunctionkcci(@snochar(9))
returnstable
as
return(
selectsname,cname,gradefromstudent sjoin
sconsc.sno=s.snojoin
fromstudent
go
2、查询选修了课程的学生总数:
selectcount(*)学生总数
fromsc
go
3、查询所有课程的总学分数和平均学分数,以及最高学分和最低学分:
selectsum(ccredit)as总学分,avg(ccredit)as平均成绩,max(ccredit)as最高学分,min(ccredit)as最低学分
11.向计算机科学系学生视图C_Student中插入一个新的学生记录,学号为091714145,姓名为”赵新”,出生日期为1991-1-2:
此操作能成功吗?
不能成功,格式不匹配,INSERT语句与FOREIGN KEY约束"FK_Student_Department"冲突。该冲突发生于数据库"xsgl",表"dbo.Department", column 'Deno'。
5.将所有女生的记录定义为一个视图:
usexsgl
go
createviews_women
as
select*fromstudentwheressex='女'
6.将所有学生的学号和他的平均成绩定义为一个视图S_G:
usexsgl
go
createviewS_G
as
selectS.sno,avg(grade)平均分fromstudent Sjoinsconsc.sno=s.sno
createfunctionkcci(@snamevarchar(10))
returnstable
as
return(
selectsname,s.sno,cname,gradefromstudent sjoin
sconsc.sno=s.snojoin
course conc.cno=sc.cno
where sname=@sname
wheredname='计算机科学系'ANDSSEX='女'
7.在计算机科学系的学生视图c_student中查询年龄小于22岁的学生:
usexsgl
go
selectdatediff(yy,birth,getdate())as年龄
fromC_student
wheredatediff(yy,birth,getdate())<22
一、视图的创建:
1.创建计算机科学系学生信息的视图C_student
usexsgl
go
createviewc_student
as
selectsno,sname,ssex,birth,depart,dnamefromstudent sjoindepartment dons.depart=d.deno
wheredname='计算机科学系'
declare@stringtestchar(20)
set@stringtest='SQL Server 2005'
selectsubstring(@stringtest,5,7)
6、利用字符串函数,将“hello world”的前导空格去掉。
12.删除计算机科学系学生视图C_Student中学号为091714145的学生的记录:
usexsgl
go
deletefromc_student
wheresno='091714145'
13.删除视图S_G:
Usexsgl
go
dropviews_g
1.创建所有学生的基本信息和选课信息的视图
Select view s_sc as select student.* cno, grade from student, sc where student.sno=sc.sno
fromcourse
go
4、计算’ZB171402’号课程的学生的平均成绩,最高分和最低分:
selectavg(grade)as平均成绩,max(grade)as最高成绩,min(grade)as最低成绩
joinsconsc.sno=s.sno
wheredname='计算机科学系'andcno='ZB171401'
3.建立计算机科学系选修了ZB171401号课程且成绩在90分以上的学生的视图:
usexsgl
go
createviewc_course
as
selects.sno,sname,ssex,birth,depart,dname,cno,gradefromstudent sjoindepartment dons.depart=d.deno
GO
select
*fromdbo.top_grade('17')
go
8、自定义一个名为Fun_add函数,实现两个数值的加法,并返回其和值。并调用该函数。
CREATEFUNCTIONFun_add
(@num1int,@num2int)
RETURNSint
AS
BEGIN
declare@numint
set@num=@num1+@num2
joinsconsc.sno=s.sno
wheredname='计算机科学系'andcno='ZB171401'andgrade>90
4.创建一个反映学生出生年份的视图:
usexsgl
go
createviews_year
as
selectsno,sname,datepart(yyyy,birth)出生年份fromstudent
return@num
END
select
dbo.fun_add(10,20)
3、利用日期函数,计算你来到这个世界已经有多少天?
setlanguageus_english
declare@firsttimedatetime,@secondtimedatetime
set@firsttime='1991-12-02'
)
go
select*fromkcci('张三')
go
2、使用XSGL数据库中适当的表,创建一个自定义函数—xbxs,该函数可以根据输入的系部名称返回该系学生的学号、姓名和出生日期。并调用该函数。
createfunctionxbxs(@dnamevarchar(20))
returnstable
as
return(
selectsname,s.sno,birthfromstudent sjoin
department dond.deno=s.depart
wheredname=@dname
)
ห้องสมุดไป่ตู้go
select*fromxbxs('计算机科学系')
go
3、使用系统存储过程sp_helptext查看kccj函数的文本信息。
8、给出课程号为“ZB171401”的学生成绩单,将百分制成绩换算成优、良、中等、及格、不及格。
selectsname,sc.sno,cno,grade,成绩评级=
case
whengrade>=85then'优'
whengrade>=80andgrade<85then'良'
whengrade>=70andgrade<80then'中等'
set@secondtime=getdate()
selectdatediff(dy,@firsttime,@secondtime)
4、将32768.55转换为整数。
declare@floattestfloat
set@floattest='32768.55'
selectcast(@floattestasint)
groupbyS.sno
6.将视图C_student修改为计算机科学系的所有女生的视图
usexsgl
go
ALTERviewc_student
as
selectsno,sname,ssex,birth,depart,dnamefromstudent sjoindepartment dons.depart=d.deno
CREATEFUNCTIONtop_grade(@deptchar(20))
RETURNSTABLE
AS
RETURN(SELECTtop3 sc.sno,s.sname,avg(grade)as平均成绩FROMStudent S,SC
WHERES.Sno=SC.SnoANDDepart=@deptgroupbysc.sno,s.snameorderby平均成绩desc)
declare@stringtestchar(20)
set@stringtest=' hello world'
selectltrim(@stringtest)
7、延迟20秒执行查询select * from student
usexsgl
go
waitfordelay'00:00:20'
select*fromstudent
whengrade>=60andgrade<70then'及格'
whengrade<60then'不及格'
else
'没选修成绩'
end
fromsc,student
wheresc.sno=student.snoandcno='ZB171401'
1、查询学生总人数:
selectcount(*)学生总人数
END
selectdbo.sc_pass(95)
7、定义一个内嵌表值函数,通过课程名、系名称可以查询某系中选修了该课程的全部学生名单和成绩。并调用该函数。
CREATEFUNCTIOND_courseG(@deptchar(20),@Cnavarchar(20))
RETURNSTABLE
AS
RETURN(SELECTSname,Cname,GradeFROMStudent S,SC,Course C
8.查询计算机科学系选修了ZB171401号课程的学生:
usexsgl
go
SELECT*fromc_course
9.在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩:
select*
fromS_G
where平均分>90
10.将计算机科学系学生视图C_student中学号为”061713101”的学生姓名改为”刘辰”:
2.基于上述视图查询各系学生各门功课的平均成绩.
Select sdept, cno, avg(grade) as avg_grade from s_sc group by cno, sdept.
1、使用XSGL数据库中适当的表,创建一个自定义函数—kccj,该函数可以根据输入的学生姓名返回该学生选修的课程名称和成绩。并调用该函数。
WHERES.Sno=SC.SnoANDSC.Cno=C.CnoANDDepart=@deptAND@Cna=C.Cname)
GO
Select*fromd_courseg('17','操作系统')
8、创建自定义函数top_grade( ),根据输入的系代码统计出该系平均成绩最高的前三名同学的信息。并调用该函数。
2.创建计算机科学系选修了ZB171401号课程的学生的视图C_course:
usexsgl
go
createviewc_course
as
selects.sno,sname,ssex,birth,depart,dname,cnofromstudent sjoindepartment dons.depart=d.deno
RETURNSCHAR(8)
AS
BEGIN
DECLARE@infochar(8)
IF@grade1>=90SET@info='优秀'
ELSEIF@grade1>=75SET@info='良好'
ELSEIF@grade1>=60SET@info='通过'
ELSESET@info='不通过'
RETURN@info
usexsgl
go
updateC_student
setsname='刘辰'
wheresno='061713101'
比较:update C_Student set sname=’刘辰’ where sno=’091714150’此语句不能实现数据的更新.
(为什么呢?因为在视图中并没有”091714150”这条记录)
course conc.cno=sc.cno
wheresno=@sno
)
Go
5、删除xbxs函数。
dropfunctionxbxs
6、自定义一个函数,其功能是将一个百分制的成绩按范围转换为“优秀”,“良好”,“通过”,“不及格”。并调用该函数。
CREATEFUNCTIONsc_pass
(@grade1int)
sp_helptextkcci
4、修改kccj函数,使该函数根据输入的学生学号返回该学生的姓名、选修课程名称和成绩。
alterfunctionkcci(@snochar(9))
returnstable
as
return(
selectsname,cname,gradefromstudent sjoin
sconsc.sno=s.snojoin
fromstudent
go
2、查询选修了课程的学生总数:
selectcount(*)学生总数
fromsc
go
3、查询所有课程的总学分数和平均学分数,以及最高学分和最低学分:
selectsum(ccredit)as总学分,avg(ccredit)as平均成绩,max(ccredit)as最高学分,min(ccredit)as最低学分
11.向计算机科学系学生视图C_Student中插入一个新的学生记录,学号为091714145,姓名为”赵新”,出生日期为1991-1-2:
此操作能成功吗?
不能成功,格式不匹配,INSERT语句与FOREIGN KEY约束"FK_Student_Department"冲突。该冲突发生于数据库"xsgl",表"dbo.Department", column 'Deno'。
5.将所有女生的记录定义为一个视图:
usexsgl
go
createviews_women
as
select*fromstudentwheressex='女'
6.将所有学生的学号和他的平均成绩定义为一个视图S_G:
usexsgl
go
createviewS_G
as
selectS.sno,avg(grade)平均分fromstudent Sjoinsconsc.sno=s.sno
createfunctionkcci(@snamevarchar(10))
returnstable
as
return(
selectsname,s.sno,cname,gradefromstudent sjoin
sconsc.sno=s.snojoin
course conc.cno=sc.cno
where sname=@sname
wheredname='计算机科学系'ANDSSEX='女'
7.在计算机科学系的学生视图c_student中查询年龄小于22岁的学生:
usexsgl
go
selectdatediff(yy,birth,getdate())as年龄
fromC_student
wheredatediff(yy,birth,getdate())<22
一、视图的创建:
1.创建计算机科学系学生信息的视图C_student
usexsgl
go
createviewc_student
as
selectsno,sname,ssex,birth,depart,dnamefromstudent sjoindepartment dons.depart=d.deno
wheredname='计算机科学系'