SQL作业(第十一次课)

合集下载

SQL课后题答案整理

SQL课后题答案整理

第一章关系型数据库—基本概念和操作课后习题:========【注意:每一章后面的课后习题,是作业,也是期末考试主要的题源,期末试卷中约50分的试题就从这些题目中选取】1.各用一句话说明以下概念关系数据库,实例,属性,域,记录(元组),候选键,主键,外键1)一个关系数据库是由若干二维表和表之间的关联组成,这个库也叫一个“实例(instance)”。

2)表的第一行是“表头”,它并不是数据,而是说明每一列的数据应该“是什么”,以及取值范围和其它约束条件,“表头”的每个字段叫属性(attribute),属性的取值范围及其他约束条件叫域(field)。

属性是描述数据的数据,叫元数据。

3)每个表的各个属性不能重名,不同表的属性可以重名。

一个表也可以叫一个关系,表中的数据,有的是本表实体的数据,有的是与其它表的联系,比如“表8:选课表”,“课程号”和“学号”列是联系。

4)每张表从第二行往后是数据部分、每一行叫一条记录,或一个元组。

记录中的每一列可以叫一个字段。

6.每张表至少应该有一个,也可以有多个属性,可以唯一的确定一条记录,这种属性叫候选键(candidate key),比如,表5:“学生表”的“学号”肯定是候选键,而“姓名”如果加上不允许重复的约束条件,也是候选键,否则不是。

5)当一个表中有多个候选键,可以从中任选一个作为主键(prime key) ,当一个表只有一个候选键,它自然就是主键。

主键可以是数值,可以是字符串或其它类型,但无论如何主键的值不能为空,不同记录的主键值也不能重复。

6)外键(foreign key):在本表中是主键,而在其它表中可能不是主键,叫外键。

比如,“表8:选课表”的“课程号”和“学号”在该表中都不是主键,是可以重复的。

而在“表7:课程表”和“表5:学生表”中,却是各自的主键。

外键说明了一个表和另一个表的关联,是关系数据库中重要的键。

第二章关系型数据库—SQL语言本章习题(1)本章“8 小结”表中提到的重点关键词、谓词、句型、概念。

SQL经典习题及答案(新手必看)

SQL经典习题及答案(新手必看)

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100* SUM(CASE WHEN isnull(score,0)>=60THEN 1ELSE 0END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; 28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。

SQL第11章存储过程PPT教学课件

SQL第11章存储过程PPT教学课件
• ① 进入企业管理器,展开相应的服务器组和相应的服务器节点。
• ② 按顺序展开“数据库”节点、要创建视图所属的数据库(假设为 JWGL)、再展开“存储过程”子节点。
• ③ 点击工具栏中“新建”按钮(或右击“存储过程”,在系统弹出的 快捷菜单上点击“新建存储过程”),出现如图11-1的“新建存储过 程”窗口。
第11章 存储过程的创建和使用
11.1 存储过程的定义 11.2 存储过程的优点 11.3 存储过程的创建 11.4 重新编译存储过程 11.5 自动执行存储过程 11.6 查看、修改和删除存储过程 11.7 扩展存储过程
返回目录
11.1 存储过程的定义
▪ 存储过程是一系列预先编辑好的、能实现特定数 据操作功能的SQL代码集,它与特定的数据库相
2020/12/12
9
11.3.3 创建带输入参数的存储过程
▪ 输入参数是指由调用程序向存储过程传递的参数。 ▪ 具体语法如下:
@parameter_name dataype[=default]
▪ 其中:
● @parameter_name:存储过程的输入参数名,必须以@符 号为前缀。执行该存储过程时,应该向输入参数提供相 应的值。
ON a.student_id = d.student_id INNER JOIN course b ON d.course_id = b.course_id INNER JOIN teacher_course_class e ON (e.class_id = a.class_id) and (e.course_id = d.course_id) INNER JOIN teacher c ON c.teacher_id = e.teacher_id

SQL语言课后练习[大全5篇]

SQL语言课后练习[大全5篇]

SQL语言课后练习[大全5篇]第一篇:SQL语言课后练习岳阳市湖湘认证培训学校学院路504号************SQL语言课后练习题以下练习都是基于数据库XSG,及数据库表XSCJ与XSDA中操作,表结构如下:XSCJ(学号C(10),语文N(4,1),数学N(4,1),英语N(4,1),计算机N(4,1),平均成绩N(4,1))XSDA(学号C(10),姓名C(10),性别C(4),班级C(10),出生日期D,籍贯C(20),家庭情况G,简历M,照片G)1、用SQL语句建立XSDA表,并为学号字段创建为主关键字,约束性别字段的值只能为男或为女,如果在不输入信息的情况下默认值是女。

2、用SQL语句建立XSCJ表,并与XSDA表建立联系。

3、为XSDA表增加一个学费字段,要求为货币型,约束字段有效性规则:学费必须在0至20000元内(含),否则提示:学费错了。

4、修改XSDA表学费字段,要求学费必须在2000-20000间(含),否则提示:学费错了。

5、修改XSDA表学费字段,删除它的字段有效性规则。

6、修改XSDA表学费字段,将其改名为:学杂费。

7、修改XSDA表的籍贯字段的宽度为10。

8、删除XSDA表的学费字段。

9、将XSDA表的姓名字段和性别字段定义为候选索引,索引名为:TEMP。

10、删除XSDA表的候选索引TEMP。

11、删除XSDA表及XSCJ表。

12、在XSCJ表中插入一个元组:学号:19980405,语文:78,数学:68,英语:74,计算机:90,平均成绩:77.50。

13、在XSDA表中插入一个元组:学号:19980405,姓名:王小辉,性别:男,出生日期:1981年12月5日14、在XSCJ表中为所有学生的英语成绩加10分15、在XSDA表中为学号为:19980405的学生的籍贯改为岳阳市16、删除XSDA表中学号为19980405的记录17、将XSDA表复制到XSDABAK表18、从XSG数据库中的XSDA表查找所有学生的学号、姓名和班级的情况19、从XSG数据库的XSDA表查找计981班的学生的学号、姓名和班级的情况20、从XSG数据库中的XSCJ表中查找计算机成绩大于80的学生的学号21、从XSG数据库的XSDA表查找所有学生的学号、姓名和班级的情况,并按学号降序排序22、从XSG数据库中的XSCJ表中查找计算机成绩大于60的学生学号、语文、计算机和平均成绩,并按计算机的降序排序,如计算机成绩相同,按学号的升序排序23、从XSG数据库的XSDA表查找前4个学生的情况,按学号降序排序24、从XSG数据库中的XSCJ表中查找计算机成绩大于70的前40%学生的学生信息,并按计算机的降序排序25、从XSG数据库的XSDA和XSCJ表查找所有学生的姓名、语文、数学、英语和计算机成绩。

《SQL Server 2012数据库管理教程》教学课件 第11章

《SQL Server 2012数据库管理教程》教学课件 第11章

11.1.3 创立存储过程的准那么
创立存储过程时应考虑以下准那么: 1〕用相应的架构名称限定存储过程所引用的对象名称,从而确保从 存储过程中访问来自不同架构的表、视图或其他对象。如果被引用的对象 名称未加限定,那么默认情况下将搜索存储过程的架构。 2〕设计每个存储过程以完成单项任务。 3〕在效劳器上创立、测试存储过程,并对其进行故障诊断,然后在 客户端上进行测试。
使用ALTER PROCEDURE语句时应注意以下问题: 1〕如果要修改使用选项〔如WITH ENCRYPTION选项〕创立的存储过 程,那么必须在ALTER PROCEDURE语句中包含该选项,以保存该选项所 提供的功能。 2〕ALTER PROCEDURE只更改单个过程。如果该存储过程还要调用 其他存储过程,那么嵌套的存储过程不受影响。
11.1.4 存储过程的执行过程和重编译
存储过程在第一次执行时,需要经过语法分析、解析、编译和执行四个 阶段。
1〕语法分析阶段:指在创立存储过程时,系统检查其语句正确与否。如 果有错,系统会提示错误信息,并宣告创立失败;如果程序通过检查,那么 系统自动将该存储过程保存在当前数据库的目录视图中。
2〕解析阶段:又称为延迟阶段,是指查询处理器从目录视图中读取该存 储过程脚本,并检查该存储过程引用对象名称是否存在的过程,也即系统允 许在创立存储过程时,引用的对象可以不存在〔只适用于表对象〕,但这些 存储过程在执行时必须存在。
是临时对象,这由用户所给出的过程名称决定。如果过程名称以“#〞开头, 说明所建立的存储过程为局部临时存储过程;如果以“##〞开头,说明所建 立的存储过程为全局临时存储过程;除此之外所建立的存储过程为永久存 储过程。永久存储过程存储在当前数据库中,临时存储过程存储在tempdb 数据库中。

sql课后《习题》答案

sql课后《习题》答案

第1章 SQL Server概述1、有个用户的计算机不能连接到中心机房的SQL Server 2000上。

你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。

下面的哪些工具有助于你诊断和解决该问题?(多选)A.Enterprise ManagerB.Server Network UtilityC.ProfilerD.Query AnalyzerE.Client Network Utility答:B和E2、你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。

当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo?A.ModelB.TempdbC.MsdbD.MasterE.Pubs答:A、C、E3、你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。

请问该功能在哪一层被实现?A.TCP/IP协议软件B.超级套接字层C.开放式数据服务D.关系引擎E.存储引擎答:B4、你正在使用SQL Server 2000开发超市收银系统。

在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。

请问该错误在哪一层被发现?A.客户端的数据库APIB.客户端的NET-LIBRARYC.服务器端的开放式数据服务D.服务器端的关系引擎E.服务器端的存储引擎答:D5、你要为中小型商场开发一个商场收银软件,该软件由多个收银员在各自的收银台使用。

后端数据库是SQL Server 2000,所有收银员的收银信息集中存放在几个表内。

在采用两层架构(2-Tier)的软件开发时,商场收银软件需要数据库的帐号和密码(SQL Server认证)或Windows认证才能连接和访问数据库,就象SQL Server 2000的查询分析器在刚运行的时候要求你输入帐号和密码或使用Windows认证才能访问数据库。

SQL语句练习及参考答案(2021年整理精品文档)

SQL语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(SQL语句练习及参考答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为SQL语句练习及参考答案的全部内容。

SQL 语句练习1。

设学生选课数据库有关系S (sno ,sname ,age ,sex )、SC (sno ,cno ,grade )和C (cno,cname,teacher ),分别表示学生、选课和课程,sno 代表学号,sname 代表学生姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。

试完成表示下列查询。

(1)检索年龄大于21的男学生学号(sno )和姓名(sname)。

(2)建立性别只能为“男”、“女"的约束。

(3)创建一个视图v1,该视图用来查询学生的选课情况,要求包含:学生姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。

(4)检索选修课程号为k1和k5的学生学号(sno ). (5)检索全部学生都选修的课程的课程号(cno)和课程名(cname )。

(6)删除所有男同学的选课记录。

1。

(1)select sno ,snae from s where sex=’男' and age 〉21(2)alter table s add constraint c1 check sex in (‘男’,’女')(3)create view v1 as select sname ,cname,teacher,grade from s ,sc ,c where s 。

SQL语句练习参考答案(教学数据库)

以下为SQL查询练习参考答案(查询用到的表参照教材P82)。

1.查询全体学生的姓名和所在系。

Select Sno,SdeptFrom Student;2.查询所有课程的详细信息。

Select *From Course;或者Select Cno,Cname,Cpno,CcreditFrom Course;3.查询选修了课程的学生学号。

Select Distinct SnoFrom SC;注意:select子句中需要指定Distinct 关键词4.查询有学生选修的课程号。

Select Distinct CnoFrom SC;5.检索年龄在 18到 20之间(含18和20)的女生的学号、姓名及年龄。

Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage between 18 and 20);注意: where子句性别的常量值——女,需用英文状态下的单引号或双引号。

或者Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage >=18 and Sage<= 20);6.检索“200215121”学生选修课程号及成绩。

Select Cno,GradeFrom SCWhere Sno=’200215121’;7.检索选修了“1”号或“3”号课程的学生学号、课程号及成绩。

Select *From SCWhere Cno=’1’ or Cno=’3’;注意: where子句若用Cno=’1’ or ’3’是错误的,or连接的是两个布尔表达式。

8.检索所有姓王的同学的姓名、性别和所在系。

Select Sname,Ssex,SdeptFrom StudentWhere Sname like ’王*’;注意: Access中的通配符为’*’ 和’?’标。

准SQL中的通配符为’%’ 和’_’9.检索课程名中包括“数据库”的课程详细信息,结果按学分降序排列。

第10次课--SQL综合练习_英语_高中教育_教育专区


两表连接的语法格式(JOIN连接)
Select 显示的列 FROM 表1 JOIN 表2 ON <连接条件> Where 查询条件 Group by 分组列 Having 组筛选条件 Order by 排序列
两表连接的语法格式(θ(Theta) 连接)
Select 显示的列 FROM 表1 , 表2 Where <连接条件> Group by 分组列 Having 组筛选条件 Order by 排序列
增删改表中数据
• 插入单行记录的INSERT语句的格式为: INSERT INTO<表名> [(<列名表>)]
VALUES (对应列的值) • 用UPDATE语句实现表中数据的更新。格式:
UPDATE <表名> SET <列名=表达式> [,… n] [FROM <更新条件所在的表>] [WHERE <更新条件>] • 用DELETE语句实现 表中数据的删除。格式:
第10次课--SQL综合练习_英语_高 中教育_教育专区
数据库的数据类型
• 数值型 • 字符型 • 日期型 • 货币型 • 二进制型
• 数据类型在不同数据库产品中有差异,这里是指SQL SERVER中的数据类型
数值型
•准确型 详细介绍见书上相关表格,这里只介绍常用的、需注意的
• 整数
Int:4字节
创建视图
创建视图的SQL语句一般格式为:
CREATE VIEW <视图名> AS SELECT 查询语句 [WITH CHECK OPTION]
[(视图列名表)]
单源表视图,一般可看可改。 多源表视图,一般可看不可改。

sql数据库第十一章


SQL Server实用教程
2020/11/23
Page 8
备份数据库的语法格式:
BACKUP DATABASE 数据库名 TO 备份设备(逻辑名)
[WITH[NAME='备份的名称'][,INIT|NOINIT]
各参数含义如下。
(1)备份设备。是由 sp_addumpdevice创建的备份设备 的逻辑名称,不要加引号。
SQL Server实用教程
2020/11/23
Page 6
11.1.3 数据库恢复的概念
数据库备份后,一旦系统发生崩溃或者执行了错 误的数据库操作,就可以从备份文件中恢复数据 库。数据库恢复是指将数据库备份重新加载到系 统中的过程。系统在恢复数据库的过程中,自动 执行安全性检查、重建数据库结构以及完成填写 数据库内容。
使用SQL语句备份数据库,有两种方式:一种方式是先将一个物理 设备建成一个备份设备,然后将数据库备份到该备份设备上;另一 种方式是直接将数据库备份到物理设备上。 创建备份设备的语法格式: sp_addumpdevice '设备类型','逻辑名','物理名' 各参数含义如下。 (1)设备类型。备份设备的类型,如果是以硬盘作为备份设备,则为 “disk”。 (2)逻辑名。备份设备的逻辑名称。 (3)物理名。备份设备的物理名称,必须包括完整的路径。
对于日志备份采用如下的语法格式。 BACKUP LOG 数据库名 TO 备份设备(逻辑名|物理名)
[WITH[NAME='备份的名称'][,INIT|NOINIT]] 对于文件和文件组备份则采用如下的语法格式。 BACKUP DATABASE 数据库名
FILE='数据库文件的逻辑名'|FILEGROUP='数据库文件组 的逻辑名'
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、SQL作业(SQL语句写在纸上就行了,不用在SQL视图里写。

SQL语句要看得懂)
1、列出少数民族学生的姓名,民族,总分信息
2、列出有任何一门功课不及格的学生全部信息
3、列出少数民族学生中有任何一门成绩在90分以上的学生姓名,民族,各科成绩信息
4、列出在1969年出生的学生全部信息
5、在仓库表中找出面积在400到600之间的仓库信息
6、在订购单表中找出由职工号“E1”或“E3”或“E7”发出的订购单号和总金额
7、在供应商表中列出所有公司的信息
8、从订购单表中列出没有供应商(即供应商号为空)的订购单的职工号,订购单号,总金额信息
9、从仓库表中列出除在北京以外的所有仓库信息
10、找出在北京仓库工作的职工号和工资信息
11、列出工资在1200元以上的职工发出的职工号,订购单号,总金额信息
12、列出工资低于平均工资的职工信息
13、显示每个学生的姓名,民族,平均成绩
14、显示各少数民族各科成绩的平均分
15、显示各民族的人数、英语总分、英语最高分、英语最低分
二、创建查询创建查询的方法(不止一种)注意事项:
1)多表查询应先建立好它们之间的关系
2)当结果无法用一个查询完成时,可在一个查询的基础上继续进行查询操作
3)交叉表查询向导只能对一个数据源进行操作,若操作涉及到多个表,可先对这几个表建立查询,然后在查询的基础上再进行交叉表查询操作
4)参数查询仅是在准则里加一个[ ],里面的提示信息由我们任意输入,而且是在全角的中文状态下输入的。

它是根据用户输入的内容找出与之完全相匹配的记录信息,这属于精确查询。

有时我们还需要模糊查询,却只要部分相匹配即可,那我们可以在准则里输入like “*”& [请输入学生姓名:] & “*”若你在提示框里输入”海亮”,则实际是按”*海亮*”查找,它会找出所有含有海亮的学生记录。

5)计算查询(纵向查询)可直接用SUM A VG函数,也可以使用总计行。

但要注意的是,普通纵向计算可以使用函数在字段行完成,只有在分组的情况下才必须骼总计行。

一、选择查询(无条件查询和带条件查询)
1、导入仓库、职工、订购单表,查询出职工号、城市、供应商号、总金额信息
2、yisheng yao chufang 三个表操作,找出职称是主任医师所开的处方信息。

包括医生
的姓名、药名和所开药的金(单价*数量)
二、在查询中进行计算(又分为横向计算和纵向计算即在总计行选择相应的操作函数)
1、对hya13表进行操作,显示少数民族学生姓名、民族和平均成绩信息(成绩小数位只能一位)
2、统计各民族学生人数、英语平均分、英语最高分、英语最低分
3、对yisheng yao chufang 三表操作,找出每个医生的姓名、药名和所开药的金额(单价*数量)
三、交叉表查询(结果可用于分析)分别通过交叉表查询向导和设计视图两种方式来做
用交叉表查询来分析每个医生所开各种药品的金额和总金额(结果及设计界面如下:)
注意:交叉表查询向导只能对一个数据源进行操作,若操作涉及到多个表,可先对这几个表建立查询,然后在查询的基础上再进行交叉表查询操作
四、参数查询
参数查询仅是在准则里加一个[ ] ,里面的提示信息由我们任意输入,而且是在全角的中文状态下输入的。

它是根据用户输入的内容找出与之完全相匹配的记录信息,这属于精确查询。

有时我们还需要模糊查询,即只要部分相匹配即可,那我们可以在准则里输入like “*”& [请输入要查找的学生姓名:] & “*”若你要在提示框里输入”海”,则实际是按”*海*”查找,它会找出所有含有海的学生记录。

1、导入“学生”表,做一个针对姓名字段的参数查询
五、操作查询
1、将hay13表中英语成绩在80分以上的学生姓名、民族和各科成绩信息存到新表aaa中
2、将hay13表中少数民族学生英语成绩在60分以下的学生的英语成绩加5分
3、将hay13表中有任何一门功课不及格的学生记录删除
4、将hya13表中英语成绩在70分以下的学生姓名、民族和各科成绩信息追加到aaa表记录的后面。

相关文档
最新文档