数据库重点语句附答案
- 格式:doc
- 大小:138.50 KB
- 文档页数:14
实验素材现教学数据库中有三个关系:学生关系S(S#,SNAME,AGE,SEX)学习关系SC(S#,C#,GRADE)课程关系C(C#,CNAME,TEACHER)1、三个表的结构是:表1 学生关系表S(S# char(10) primary key,SNAME VARCHAR(12) NOT NULL,AGE INT,SEX CHAR(1) NOT CHECK (SEX=’F’ OR SEX=’M’), SDEPT VARCHAR(20) DEFAULT ‘information’)表2 学习关系表SCCREATE TABLE SC(S# CHAR(10) FOREIGN KEY (S#) REFRENCES S (S#), C# CHAR(8) FOREIGN KEY (C#) REFRENCES C (C#), GRADE INT NULL,CONSTRAINT PK PRIMARY KEY (S#,C#))表3 课程关系表C2、三个表中的数据实验一用企业管理器建立数据库和表实验目的:熟悉上机环境;掌握如何启动、停止服务管理器和企业管理器的方法;掌握如何用企业管理器定义数据库、表、约束,如何向表中添加、修改、输出记录,如何查看表的内容等操作。
实验内容:1 启动服务管理器,观测服务管理器启动后的图标。
2 使用企业管理器,创建“教学”数据库。
3 使用企业管理器,在“教学”数据库中定义3个表S、C、SC这3个表的要求见表1、表2和表3。
注意必须按表的要求定义各种约束。
4 使用企业管理器,向“教学”数据库的3个表中输入若干个记录。
这3个表的内容见表4、表5和表6.5 使用企业管理器,查看已创建的教学数据库和3个表的内容。
6 验证实体完整性和参照完整性。
7 停止企业管理器、服务管理器。
实验的操作步骤:实验小结:实验二用SQL DDL创建数据库和表实验目的:熟悉查询分析器界面;掌握如何在查询分析器中,用DDL语言定义数据库、表、约束。
实验内容:1)启动服务管理器。
2)使用查询分析器,用DDL建立“教学”数据库。
3)使用查询分析器,用DDL在“教学”数据库中定义3个表S、C和SC。
表的要求见表1~3,必须按表的要求定义各种约束。
4)停止查询分析器、服务管理器。
实验的操作步骤:实验小结:实验三数据库的简单查询(一)实验目的:继续熟练查询分析器的使用方法;掌握单表查询的SELECT、FROM、WHERE 子句的用法,特别要求掌握比较运算符、逻辑运算符的使用。
实验内容:在已建立“教学”数据库和3个表S、C、SC的基础上,用SELECT语句完成下列查询(具体数据参照表3~6):(1)查询全体学生的学号与姓名Select s#,sname from S(2)查询全体学生的学号、姓名、性别、年龄及所在系Select s#,sname,sex,age,sdept from S(3)查询全体学生的选课情况,即学号、课程号、成绩,并且成绩列值都加5Select S#,C#,GRADE+5 from SC(4)查询全体学生的学号与姓名,并分别将这两列分别设置为中文别名“学号”和“姓名”Select s# AS ‘学号’,sname as ‘姓名’ from S(5)显示所有选课学生的学号,并去掉重复行Select distinct(s#) from SC(6)查询学生选课成绩大于80分的学生学号、课程号、成绩Select S#,C#,GRADE from SC where GRADE>80(7)检索年龄大于23岁的男学生的学号和姓名.Select s#,sname from S where ssex=M and age>23(8)检索Liujun老师所授课程的课程号和课程名.Select C#,Cname from C where Teacher=’Liujun’(9)查询information系全体学生的学号、姓名Select S#,Sname from S where sdept=’information’(10)查询学生选课成绩在80-90分之间的学号、课程号、成绩Select S#,C#,Grade from SC where Grade between 80 And 90 (11)查询学生年龄不在19-25之间的学生学号、姓名、所在系Select S#,Sname,Sdept from S where Age not between 19 And 25 (12)查询information、computer系的学生学号、姓名Select S#,Sname from S where sdept in(‘information’,’computer’)(13)查询不是information、computer系的学生学号、姓名Select S#,Sname from S where sdept NOT IN(‘information’,’computer’)(14)查找姓名的第二个字符是i并且只有5个字符的学生学号、姓名Select S#,Sname from S where Sname like ‘_ i_ _ _’(15)查找姓名以W开头的所有学生的学号、姓名Select S#,Sname from S where Sname like ‘w %’(16)查找姓名以w、c或l开头的所有学生的学号、姓名Select S#,Sname from S where Sname like ‘[wcl]%’(17)查找姓名不是以w、c或l开头的所有学生的学号、姓名Select S#,Sname from S where Sname like ‘[^wcl]%’(18)查询无考试成绩的学生的学号和相应的课程号Select C#,Cname from SC where Grade Is null(19)查询有考试成绩的学生的学号和相应的课程号Select C#,S# from SC where Grade Is not null实验的操作步骤及结果(注:答案及结果写在各题的下面):实验小结:实验四数据库的简单查询(二)实验目的:继续熟练查询分析器的使用方法;掌握单表查询的SELECT、FROM、WHERE、GROUP BY、HAVING、ORDERBY子句的用法,特别要求掌握比较运算符、逻辑运算符的使用。
实验内容:在已建立“教学”数据库和3个表S、C、SC的基础上,用SELECT语句完成下列查询(具体数据参照表3~6):实验内容:(1)查询计算机系年龄在18岁以上的学生的学号、姓名Select S#,Sname from S where Age>18 and Sdept=’computer’(2)检索“Liujun”老师所授课程的课程号(C#)和课程名(CName);Select C#,Cname from SC where Teacher=’Liujun’(3)求选修了C2课程或C4课程的学生学号、成绩Select S#,Grade from SC where C# IN (’C2’,’C4’)(4)求学生的总人数Select count(sno) from S(5)求选修了课程的学生人数Select count(distinct(sno)) from SC(6)求选修了C1课程的学生的平均成绩Select AVG(Grade) from SC where C#=’C1’(7)求60833D01的学生的考试总成绩之和(8)Select SUM(Grade) from SC where S# =’60831D01’(9)求选修了C1课程的学生的最高分和最低分Select max(Grade),min(Grade) from SC where C#=’C1’(10)求选修每门课的学生人数Select count(sno) from SC group by C#(11)求每个学生的学号和各门课程的总成绩Select S#,SUM(Grade) from SC GROUP BY S#(12)求选修课程超过2门课的学生的学号、平均成绩、选修的门数Select S#,AVG(Grade),COUNT(C#) from SC GROUP BY S#HAVING COUNT(C#)>2(13)查询所有学生的行,并按学生年龄值从小到大排序Select * from S ORDER BY AGE(14)查询选修了C1课程的学生的学号和成绩,查询结果按成绩降序排列Select S#,Grade from SC where C# =’C1’ ORDER BY GRADE DESC(15)查询全体学生信息,查询结果按所在系的系名升序(ASC可不写默认存在)排列,同一系的学生按年龄降序排列Select * from S ORDER BY SDEPT, AGE DESC(16)求选修课程超过2门课的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
Select S#,AVG(Grade),COUNT(C#) from SC GROUP BY S#HAVING COUNT(C#)>2 ORDER BY GRADE DESC实验的操作步骤及结果(注:答案及结果写在各题的下面):实验小结:实验五数据库的多表内连接查询实验实验目的:继续熟练查询分析器的使用方法;理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、GROUP BY、HAVING、ORDERBY子句的用法,特别要求掌握内链接的使用及查看相应的结果。
实验内容:在已建立“教学”数据库和3个表S、C、SC的基础上,用SELECT语句完成下列查询(具体数据参照表3~6):(1)查询每个学生的学号、姓名、选修的课程名、成绩Select SC.S#,SNAME,CNAME,GRADE FROM S,SC WHERES.S#=SC.S#(2)查询选修了C2且成绩大于90分的学生的学号、姓名、成绩Select SC.S#,SNAME, GRADE FROM S,SC WHERE S.S#=SC.S# ANDC#=’C2’ AND GRADE>90(3)求各个课程号及相应的选课人数;Select C#,COUNT(S#) FROM SC GROUP BY C#(4)检索选修课程名为MATHS的学生学号与姓名;Select SC.S#,SNAME FROM S,C,SC WHERE S.S#=SC.S# ANDC.C#=SC.C# AND CNAME=’MATHS’(5)检索至少选修LIU老师所授课程中一门课程的女学生姓名.Select SNAME FROM S,C,SC WHERE S.S#=SC.S# AND C.C#=SC.C#AND TEACHER LIKE ‘LIU%’AND S EX=’F’(6)检索至少选修两门课程的学生学号.Select S# FROM SC GROUP BY S# HAVING COUNT(C#)>=2(7)求选修C4课程的学生的平均年龄.Select AVG(AGE) FROM SC,S WHERE S.S#=SC.S# AND C#=’C4’(8)求LIU老师所授课程的每门课程的学生平均成绩.(9)Select SC.C#,AVG(GRADE) FROM C,SC WHERE C.C#=SC.C# AND TEACHER=’LIU%’ GROUP BY C.C#(10)求information系选修课程超过2门课的学生的学号、姓名、平均成绩,并按平均成绩降序排列Select SC.S#,SNAME,AVG(GRADE) FROM S,SC WHERE S.S#=SC.S#AND SDEPT=’information’ GROUP BY SC.S# HAVINGCOUNT(C#)>2 ORDER BY AVG(GRADE) DESC(11)查询与Wanghui在同一个系学习的所有学生的学号和姓名(12)Select S2.S#,S2.SNAME FROM S AS S1 ,S AS S2 WHERE S1.SDEPT=S2.SDEPT AND S1.SNAME=’Wanghui’实验七数据库的非相关子查询实验实验目的:继续熟练查询分析器的使用方法;掌握非相关子查询的用法,理解他的执行过程;掌握多表连接查询和子查询写法中的相互转换。