SQL作业

合集下载

sql 五十题

sql 五十题

sql 五十题以下是一些SQL练习题,共50题:1. 什么是SQL?2. 什么是关系型数据库?3. 什么是主键?4. 什么是外键?5. 什么是索引?6. 什么是查询?7. 什么是插入操作?8. 什么是更新操作?9. 什么是删除操作?10. 什么是聚合函数?11. 什么是分组操作?12. 什么是排序操作?13. 什么是联接操作?14. 什么是子查询?15. 什么是视图?16. 什么是存储过程?17. 什么是触发器?18. 如何使用WHERE子句进行过滤?19. 如何使用ORDER BY子句进行排序?20. 如何使用GROUP BY子句进行分组?21. 如何使用HAVING子句进行分组过滤?22. 如何使用JOIN操作联接表?23. 如何使用聚合函数SUM、AVG、MIN、MAX?24. 如何使用聚合函数COUNT、COUNT()和COUNT(列名)的区别?25. 如何使用子查询嵌套查询?26. 如何创建视图并查询视图数据?27. 如何创建存储过程并调用存储过程?28. 如何创建触发器并触发触发器?29. 如何使用INSERT INTO语句插入数据?30. 如何使用UPDATE语句更新数据?31. 如何使用DELETE语句删除数据?32. 如何使用TRUNCATE TABLE语句清空表数据?33. 如何使用UNION操作符合并多个查询结果?34. 如何使用UNION ALL操作符合并多个查询结果(包括重复行)?35. 如何使用IN操作符筛选符合条件的多个值?36. 如何使用LIKE操作符进行模糊查询?37. 如何使用NOT操作符进行否定筛选?38. 如何使用BETWEEN操作符筛选范围值?39. 如何使用EXISTS操作符检查子查询结果是否存在?40. 如何使用NOT EXISTS操作符检查子查询结果是否存在(否定筛选)?41. 如何使用CASE语句进行条件判断和值转换?42. 如何使用DISTINCT关键字去除查询结果的重复行?43. 如何使用LIMIT关键字限制查询结果的行数?44. 如何使用JOIN操作连接多个表并筛选数据?45. 如何使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN的区别和用法?46. 如何使用视图提高查询效率和维护数据安全性?47. 如何使用存储过程存储复杂的业务逻辑和重复使用的查询语句?48. 如何使用触发器自动执行特定事件或数据修改操作?49. 如何优化SQL查询性能,提高数据库的响应速度?50. 如何安全地管理和维护数据库,确保数据的完整性和可靠性?。

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语言课后练习[大全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语句作业

查询及sql语句作业

查询以及sql语句作业第一部分查询8-1 查询年龄在20岁以上的女同学的学号、姓名、年龄信息.8-2 根据“学生”、“班级”表查询学生及班级信息,要求显示学生的“学号”、“姓名”及“班级名称”字段。

8-3 利用“查找重复项查询向导”创建查询,查找姓名相同的学生的信息。

8-4 使用“不匹配项查询向导”创建查询,找出没有成绩的学生名单。

8-5 查询所有学生的信息。

8-6 查询单科成绩在90分以上(含90分)的学生的姓名、课程名称和分数,并按分数降序排列。

8-7 查询年龄在20岁到22岁之间的学生的学号、姓名和年龄。

8-8 查询各门课程的平均分,要求查询结果包含课程名称、平均分。

8-9 建立一个参数查询,按输入的班级编号查找该班学生学号、姓名、出生日期和政治面貌等信息。

8-10 修改例8-9的条件,查找2006级的学生信息。

8-11 按课程名称查找该课程成绩在90分以上(含90分)的学生信息。

8-12 建立一个参数查询,按输入的分数段查找学生的姓名、课程名称和分数。

8-13 建立一个参数查询,按输入的“班级编号”及“课程名称”查询该班学生的姓名、课程名称及分数。

8-14 使用“设计视图”创建交叉表查询,汇总各学生各门课程的成绩,并计算每名学生的平均成绩,产生“学生成绩汇总表”。

要求表中增加一列显示学生的平均成绩。

8-15 使用“设计视图”创建交叉表查询,统计各班各门课程的的平均成绩,产生“班级课程平均成绩”汇总表。

要求查询结果以“班级名称”为行标题,以“课程名称”为列标题,行列交叉处显示“分数”的平均值。

8-16 将有不及格成绩的所有学生的“学号”、“姓名”、“班级”、“课程名称”和“分数”信息保存到“补考名单”表中。

8-17 将“教师”表中所有未婚教师的“教师编号”、“姓名”、“职称”和“联系电话”信息保存到一个名为“未婚教师”的新表中。

8-18 创建删除查询,删除“补考名单”表中所有“会计学基础”课程的补考信息。

sql课程设计作业

sql课程设计作业

sql课程设计作业一、教学目标本课程的教学目标是使学生掌握SQL语言的基本语法和操作,能够熟练地使用SQL进行数据库的创建、表的创建和操作、数据的查询和更新等操作。

1.掌握SQL语言的基本语法和操作。

2.了解数据库的基本概念和原理。

3.掌握数据库的创建、表的创建和操作、数据的查询和更新等操作。

4.能够独立完成数据库的创建、表的创建和操作、数据的查询和更新等操作。

5.能够编写简单的SQL脚本程序。

情感态度价值观目标:1.培养学生的逻辑思维能力和问题解决能力。

2.培养学生的团队合作意识和沟通能力。

3.培养学生的自主学习和持续学习的意识。

二、教学内容本课程的教学内容主要包括SQL语言的基本语法和操作、数据库的基本概念和原理、数据库的创建、表的创建和操作、数据的查询和更新等操作。

1.SQL语言的基本语法和操作:SELECT、INSERT、UPDATE、DELETE等命令的语法和用法。

2.数据库的基本概念和原理:数据库的概念、关系型数据库的原理、SQL的作用和地位。

3.数据库的创建:使用SQL创建数据库的基本语法和步骤。

4.表的创建和操作:使用SQL创建表的基本语法和步骤,表的属性和约束,表的插入、更新和删除操作。

5.数据的查询:使用SQL进行数据查询的基本语法和用法,包括单表查询、多表查询、聚合函数等。

三、教学方法本课程的教学方法包括讲授法、案例分析法、实验法等。

1.讲授法:通过教师的讲解和解释,使学生掌握SQL语言的基本语法和操作,理解数据库的基本概念和原理。

2.案例分析法:通过分析实际案例,使学生掌握SQL语言的应用和实际操作,培养学生的问题解决能力。

3.实验法:通过实验操作,使学生掌握数据库的创建、表的创建和操作、数据的查询和更新等操作,培养学生的实际操作能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。

1.教材:选用权威、实用的SQL语言教材,作为学生学习的主要参考资料。

最全的SQL练习题(做完你就是高手)

最全的SQL练习题(做完你就是高手)

最全的SQL练习题(做完你就是⾼⼿)最全的SQL练习题(做完你就是⾼⼿)补充作业⼀设有三个关系:S(SNO, SNAME, AGE, SEX,Sdept)SC(SNO, CNO, GRADE)C(CNO, CNAME, TEACHER)试⽤关系代数表达式表⽰下列查询:-- 1、查询学号为S3学⽣所学课程的课程名与任课教师名。

SELECT c.`name`, c.teacher FROM student_class sc LEFT JOIN `class` c ON o = c.NO WHERE sc.sno = 's3';-- 2、查询⾄少选修LIU⽼师所教课程中⼀门课的⼥⽣姓名。

select s.sname from student as s where s.sno in(select DISTINCT sc.sno from student_class as sc left join class as c on o=o where c.teacher='LIU')and s.sex=2;-- 3、查询WANG同学不学的课程的课程号。

select o from class as c where o not in(select DISTINCT o from student as s inner join student_class as sc on s.sno=sc.sno where s.sname='WANG');-- 4、查询⾄少选修两门课程的学⽣学号。

select sno, count(*) as cou from student_class group by sno having cou>=2;-- 5、查询选修课程中包含LIU⽼师所教全部课程的学⽣学号。

select sc.sno from student_class as sc INNER JOIN class as c on o=o where c.teacher='LIU';补充作业⼆三个关系同上,试⽤SQL语⾔表⽰下列查询:1、查询门门课程都及格的学⽣的学号⽅法1:提⽰:根据学号分组,就得到每个学⽣所有的课程成绩,在某个学⽣这⼀组成绩⾥,如果他所有的课程成绩都⼤于60分则输出该组学⽣的学号Select sno frome sc group by sno having min(grade)>=60;2、查询既有课程⼤于90分⼜有课程不及格的学⽣的学号⾃⾝连接:Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)3、查询平均分不及格的课程号和平均成绩Select cno , avg(GRADE) from sc group by cno having avg(grade)<60查询平均分及格的课程号和课程名Select o , Cname from SC,C where o=o group by o having avg(grade)>=604、找出⾄少选修了2号学⽣选修过的全部课程的学⽣提⽰:不存在这样的课程y,学⽣2选修了y,⽽学⽣x没有选。

SQL经典50题练习

SQL经典50题练习

创建表及插⼊数据学⽣表Studentcreate table SC(SId varchar(10),CId varchar(10),score decimal(18,1));insert into SC values('01' , '01' , 80);insert into SC values('01' , '02' , 90);insert into SC values('01' , '03' , 99);insert into SC values('02' , '01' , 70);insert into SC values('02' , '02' , 60);insert into SC values('02' , '03' , 80);insert into SC values('03' , '01' , 80);insert into SC values('03' , '02' , 80);insert into SC values('03' , '03' , 80);insert into SC values('04' , '01' , 50);insert into SC values('04' , '02' , 30);insert into SC values('04' , '03' , 20);insert into SC values('05' , '01' , 76);insert into SC values('05' , '02' , 87);insert into SC values('06' , '01' , 31);insert into SC values('06' , '03' , 34);insert into SC values('07' , '02' , 89);insert into SC values('07' , '03' , 98);练习题⽬1. 查询" 01 "课程⽐" 02 "课程成绩⾼的学⽣的信息及课程分数1.1 查询同时存在" 01 "课程和" 02 "课程的情况1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显⽰为 null )1.3 查询不存在" 01 "课程但存在" 02 "课程的情况2. 查询平均成绩⼤于等于 60 分的同学的学⽣编号和学⽣姓名和平均成绩3. 查询在 SC 表存在成绩的学⽣信息4. 查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩(没成绩的显⽰为 null )4.1 查有成绩的学⽣信息5. 查询「李」姓⽼师的数量6. 查询学过「张三」⽼师授课的同学的信息7. 查询没有学全所有课程的同学的信息8. 查询⾄少有⼀门课与学号为" 01 "的同学所学相同的同学的信息9. 查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息10. 查询没学过"张三"⽼师讲授的任⼀门课程的学⽣姓名11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12. 检索" 01 "课程分数⼩于 60,按分数降序排列的学⽣信息13. 按平均成绩从⾼到低显⽰所有学⽣的所有课程的成绩以及平均成绩14. 查询各科成绩最⾼分、最低分和平均分:以如下形式显⽰:课程 ID,课程 name,最⾼分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修⼈数,查询结果按⼈数降序排列,若⼈数相同,按课程号升序排列15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15.1 按各科成绩进⾏排序,并显⽰排名, Score 重复时合并名次16. 查询学⽣的总成绩,并进⾏排名,总分重复时保留名次空缺16.1 查询学⽣的总成绩,并进⾏排名,总分重复时不保留名次空缺17. 统计各科成绩各分数段⼈数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分⽐18. 查询各科成绩前三名的记录19. 查询每门课程被选修的学⽣数20. 查询出只选修两门课程的学⽣学号和姓名21. 查询男⽣、⼥⽣⼈数22. 查询名字中含有「风」字的学⽣信息23. 查询同名同性学⽣名单,并统计同名⼈数24. 查询 1990 年出⽣的学⽣名单25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26. 查询平均成绩⼤于等于 85 的所有学⽣的学号、姓名和平均成绩27. 查询课程名称为「数学」,且分数低于 60 的学⽣姓名和分数28. 查询所有学⽣的课程及分数情况(存在学⽣没成绩,没选课的情况)29. 查询任何⼀门课程成绩在 70 分以上的姓名、课程名称和分数30. 查询不及格的课程31. 查询课程编号为 01 且课程成绩在 80 分以上的学⽣的学号和姓名32. 求每门课程的学⽣⼈数33. 成绩不重复,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成绩34. 成绩有重复的情况下,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成 绩35. 查询不同课程成绩相同的学⽣的学⽣编号、课程编号、学⽣成绩36. 查询每门功成绩最好的前两名37. 统计每门课程的学⽣选修⼈数(超过 5 ⼈的课程才统计)。

学生选课系统sql大作业

学生选课系统sql大作业

学生选课系统sql大作业当涉及到学生选课系统的SQL大作业时,以下是一些可能涉及的表和相关SQL查询的示例:1. 学生表(Students):- 学生ID(StudentID)- 学生姓名(StudentName)- 年级(Grade)- 专业(Major)2. 课程表(Courses):- 课程ID(CourseID)- 课程名称(CourseName)- 教师ID(TeacherID)- 学分(Credits)3. 教师表(Teachers):- 教师ID(TeacherID)- 教师姓名(TeacherName)- 所属学院(College)4. 选课记录表(Enrollments):- 学生ID(StudentID)- 课程ID(CourseID)- 成绩(Grade)示例查询:1. 获取所有学生的姓名和所选课程的名称:```SELECT Students.StudentName, Courses.CourseNameFROM StudentsINNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentIDINNER JOIN Courses ON Enrollments.CourseID = Courses.CourseID;```2. 获取特定学生的选课情况及成绩:```SELECT Students.StudentName, Courses.CourseName, Enrollments.GradeFROM StudentsINNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentIDINNER JOIN Courses ON Enrollments.CourseID = Courses.CourseIDWHERE Students.StudentID = '学生ID';```3. 获取某门课程的平均成绩:```SELECT AVG(Grade) AS AverageGradeFROM EnrollmentsWHERE CourseID = '课程ID';```4. 获取某个教师所教授的课程及学生选课情况:```SELECT Teachers.TeacherName, Courses.CourseName, Students.StudentNameFROM TeachersINNER JOIN Courses ON Teachers.TeacherID = Courses.TeacherIDINNER JOIN Enrollments ON Courses.CourseID = Enrollments.CourseIDINNER JOIN Students ON Enrollments.StudentID = Students.StudentIDWHERE Teachers.TeacherID = '教师ID';```这些仅是示例查询,具体的SQL查询语句和数据库设计会根据需求和具体情况有所变化。

sql例题

sql例题

以下是一些SQL例题:查询学生表中所有学生的姓名和出生年月,并按照出生年月降序排列。

sqlSELECT s_name, s_birth FROM student ORDER BY s_birth DESC;查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩。

sqlSELECT st.s_id, st.s_name, ROUND(AVG(sc.s_score),2) as '平均成绩'FROM student stLEFT JOIN score sc ON sc.s_id = st.s_idGROUP BY st.s_idHAVING AVG(sc.s_score) >= 60;查询同名同姓学生名单,并统计同名人数。

sqlSELECT s_name, COUNT(*) as '同名人数'FROM studentGROUP BY s_nameHAVING COUNT(*) > 1;查询每门课程的课程名称和对应的教师姓名。

vbnetSELECT c_name, t_nameFROM courseINNER JOIN teacher ON course.t_id = teacher.t_id;查询哪些学生没有选课,并显示其学生编号和姓名。

sqlSELECT s_id, s_nameFROM studentWHERE s_id NOT IN (SELECT DISTINCT s_id FROM score);查询选了课程的学生人数。

sqlSELECT COUNT(DISTINCT s_id) as '选课学生人数' FROM score;查询每门课程的课程名称和选课人数。

sqlSELECT c_name, COUNT(s_id) as '选课人数'FROM courseINNER JOIN score ON course.c_id = score.c_idGROUP BY c_name;。

SQL上机作业(3)

SQL上机作业(3)

SQL上机作业(3)一、针对SQL上机作业(1)第二题定义的四个表(S,P,J,SPJ),用SQL语句实现如下查询:1. 把全部红色零件的颜色改为蓝色。

解答:update pset color='蓝色';2. 由S5供给J4的零件P6改为由S3供应,请作必要的修改。

解答:update spjset sno='s3'where sno='s5' and jno='j4' and pno='p6';3. 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。

解答:deletefrom spjwhere sno='s2';deletefrom swhere sno='s2';4. 请将(S2,J6,P4,200)插入供应情况关系。

解答:insertinto spjvalues ('s2','j6','p4','200');二、请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供数量(QTY)。

针对该视图完成下列查询:解答:creat view v_sanjian (sno,pno,qty)asselect spj.pno,spj.pno,spj.qtyfrom j,spjwhere j.jno=spj.jno and jname='三建';1.找出三建工程项目使用的各种零件代码及其数量。

解答:select pno,sun(qty)from v_sanjiangroup by pno;2.找出供应商S1的供应情况。

解答:select *from v_sanjianwhere sno='s1';三、针对SQL上机作业(1)第二题定义的四个表(S,P,J,SPJ),用SQL语言完成以下各项操作:1.把对表S的INSERT权限授予用户张勇,并允许他再将此权限授予其他用户。

sql经典50题建表语句

sql经典50题建表语句

sql经典50题建表语句1、题目:创建一个名为"employees"的表,包含"id"、"name"和"salary"三个字段。

sql:CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10, 2));2、题目:创建一个名为"orders"的表,包含"order_id"、"customer_id"和"order_date"三个字段。

sql:CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE);3、题目:创建一个名为"products"的表,包含"product_id"、"product_name"和"price"三个字段。

sql:CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(50),price DECIMAL(10, 2));4、题目:创建一个名为"customers"的表,包含"customer_id"、"first_name"、"last_name"和"email"四个字段。

sql:CREATE TABLE customers (customer_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100));5、题目:创建一个名为"addresses"的表,包含"address_id"、"street"、"city"和"state"四个字段。

sql的作业(简单查询)

sql的作业(简单查询)

SQL语法练习(一)使用scott/tiger 用户下的emp表(数据库自带的表)完成下列练习。

表的结构说明如下:雇员表(emp)NO 字段类型描述1 EMPNO NUMBER(4) 表示雇员编号,是唯一的编号表示雇员姓名2 ENAME VARCHAR2(10)3 JOB VARCHAR2(9) 工作职位4 MGR NUMBER(4) 雇员的领导编号DATE 雇佣日期5 HIREDATE6 SAL NUMBER(7,2) 月薪,工资7 COMM NUMBER(7,2) 奖金8 DEPTNO NUMBER(2) 部门编号1、查询部门号为30的所有雇员信息。

2、列出所有办事员(CLERK)的姓名,编号和部门编号。

3、找出奖金高于工资的雇员。

4、找出奖金高于工资60%的雇员。

5、找出部门10中所有经理(MANAGER)和部门20中所有办事员的信息。

6、找出部门10中所有经理(MANAGER),部门20中所有办事员,既不是经理又不是办事员但其薪资大于或等于2000的所有员工的信息。

7、找出有奖金发放员工的职位(职位不能重复)8、查询没有奖金或者奖金低于100的员工。

9、查询不带有"R"的员工的姓名。

10、显示员工的全部信息,按姓名排序。

11、显示员工的姓名和入职时间,根据入职时间,将最老的员工排放在最前面。

12、显示所有员工的姓名、工作和工资,按照工作的降序排序,若工作相同则按工资升序排序。

13、找出2月份入职的员工。

14、显示姓名含有字母"A"的员工的姓名。

(完整版)sql练习题+答案

(完整版)sql练习题+答案

(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。

Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student(4)查全体学生的姓名及其出生年份。

select sname , birth from student(5)查询学校中有哪些系。

select distinct dept from student(6)查询选修了课程的学生学号。

select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。

第5章-SQL语言 作业和思考

第5章-SQL语言 作业和思考

一、单项选择题:1.SQL语言是( )的语言,容易学习。

A.过程化B. 非过程化C.格式化D. 导航式2.关系操作方式的特点是( )操作。

A. 导航方式B. 一次一集合方式C.一次一记录方式 D. 记录或集合方式3.下列关于基本表与存储文件之间关系的叙述中,正确的是( )。

A. 一个基本表只能存储于一个文件中,一个存储文件中也只能存储一个基本表B. 一个基本表只能存储于一个文件中,但一个存储文件中可存储多个基本表C. 一个基本表可以存储于一个或多个文件中,但一个存储文件中只能存储一个基本表D. 一个基本表可以存储于一个或多个文件中,一个存储文件中也可以存储一个或多个基本表4.视图是从一个或多个基本表(视图)导出的表。

它相当于三级模式结构中的( )A. 外模式B. 模式C.内模式 D. 存储模式5.SQL的GRANT与REVOKE命令属于数据库保护中的( )控制。

A.完整性 B. 安全性 C. 并发控制 D. 恢复机制6.1986年,( )被定为关系数据库标准语言。

A. 关系代数B. 关系演算C.SQL语言D.QBE7.在SQL语言中授权的操作是通过( )语句实现的。

A. CREATE B.REVOKE C.GRANT D.INSERT8.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( )。

A. DELETEB. INSERTC. UPDATED. SELECT9.SQL语言中,实现数据检索的语句是( )。

A.SELECT B.INSERT C. UPDATE D.FIND10.下列SQL语句中,修改表结构的是( )。

A. ALTERB. CREATEC.UPDATED. DELETE11.实体完整性约束和SQL语言中的()相对应。

A.primary key B.foreign key C.check D.unique12.参照完整性约束和SQL语言中的()相对应。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。

在这篇文章中,我们将提供一些SQL练习题及其答案,旨在帮助读者加深对SQL的理解,并提供实践操作的机会。

练习题一:学生表考虑一个名为"Students"的学生表,包含以下字段:- 学生编号(StudentID)- 学生姓名(StudentName)- 学生年级(Grade)- 学生所在学校(School)请使用SQL语句创建并插入示例数据到"Students"表中。

答案:```sqlCREATE TABLE Students (StudentID INT,StudentName VARCHAR(50),Grade INT,School VARCHAR(50));INSERT INTO Students (StudentID, StudentName, Grade, School)VALUES (1, '张三', 11, '中学A'),(2, '李四', 10, '中学B'),(3, '王五', 10, '中学A'),(4, '赵六', 12, '中学C');```练习题二:查询学生表信息请编写SQL查询语句,查询出所有学生的姓名和所在学校。

答案:```sqlSELECT StudentName, School FROM Students;```练习题三:更新学生信息假设有一位新生加入学校,学生姓名为"李华",年级为11,学校为"中学B"。

请编写SQL语句将该学生信息插入到学生表中。

答案:```sqlINSERT INTO Students (StudentName, Grade, School)VALUES ('李华', 11, '中学B');```练习题四:删除学生信息假设"赵六"这位学生已经转学离开学校,需要从学生表中将其信息删除。

sql查询题库

sql查询题库

sql查询题库
以下是一些SQL查询题,可用于练习和提高SQL查询技能:
1. 查询所有学生的姓名、年龄和性别。

2. 查询年龄大于等于18岁的学生姓名和年龄。

3. 查询所有学生的平均成绩。

4. 查询平均成绩最高的学生姓名和平均成绩。

5. 查询选修了"数学"课程的学生姓名和成绩。

6. 查询选修了多于3门课程的学生姓名。

7. 查询选修了"英语"课程且成绩在90分以上的学生姓名和成绩。

8. 查询选修了"计算机科学"课程的学生的最高成绩和最低成绩。

9. 查询没有选修"英语"课程的学生姓名。

10. 查询选修了最少一门课程的学生姓名。

11. 查询选修了课程数量最多的学生姓名。

12. 查询选修了课程数量少于3门的学生姓名。

13. 查询所有学生的学号、姓名和班级。

14. 查询班级人数最多的学生姓名和班级。

15. 查询选修了"计算机科学"课程的学生的平均成绩。

SQL试题精选及答案

SQL试题精选及答案

SQL试题精选及答案1. 请写出SQL中创建新表的语句。

答案:CREATE TABLE 表名 (列1 类型, 列2 类型, ...);2. 如何在SQL中查询特定列的数据?答案:SELECT 列名 FROM 表名 WHERE 条件;3. 请解释SQL中的JOIN操作。

答案:JOIN操作用于将两个或多个表中的行组合起来,基于一个共同的列。

4. 写出SQL中更新表中数据的语句。

答案:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;5. 如何在SQL中删除表中的数据?答案:DELETE FROM 表名 WHERE 条件;6. 请描述SQL中的GROUP BY子句的作用。

答案:GROUP BY子句用于将取回的记录分组,可以与聚合函数一起使用,如COUNT、SUM等。

7. SQL中如何使用子查询?答案:子查询是嵌套在另一个查询中的查询,可以出现在SELECT、INSERT、UPDATE或DELETE语句中。

8. 请写出SQL中创建索引的语句。

答案:CREATE INDEX 索引名 ON 表名 (列名);9. 如何在SQL中使用事务?答案:可以使用BEGIN TRANSACTION开始事务,然后执行一系列操作,最后使用COMMIT提交事务或ROLLBACK回滚事务。

10. 请解释SQL中的主键和外键。

答案:主键是表中用来唯一标识每行数据的列或列组合,而外键是一个表中的列或列组合,它在另一个表中作为主键。

11. SQL中如何进行数据排序?答案:使用ORDER BY子句,如SELECT * FROM 表名 ORDER BY 列名ASC 或 DESC。

12. 如何在SQL中使用聚合函数?答案:聚合函数如SUM、COUNT、AVG等,可以与GROUP BY子句一起使用,对数据进行汇总。

13. 请写出SQL中插入数据的语句。

答案:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);14. 请解释SQL中的视图。

简单的SQL语句练习大全

简单的SQL语句练习大全

简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。

CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。

BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。

CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

3.查询借阅了"水浒"一书的读者,输出姓名及班级。

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。

6.查询现有图书中价格最高的图书,输出书名及作者。

7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

8.将"C01"班同学所借图书的还期都延长一周。

9.从BOOKS表中删除当前无人借阅的图书记录。

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。

12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。

sql设计题 10道

sql设计题 10道

好的,以下是10道SQL设计题:
1. 设计一个查询,用于从"employees"表中检索所有员工的姓名、工资和部门名称。

2. 设计一个查询,用于从"orders"表中检索所有订单的订单号、客户名称和订单日期。

3. 设计一个查询,用于从"products"表中检索所有产品的名称、价格和库存数量。

4. 设计一个查询,用于从"customers"表中检索所有客户的姓名、地址和电话号码。

5. 设计一个查询,用于从"orders"表中检索订单号、客户名称和订单总金额。

6. 设计一个查询,用于从"employees"表中检索工资最高的员工的姓名、工资和部门名称。

7. 设计一个查询,用于从"orders"表中检索订单日期最早的订单的订单号、客户名称和订单日期。

8. 设计一个查询,用于从"customers"表中检索最活跃的客户,该客户至少下过5次订单。

9. 设计一个查询,用于从"products"表中检索库存数量低于10的产品的名称和价格。

10. 设计一个查询,用于从"employees"表中检索部门平均工资最高的部门的名称和平均工资。

请注意,以上题目中的表名和列名仅为示例,您可以根据实际情况进行修改。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

江西工业工程职业技术学院《sql server 2000》
教学实习报告
专业:计算机
班级:软件081
姓名:章庆圆
指导教师:周谊
1: 模块编号NO SINT NOT NULL,
2: 模块名称NAME TVCHAR2(255) NOT NULL, /中文名称/
3: 类型TYPE SINT NOT NULL, /1:普通模块,2:预定义查询/
4: 说明MEMO TVCHAR2(255) NULL,
5: 过程名PROCNAME TVCHAR2(255) NOT NULL,
6: 包名PKGNAME TVCHAR2(64) NULL,
7: 单元名UNITNAME TVCHAR2(64) NOT NULL,
8: 分类CA TALOG TVCHAR2(64) NOT NULL
PRIMARY KEY (NO)
);
Log表结构
2004: 日志LOG S LOG
(
1: 时间TIME DA TE NOT NULL,
2: 期号MONTHSETTLENO INT NULL,
3: 操作员OPER TOPER NOT NULL,
4: 工作站WORKSTA TIONNO TVCHAR2(50) NOT NULL,
5: 模块名MODULENAME TVCHAR2(255) NULL,
6: 操作类型TYPE SINT NULL,
7: 操作说明CONTENT TVCHAR2(255) NULL
INDEX IDX_LOG (TIME)
);
FAUser表结构
3700: FA_登录用户FAUSER O FAUSER
(
1: 用户GID TGID NOT NULL,
2: 用户名LOGINNAME TVCHAR2(20) NOT NULL,
3: 全名FULLNAME TVCHAR(32) NULL,
4: 口令PASSWORD TVCHAR2(32) NULL,
5: 是否禁用STOPPED SINT DEFAULT 0 NOT NULL, /0=否;1=是/
6: 说明NOTE TMSTNOTE NULL,
7: 创建人CREA TOR TOPER DEFAULT '未知-' NOT NULL,
8: 创建时间CREA TETIME DA TE DEFAULT SYSDA TE NOT NULL,
9: 最后修改人LSTUPDOPER TOPER DEFAULT '未知-' NOT NULL,
10: 最后修改时间LSTUPDTIME DA TE DEFAULT SYSDA TE NOT NULL,
11: 令牌登录ISUSETOKEN SINT DEFAULT 0 NOT NULL, /0:否;1:是/
12: 登录会话标识LOGINSESSIONID INT NULL,
13: 登录控制LOGINCONTROL INT DEFAULT 1 NOT NULL,
14: MAC地址认证MACCTRL INT DEFAULT 0 NOT NULL
PRIMARY KEY (GID)
);
1、从系统模块表中,选出分类为'零售管理'的所有模块记录,按模块编号顺序排列. select *
from MODULE
where CA TALOG='零售管理'
order by NO asc;
2、日志表中的操作员记录格式为"用户名[全名]",查询日志表中上个月操作员中用户名名为0的记录共有多少条
select COUNT(*)
from LOG
where (TIME between'2010-09-01 00:00:00'and'2010-09-30 23:59:59' and OPER='0[hdpos]');
3.查询日志表中今年以来操作说明中包含"错误"的所有记录,按时间逆序排列
select * from LOG
where (TIME BETWEEN '2010-1-1 00:00:00' and '2010-12-31 23:59:59' and CONTENT LIKE '%错误%') order by TIME desc;
4.查询用户表中今年以来创建的且说明为空的所有用户,返回用户名和全名select LOGINNAME,FULLNAME
from FAUSER
where CREA TETIME BETWEEN '2010-1-1 00:00:00' and '2010-12-31 23:59:59' and NOTE is null;
5.查询今年没有登录过系统(日志表中没有记录)的用户,返回用户名和全名
select LOGINNAME,FULLNAME
from FAUSER
where LOGINNAME||'['||FULLNAME||']'not in
(select OPER
from LOG
where LOG.TIME BETWEEN'2010-1-1 00:00:00'and'2010-12-31 23:59:59')
6.查询日志表中哪些操作员在用户表中不存在,返回时间、操作员、模块名和操作说明
select TIME,OPER,MODULENAME,CONTENT
from LOG
where OPER not in
(select LOGINNAME||'['||FULLNAME||']'
from FAUSER
);
7.统计日志表中今年以来各操作员的数量,返回结果类似于:0[HDPOS] 99
1[..] 22
SELECT OPER,COUNT(OPER)
FROM LOG
WHERE TIME BETWEEN '2010-1-1 00:00:00' AND '2010-12-31 23:59:59' GROUP BY OPER
8.查询用户访问过的所有模块,返回模块编号、模块名称select MODULE.NO,
from MODULE,LOG
where LOG.MODULENAME=;。

相关文档
最新文档