实验四 单表查询
国开学习网电大数据库应用技术第四次形考作业实验答案
国开学习网电大数据库应用技术第四次形考作业实验答案实验目的:通过使用SSMS工具,练习对数据库中的数据表进行单表查询、多表连接查询、子查询。
对数据表中的数据进行更改和删除等操作。
实验要求:将相关的SQL 语句和运行结果的截屏保存在文件中,或填写在下面的实验报告中,并通过网络提交。
实验内容:使用SSMS工具,在“可用数据库”中选中Students数据库,完成如下实验。
1. 单表查询。
写出实现如下查询的SQL语句。
(1) 查询学生选课表中的全部数据。
SELECT * FROM SC(2) 查询计算机系的学生的姓名、年龄。
SELECT Sname,Sex FROM Student WHERE Sdept='计算机系'(3) 查询成绩在70~80分的学生的学号、课程号和成绩。
SELECT Sno,Cno,Grade FROM SC where Grade BETWEEN 70 AND 80;(4) 查询计算机系年龄在18~20岁男生的姓名、年龄。
SELECT Sname,Sage from Student where Sex='男' AND Sage>18 AND Sage<20(5) 查询C001课程的考试成绩最高分。
SELECT max(Grade) from SC where Cno='C001'(6) 查询计算机系学生的最大年龄和最小年龄。
SELECT max(Sage) '最大年龄',min(Sage) '最小年龄' from Student where Sdept='计算机系' (7) 统计各系的学生人数。
SELECT Sdept,count(Sno)'人数' from Student GROUP BY Sdept;(8) 统计每门课程的选课人数和考试成绩最高分。
SELECT cno,count(Sno) '选课人数',max(Grade)'最高成绩' FROM SC GROUP BY Cno;(9) 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
实验4:数据库的高级查询操作
实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。
二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。
了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。
实验:数据库单表查询
实验:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
二、实验环境已安装SQL Server 2005 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解数据库查询;2.了解数据库查询的实现方式;3.完成实验报告;五、实验内容及步骤以《实验:管理SQL Server表数据》数据库中数据为基础,请使用T-SQL 语句实现以下操作:1.列出所有不姓刘的所有学生;GOselect*from studentwhere sname not like'刘%'2.列出姓‚沈‛且全名为3个汉字的学生;USE studentGOselect*from studentwhere sname like'王_[^ ]'3.显示在1985年以后出生的学生的基本信息;GOselect*from studentwhere sage<(year(getdate())-1985)4.按照‚性别、学号、姓名、年龄、院系‛的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为‚条件不明‛;USE studentGOselect ssex=case ssexwhen'男'then'男生'when'女'then'女生'else'条件不明'end,sno,sname,sage,sdeptfrom student5.查询出课程名含有‚数据‛字串的所有课程基本信息;USE studentGOselect*from coursewhere cname like'%数据%'6.显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;USE studentGOselect sno,sname,ssex,sage,sdept from studentwhere sno like'_______[1-4,9]%'or sno like'________[1-4,9]'7.列出选修了‘1’课程的学生,按成绩的降序排列;USE studentGOselect student.sno,sname,ssex,sage,sdept,grade from student,scwhere cno=1 and student.sno=sc.snoorder by grade DESCGO8.列出同时选修‚1‛号课程和‚2‛号课程的所有学生的学号;USE studentGOselect a.sno from sc a,sc bwhere o=1 and o=2 and a.sno=b.sno9.列出课程表中全部信息,按先修课的升序排列;USE studentgoselect*from courseorder by cpno ASCGo10.列出年龄超过平均值的所有学生名单,按年龄的降序显示;USE studentgoselect*from studentwhere sage>(select avg(sage)from student)order by sage DESC11.按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为‚学号,姓名,性别,出生年份,院系‛;USE studentgoselect sno 学号,sname 姓名,ssex 性别,(year(getdate())-sage)出生年份,sdept 院系from studentorder by(year(getdate())-sage)ASC12.按照院系降序显示所有学生的‚院系,学号、姓名、性别、年龄‛等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;USE studentgoselect院系=case sdeptwhen'CS'then'计算机系'when'IS'then'信息系'when'MA'then'数学系'when'EN'then'外语系'when'CM'then'中医系'when'WM'then'西医系'else'院系不明'end, sno 学号,sname 姓名,ssex 性别,sage 年龄from studentorder by sdept DESC13.显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段‚院系规模‛,其中若该院系人数>=5则该字段值为‚规模很大‛,若该院系人数大于等于4小于5则该字段值为‚规模一般‛,若该院系人数大于等于2小于4则该字段值为‚规模稍小‛,否则显示‚规模很小‛;USE studentgoselect distinct'院系'=sdept,'院系规模'=casewhen count(*)>=5 then'规模很大'when count(*)>=4 and count(*)<5 then'规模一般'when count(*)>=2 and count(*)<4 then'规模稍小'else'规模很小'end from studentgroup by sdept14.按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;USE studentgoselect sno,cno,grade from scwhere grade between 70 and 80order by cno DESC,grade DESCgo15.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为‚学生总人数,平均年龄‛;USE studentgoselect'学生总人数'=count(*),'平均年龄'=A VG(sage)from student16.显示选修的课程数大于3的各个学生的选修课程数;USE studentgoselect sno 学号,'选修课程数'=count(cno)from scgroup by snohaving count(cno)>317.按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;use studentgoselect distinct cno,'选修人数'=count(sno),'最高成绩'=MAX(grade),'最低成绩'=MIN(grade),'平均成绩'=A VG(grade)FROM scgroup by cnoorder by cno DESC18.显示平均成绩大于‚200515001‛学生平均成绩的各个学生的学号、平均成绩;use studentgoselect sno 学号,'平均成绩'=avg(grade)from scgroup by snohaving avg(grade)>(select avg(grade)from scwhere sno='200515001')19.显示选修各个课程的及格的人数、及格比率;use studentgoselect distinct cno ,'及格人数'=sum(case when grade>60 then 1 else 0 end),'及格比率'=sum(case when grade>60 then 1 else 0 end)/count(*)from scgroup by cno20.显示选修课程数最多的学号及选修课程数最少的学号;use studentgoselect distinct'学修课程最多的学号'=sno,'选修课程数'=count(cno)from scgroup by snohaving count(cno)>=all(select count(cno)from scgroup by sno)select distinct'学修课程最少的学号'=sno,'选修课程数'=count(cno)from scgroup by snohaving count(cno)<=all(select count(cno)from scgroup by sno)21.显示各个院系男女生人数,其中在结果集中列标题分别指定为‚院系名称、男生人数、女生人数‛;use studentgoselect distinct sdept 院系名称,'男生人数'=sum(case ssex when'男'then 1 else 0 end), '女生人数'=sum(case ssex when'女'THEN 1 ELSE 0 end)from STUDENTgroup by sdept22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;USE studentgoselect distinct'不及格学生学号'=sno,'平均分数'=avg(grade)from sc group by snohaving sum(case when grade<60 then 1 else 0 end)>=2六、出现问题及解决办法如:某些查询操作无法执行,如何解决?。
实验四 数据查询(2)
实验四“教学管理系统”数据查询(2)一、实验目标:1、熟练掌握各种子查询的方法使用;2、掌握视图的创建方法;二、实验内容:1、用子查询实现学生成绩信息查询功能【实验场景】:学期结束时班主任通过下述子任务①②的查询结果,将有不及格课程的学生成绩单邮寄到学生家中,通知准备开学后补考。
而教务处负责成绩管理的老师也需要通过子任务③④的查询结果完成相应的课程成绩处理和分析工作。
任务如下:①根据某门课程的名称,如“C语言程序设计”,查询开设这门课程的所有课程班情况。
查询结果如图一所示:图一查询“C语言程序设计”课程班信息②查询本班课程成绩不及格的学生学号、姓名、家庭住址、邮编。
图二查询本班成绩不及格的学生基本信息③查询存在成绩不及格学生的课程班的编码、课程名称和任课教师信息。
图三查询成绩不及格的学生课程信息④查询平均成绩大于等于80分的课程班的编码、课程名称和任课教师信息。
图四查询平均成绩优秀的学生课程信息请用T-SQL语句实现上述四个查询。
【解决示例】:分析:根据子任务①的要求,可以分两步来完成:第一步:先在表“TB_Course”中查询出这门课程的课程编码,因为课程班信息表“TB_CourseClass”中只有课程编码信息“CourseID”;第二步:按照课程编码信息在表“TB_CourseClass”中查询关于这门课程的所有课程班信息。
现在要解决的问题是,如何将以上两步骤的T-SQL查询语句用子查询的方式一步完成?实现参考代码如下:打开SSMS窗口,在查询编辑器中输入以下T-SQL语句:【参考代码】:注意:上述子查询中返回的字段名称必须与外层查询中需要与子查询匹配的字段名称(如关键字“IN”前面)字段名称一致,且子查询中返回的字段数只能是一个。
【拓展练习】:教务处管理学生课程选修的老师经常需要查询:只要存在任何一门课程班的选修人数不满最大允许选修人数的一半时,就要查看所有未选满(【FullFlag】字段为“U”)的课程班信息。
实验四 简单查询
深圳大学实验报告课程名称:数据库系统实验项目名称:实验四简单查询学院:专业:指导教师:报告人:学号:班级:实验时间:2012-5-1实验报告提交时间:2012-5-2教务处制实验目的与要求:1.掌握按条件查询。
2.掌握对查询结果排序。
3.掌握使用汇总函数的查询。
4.掌握对查询结果进行分组。
方法、步骤:1.先用查询分析器建一个数据库STUDENT,以及分别建表student,class,course,score;2.再打开企业管理器分别向之前建好的表里输入数据;3.然后再用查询分析器对建好的几张表进行简单查询;4.将查询的语句及结果截图到实验报告上,并进行分析。
实验过程及内容:1.查询student表中所有学生的详细信息。
2.查询所有开设课程的课程名称及考核方式。
3.查询所有选课学生的学号(如一个同学同时选修了多门课程,学号只显示一次)。
4.查询所有学时在[40,60]范围内的课程的课程编号和课程名称(分别用AND和BETWEEN运算符实现)。
5.查询所有学生党员的学号和姓名。
6.查询所有姓张的学生的姓名和性别(分别用LEFT函数和LIKE运算符实现)。
7.查询所有学生的姓名及年龄,并按照年龄从小到大的顺序显示,列名为姓名、年龄。
8.查询入学成绩在前20%的学生姓名,最后一名如有并列,只显示一个。
9.查询入学成绩排在前3位的学生姓名,最后一名如有并列,全部显示。
10.查询所有10月份出生的学生人数。
11.查询没有先修课的课程名称。
12.查询入学成绩的最高分和最低分,列名分别为最高分和最低分。
13.统计男女生的入学平均成绩,显示性别和平均成绩两列。
14.统计考试和考查两种性质课程的总学分,显示课程性质和总学分两列。
15.查询选修了两门以上(包括两门)课程的学生的学号。
数据处理分析:实验思考题1.在使用带有GROUP BY子句的查询命令时,SELECT后的查询列有哪些要求?使用GROUP BY 子句后,SELECT 子句的属性名列表中只能出现分组属性和聚集函数。
实验四--MPS与MRP计划
实验四 MPS与MRP计划(4学时)一、M PS计划1、相关理论原理2、MPS计划前的检查累计提前期天数推算.库存异常状况查询。
仓库是否参与计算的查询。
设置MPS的预测版本为01,时栅代号,重复计划时格代号,计划的起始日期为2013。
5。
1,冻结日期为一周后,结束日期为半年后。
3、MPS计划执行执行MPS计划。
查询MPS计划后所有的销售订单的情况。
查询MPS计划后MPS件的物料供需情况。
查询MPS计划后的错误信息。
4、系统自动处理对于自制件,自动生成正式生产订单或重复计划订单。
对于委外件,自动生成委外订单。
对于采购件,自动生成采购订单。
5、报表查询(MPS)建议计划量明细表预测消抵明细表供需追溯明细表待处理订单明细表二、MRP计划1、相关理论原理2、MPS计划前的检查累计提前期天数推算。
库存异常状况查询.仓库是否参与计算的查询。
无物料清单查询.订单异常状况查询。
设置MRP的预测版本为11,时栅代号为01,重复计划时格代号为01,计划的起始日期为当前,冻结日期为一周后,结束日期为半年后。
3、MPS计划执行执行MPS计划。
查询MPS计划后MPS件的物料供需情况。
查询MPS计划后的错误信息。
4、系统自动处理对于自制件,自动生成正式生产订单或重复计划订单.对于委外件,自动生成委外订单。
对于采购件,自动生成采购订单.5、报表查询(MPS)建议计划量明细表预测消抵明细表供需追溯明细表待处理订单明细表替换料处理供需资料表。
实验四表数据的简单查询
实验四表数据的简单查询实验学时:1学时实验类型:设计实验要求:必做一、实验目的掌握SELECT语句的基本用法。
掌握计算列的用法。
掌握WHERE子句中各类查询条件的写法。
二、实验内容1、在连接“MySQL”中新建数据库“world”,并将数据库文件world_inno.sql导入到该数据库之中2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。
步骤:点击“新建查询”,输入以下代码,点击执行USE worldSELECT NAME,Continent,Region FROM country;运行结果如图2.1:图2.13、从world数据库的city表中搜索返回前20条的数据。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT * FROM city LIMIT 0,20;其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始结果如图3.1:图3.14、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT NAME,Continent,SurfaceAreaFROM countryWHERE SurfaceArea > 1000000;结果如图4.1:图4.15、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT Name,Continent,RegionFROM countryWHERE NAME like 'C%';运行结果如图5.1:图5.16、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea 从小到大进行排列。
数据库实验答案
实验3 使用T-SQL语言完成单表查询一、实验目的掌握使用T—SQL语言完成单表查询掌握常用谓词的用法掌握where子句的用法掌握order by 子句的用法掌握group by 子句和having短语的用法二、实验环境Microsoft SQL Server 2000。
三、实验内容和要求1.查询全体学生的详细信息。
2.查询所有课程的详细信息.3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。
4.查询已被学生选修了的课程的编号。
5.查询系别编号为“d002”的学生的姓名和性别。
6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。
7.查询系别编号为d001、d002和d003的学生的学号和姓名。
8.查询课程名为“C_”开头的课程名和学分.9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。
10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。
11.查询学校所开设的总的课程数.12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。
13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分"。
14.求各个系别的编号以及各系的人数。
15.查询选课人数大于等于2人的课程编号以及选课的人数。
16.查询学生200215122选修课程的总成绩对应的列名为“总成绩”,并显示出学号。
17.查询有2门以上课程是80分以上的学生的学号及课程数。
18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列.实验1 使用T-SQL语言建库、建表实验2 向表中增、删、改数据四、实验目的掌握使用T-SQL建库、建表、修改表;掌握使用T-SQL对表中数据进行插入、删除和修改.五、实验环境Microsoft SQL Server 2000.六、实验内容和要求19.建立数据库STDB20.在数据库STDB中建立四个表:Student表Department表Course表21.分别向以上四个表中增加数据。
单表查询实验报告
《数据库系统概论》实验报告实验名称:单表查询实验人:实验地点:实验楼317实验日期:2009-10-5一、实验准备1.硬件及软件环境要求为了使该实验顺利进行,需要有一台计算机,计算机必须安装Windows 2000、Windows XP或Windows NT操作系统,还必须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)。
实验开始之前,必须将实验1.2节中创建好的SCDB数据库和ShiYan数据库附加到当前SQL数据库服务器中。
2.本实验涉及的主要SQL语句的语法格式(1) SELECT子句指定由查询返回的列。
SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >< select_list > ::={ * |{table_name|view_name|table_alias}.*|{column_name|expression|IDENTITYCOL|ROWGUIDCOL}[[AS]column_alias] | column_alias = expression } [ ,...n ]【说明】ALL:默认设置,指定在查询结果集中可以显示重复行。
DISTINCT:指定在查询结果集中不显示重复行,空值被认为相等。
TOP n:指定只从查询结果集中输出前n行。
PERCENT:指定只从查询结果集中输出前n%行,当指定时带PERCENT,则n 的值必须介于0~100之间。
WITH TIES:指定从基本查询结果集中返回附加的行。
如果使用了ORDER BY 子句,则只能使用TOP或WITH TIES选项。
select_list:指定查询列或列表达式(即查询列表)。
各查询列表之间以逗号分隔。
*:指定在FROM 子句内返回所有表和视图内的所有列。
列按FROM 子句所指定的由表或视图返回,并按它们在表或视图中的顺序返回。
数据库原理4个表的操作
海南师范大学
数据库原理课程实验报告
步骤
调试过程及实验结果1.用SQL语句为创建前一章习题中的四个表:客户表Customers、代理人表Agents、产品表Products和订单表Orders
3.用SQL语句实现前一章的第4题的7个查询3.1
3.2
3.3查询订购了产品价格为0.50元且订货数量在500以上的客户名3.4查询没有订购P01产品的客户名
3.5查询客户和其代理人在同一个城市的客户编号、客户名、代理人编号、代理人姓名以及所在城市
3.6查询南京的客户通过北京的代理订购的所有产品号
3.7查询订购了所有单价为1.00的产品的客户编号
(对实验结果进行分析,问题回答,实验心得体会及改进意见)总。
数据库实验四
数据库概论课程实验报告(四)
2.列出姓‚沈‛且全名为3个汉字的学生;3.显示在1985年以后出生的学生的基本信息;
4.按照‚性别、学号、姓名、年龄、院系‛的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为‚条件不明‛;
6.显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;
7.列出选修了‘1’课程的学生,按成绩的降序排列;
8.列出同时选修‚1‛号课程和‚2‛号课程的所有学生的学号;
9.列出课程表中全部信息,按先修课的升序排列;
14. 按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩
15.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为‚学生总人数,
平均年龄‛;
16. 显示选修的课程数大于3的各个学生的选修课程数;
17. 按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;
18.显示平均成绩大于‚200515001‛学生平均成绩的各个学生的学号、平均成绩;
20. 显示选修课程数最多的学号及选修课程数最少的学号;
21.显示各个院系男女生人数,其中在结果集中列标题分别指定为‚院系名称、男生人数、女生人
数‛;
22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;。
SQL数据库实验四_复杂查询(1)解答
实验四复杂查询(1)解答实验结果1. 查询没有订购商品的且在北京地区的客户编号、客户名称和邮政编码,并按邮政编码降序排序。
SQL语句:SELECT customerNo,customerName,zipFROM CustomerWHERE address LIKE'%北京%'and customerNo NOT IN(SELECT customerNoFROM OrderMaster)ORDER BY zip DESC查询结果:问题:SELECT customerNo,customerName,zipFROM CustomerWHERE address='北京市'AND customerNo not in(select customerNo from OrderMaster)ORDer by zip DESC2.查询订购了“32M DRAM”商品的订单编号、订货数量和订货单价。
SQL语句:SELECT orderNo,quantity,priceFROM OrderDetailWHERE productNo IN(SELECT productNoFROM ProductWHERE productName='32M DRAM')查询结果:3.查询与员工编号E2008005在同一个部门的员工编号、姓名、性别、所属部门。
SQL语句:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')查询结果:不包括员工‘E2008005’:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')AND employeeNo!='E2008005'4.查询既订购了P2*******商品,又订购了P2*******的商品的客户编号、订单编号和订单总额。
数据库原理实验报告
计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:*****姓名:指导教师:2014年06月18 日实验项目列表计算机与信息学院实验报告纸实验一数据库创建与管理一、实验目的与要求1、熟练掌握SSMS中界面方式创建和管理数据库。
2、熟练掌握SSMS查询编辑器T-SQL语句创建和管理数据库。
3、熟练掌握备份和还原数据库。
二、实验内容1、界面方式创建和管理数据库(1)创建数据库(2)修改数据库(3)删除数据库2、利用企业管理器备份和还原数据库(1)备份数据库(2)还原数据库3、T-SQL语句方式创建和管理数据库(1)创建SPJ数据库:在SSMS中“新建查询”,输入以下语句并运行CREATE DATABASE SPJON(NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' ,SIZE = 3,MAXSIZE = 10,FILEGROWTH = 10%)LOG ON(NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,SIZE = 1,FILEGROWTH = 10%)(2)修改SPJ数据库:在查询分析器中输入以下语句并运行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data',SIZE=4,ALTER DATABASE SPJADD FILE(NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1,MAXSIZE=10,FILEGROWTH=10%)(3)删除SPJ数据库:DROP DATABASE SPJ4、界面方式创建数据库XSBOOK,写出操作过程。
实验四 数据查询——简单查询
实验四数据查询——简单查询一、实验目的1.掌握SQL查询语句的基本概念2.掌握SQLServer查询语句的基本语法3.熟练使用SQL的Select语句对单表进行查询4.熟练掌握并运用SQLServer所提供的函数5.熟练使用SQL语句进行连接操作二、实验环境(实验的软件、硬件环境)硬件:PC机软件:SQL2000三、实验说明请复习相关的单表查询及select语句的语法知识点,并完成如下内容。
四、实验内容1.在订单数据库orderDB中,完成如下的查询:(1)查询所有业务部门的员工姓名,职称,薪水(2)查询名字中含有“有限”的客户姓名和所在地(3)查询姓“王”并且姓名的最后一个字为“成”的员工(4)查询住址中含有上海或南昌的女员工,并显示其姓名,所属部门,职称,住址,其中性别用“男”和“女”显示。
(5)查询订单金额高于8000的所有客户编号(6)选取编号界于C0001~C0004的客户编号,客户名称,客户地址(7)找出同一天进入公司服务的员工(8)在订单主表中查询订单金额大于“E2005002”业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
(9)查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。
(10)查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。
(11)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
(12)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。
(13)查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用yyyy-mm-dd格式显示。
(14)查找在2008年3月中有销售记录的客户编号、名称和订单总额。
(15)使用左外连接查找每个客户的客户编号、名称、订单日期、订货金额,其中订货日期不要显示时间,日期格式为yyyy-mm-dd,按客户编号排序,同一客户再按订单金额降序排序输出。
数据库课后习题答案(第四版)
数据库原理实验手册实验一实验名称:熟悉SQL SERVER 2000环境一、实验目的熟悉SQL SERVER 2000提供的服务管理器、企业管理器、查询分析器、客户端和服务器端网络实用工具等常用管理工具的使用。
了解Windows身份验证和SQL Server身份验证这两种连接数据库服务器方式的不同,并能够使用某种连接方式登陆上SQL SERVER数据库服务器。
学会使用SQL SERVER的联机丛中寻求帮助。
二、实验原理使用SQL SERVER 2000提供的各种常用管理工具进行有关的操作。
三、实验设备安装有SQL SERVER 2000的计算机。
四、实验内容1.启动SQL SERVER 服务。
2.打开SQL SERVER的企业管理器,连接上SQL SERVER服务器。
展开左边树状窗口的各级结点,观察右边内容窗口的变化。
3.在SQL SERVER的企业管理器的树状窗口或内容窗口中选择某一项,点击鼠标右键,了解快捷菜单中的有关功能。
4.使用Windows身份验证的连接方式打开SQL SERVER的查询分析器,在查询窗口用USE命令打开样例数据库pubs(也可以从工具栏中的数据库下拉列表中选择pubs数据库)。
5.在查询窗口输入exec sp_help,运行后察看结果。
6.在查询窗口输入select * from authors ,运行后察看结果。
7.在SQL SERVER的查询分析器的“帮助”菜单中点击“目录与索引”,然后在SQL SERVER的联机丛中选“索引”,输入要查找的关键字“sp_help”、“exec”、“select”,了解它们的含义。
8.在SQL SERVER的企业管理器中创建数据库S_T,并在该数据库中创建表student、course和sc,在创建表的同时可以创建各种约束。
这三个表的结构可以参考书上85页的例5、例6和例7。
9.向各个表输入数据,各个表的数据可参考书56页的图。
10.在SQL Server的查询分析器中打开S_T数据库,输入书中91页开始的例题,实现对数据库的查询。
实验训练2:数据查询操作
实验二MySQL数据库操作实验实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL 运算符、函数、谓词,练习Select语句的操作方法。
实验内容:1.单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。
分析:商品信息存在于商品表,而且商品表中包含商品名称此被查询信息,因此这是只需要涉及一个表就可以完成简单单表查询。
(2)查询ID为1的订单。
分析:所有的订单信息存在于订单表中,而且订单用户ID也存在于此表中,因此这是只需要查询订单表就可以完成的查询。
【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。
分析:此查询过程包含两个条件,第一个是是否促销,第二个是价格,在商品表中均有此信息,因此这是一个多重条件的查询。
【实验2.3】DISTINCT(1)查询所有对商品ID为1的商品发表过评论的用户ID。
分析:条件和查询对象存在于评论表中,对此商品发表过评论的用户不止一个,而且一个用户可以对此商品发表多个评论,因此,结果需要进行去重,这里使用DISTINCT实现。
(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。
分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。
【实验2.4】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。
分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。
(2)查询今年新增的所有会员,结果按照用户名字排序。
分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。
【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。
分析:订单表中包含每个订单的订单总价和用户ID。
现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。
数据库实验4表的查询操作(4学时)
1 实验四表的查询操作(4学时)【实验目的】了解SQL 语言的使用,进一步理解关系运算,巩固数据库的基础知识。
【实验要求】掌握利用Select 语句进行各种查询操作:单表查询、多表连接及查询、嵌套查询、集合查询等。
【实验内容】在实验三创建并插入数据的表(Student ,Course ,SC ,Teacher ,TC )的基础上,完成以下操作。
1.对实验步骤中所给示例进行验证。
2.参考所给示例,完成下列各种查询操作。
(1)将教师‘罗莉’的名字改为‘罗莉莉’。
(2)将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行sql 程序文件的形式插入score 表中。
该题用以验证、理解和掌握关系模型的完整性规则;(3)求每门课的平均成绩,并把结果存入average 表(自行设计并创建);(4)将学生“马丽”的年龄改为2424;;(5)将所有学生的zipcode 属性列值填补上;(6)将average 表中的所有课程的平均成绩置零;(7)删除average 表中的课程号为‘表中的课程号为‘c007c007c007’的平均成绩记录;’的平均成绩记录;(8)删除所有average 表中平均成绩记录;(9)建立一个临时学生信息表()建立一个临时学生信息表(tstudent tstudent tstudent)),删除该表中的学号含‘101’的所有学生记录。
(1010)查询全体学生的学号与姓名;)查询全体学生的学号与姓名;(1111)查询全体学生的学号、姓名、所属系;)查询全体学生的学号、姓名、所属系;(1212)查询全体学生的详细记录;)查询全体学生的详细记录;(1313)查询全体学生的姓名及其年龄;)查询全体学生的姓名及其年龄;(1414)查询全体学生的姓名、出生年份;)查询全体学生的姓名、出生年份;(1515)查询所有修过课的学生的学号;)查询所有修过课的学生的学号;(1616)查询“计算机系”班全体学生名单;)查询“计算机系”班全体学生名单;(1717)查询查询所有年龄在)查询查询所有年龄在23岁以下的学生姓名及其年龄;(1818)查询考试成绩有不及格的学生的学号;)查询考试成绩有不及格的学生的学号;(1919)查询年龄在)查询年龄在20至22岁之间的学生姓名、系和年龄;(2020)查询年龄不在)查询年龄不在20至22岁之间的学生姓名、系和年龄;(2121)查询“)查询“计算机系”和“电商系”的学生的姓名;(2222)查询既不是“计)查询既不是“计1111”也不是“计”也不是“计6161”班的学生的姓名和班级信息;”班的学生的姓名和班级信息;(2323)查询学号为“)查询学号为“04262002”的学生的详细情况;(2424)查询学号以“)查询学号以“04262”打头的学生信息;(2525)查询所有姓“张”学生的学号、姓名、性别、年龄;)查询所有姓“张”学生的学号、姓名、性别、年龄;(2626)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;(2727)查询所有不姓“刘”学生的姓名;)查询所有不姓“刘”学生的姓名;(2828)查询课程号以“)查询课程号以“C ”开头的最后两个字母为“”开头的最后两个字母为“050505”的课程号和课程名;”的课程号和课程名;(2929)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查找缺少考试成绩的学生和相应的课程号;(3030)查找全部有成绩记录的学生学号、课程号;)查找全部有成绩记录的学生学号、课程号;(3131)查找“计算机系”年龄在)查找“计算机系”年龄在22岁以下的学生学号、姓名;(3232)查找选修了“)查找选修了“)查找选修了“C001C001C001”号课程的学生学号及其成绩,查询结果按分数降序排序;”号课程的学生学号及其成绩,查询结果按分数降序排序;(3333))查询全体学生情况,查询全体学生情况,查询结果按所在系升序排列,查询结果按所在系升序排列,查询结果按所在系升序排列,对同一系中的学生按年龄降序对同一系中的学生按年龄降序排列;(3434)查询学生总人数;)查询学生总人数;)查询学生总人数;(3535)查询选修了课程的学生人数;)查询选修了课程的学生人数;)查询选修了课程的学生人数;(3636)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;(3737)查询学习“)查询学习“)查询学习“C001C001C001”课程的学生最高分数;”课程的学生最高分数;”课程的学生最高分数;(3838)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;(3939)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;(4040)自然连接)自然连接student 和score 表;表; (4141)使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课)(4242)使用复合条件连接查询选修“)使用复合条件连接查询选修“)使用复合条件连接查询选修“c001c001c001”号课程且成绩在”号课程且成绩在90分以上的所有同学;分以上的所有同学;(4343)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;(4444)查询选修了全部课程的学生;)查询选修了全部课程的学生;)查询选修了全部课程的学生;(4545)查询所有选修了)查询所有选修了C001号课程的学生学号、姓名;号课程的学生学号、姓名;(4646)查询选修了课程)查询选修了课程C001或c007的学生学号、姓名;的学生学号、姓名;(4747)查询“计算机系”的学生及年龄不大于)查询“计算机系”的学生及年龄不大于23岁的学生;岁的学生;(4848)查询既选修了课程)查询既选修了课程C001又选修了课程c007的所有学生学号、姓名;的所有学生学号、姓名;(4949)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;(5050)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;(5151)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;(5252)建立“计算机系”学生的视图)建立“计算机系”学生的视图1;(5353)建立“计算机系”学生的视图)建立“计算机系”学生的视图2,并要求进行修改与插入时,仍须保证该视图只有“计算机系”班学生;有“计算机系”班学生;(54)建立“计算机系”选修了“C001”课程的学生的视图,定义视图名为“v_cs_C001_student1v_cs_C001_student1””; (5555)建立“计算机系”班选修了“)建立“计算机系”班选修了“)建立“计算机系”班选修了“C001C001C001”课程且成绩在”课程且成绩在90分以上的学生的视图,定义视图名为“义视图名为“cs_c001_student2cs_c001_student2cs_c001_student2””; (5656)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“v_birth_student v_birth_student v_birth_student””; (5757)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“v_female_student v_female_student v_female_student””; (5858)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“v_average_student v_average_student v_average_student””; (5959)在“计算机系”学生视图中找出年龄小于)在“计算机系”学生视图中找出年龄小于22岁的学生;岁的学生;(6060)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“C001C001C001”课程的学生;”课程的学生;”课程的学生;(6161)通过()通过()通过(525252)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;(6262)通过()通过()通过(535353)中的“计算机系”视图,插入一个新学生记录。
SQL数据库_实验四_复杂查询(2)解答
12.查找销售总额少于5000元的销售员编号、姓名和销售额。
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
14.查找同时订购了商品编号为“P20070001”和商品编号为“P20070002”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出。
导入实验三中保存的订单数据库OrderDB.mdf。完成之后,进行以下的实验。写出相对应的SQL语句,并给出查询结果。
1.统计订单主表的订单金额。(用订单明细表中的订单汇总金额更新订单主表相应的订单金额属性)
2.查询订单金额最高的订单编号、客户姓名、销售员名称和相应的订单金额。
3.统计客户号为“C20050001”的客户的客户名、订单数、订货总额和平均订货金额。(表头用中文显示)
WHEREa.employeeNo=b.salerNo
GROUPBYorderSum,salerNo,employeeName
HAVINGorderSum<5000
查询结果:
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
SQL语句:
SELECTb.customerNo,customerName,d.productNo,productName,quantity,金额=quantity*price
ANDc.customerNo='C20050001'
GROUPBYcustomerName,orderSum
查询结果:
4.统计每个客户的客户号、客户名、订单数、订货总额和平均订货金额。(表头用中文显示)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四单表查询
一、实验目的与要求
(1) 掌握SQL查询语句的基本概念。
(2) 掌握SQL Server查询语句的基本语法。
(3) 熟练使用SQL的SELECT语句对单表进行查询。
(4) 熟练掌握并运用SQL Server所提供的函数。
(5) 熟练使用SQL语句进行单表聚合操作。
二、实验内容
在订单数据库OrderDB中,完成如下查询:
(1) 查询员工的姓名、职务和薪水。
查询脚本:
select employeename,headship,salary
from employee
查询结果:
(2) 查询名字中含有“有限”的客户名称和所在地。
查询脚本:
select customername,address
from customer
where customername like'%有限%'
查询结果:
(3)查询出姓“张”并且姓名的最后一个字为“梅”的员工。
查询脚本:
select*
from employee
where employeename like'张%梅'
查询结果:
(4)查询住址中含有“上海”或“南昌”的女员工,并显示其姓名、所属部门、职务、住址、出生日期和性别。
如果出生日期为空,则显示“不详”,否则按格式“yyyy-mm-dd”显示,性别用“男”和“女”显示。
查询脚本:
select employeename 姓名,department 部门,headship 职务,address 住址,
case sex
when'M'then'男'
when'F'then'女'
end as性别,
isnull(convert(char(10),birthday,120),'不详')出生日期
from employee
where(address like'%南昌%'or address like'%上海%')and sex='F'
查询结果:
(5)查询出职务为“职员”或职务为“科长”的女员工的信息。
查询脚本:
select*
from employee
where(headship='职员'or headship='科长')and sex='F'
查询结果:
(6)选取编号不在C20050001~C20050004之间的客户编号、客户名称、客户地址。
查询脚本:
select customerNO,customerName,address
FROM Customer
where(customerNo not between'C20050001'and'C20050004')
查询结果:
(7)在表OrderMaster中挑出销售金额大于等于5000元的订单。
先统计订单主表中的订单金额,使用命令:
update ordermaster set ordersum=sum2
from ordermaster a,(select orderno,sum(quantity*price) sum2
from orderdetail
group by orderno) b
查询脚本:
select a.orderno 订单号,b.sum2 订单金额
from ordermaster a,(select orderno,sum(quantity*price) sum2
from orderdetail
group by orderno) b
where a.orderno=b.orderno and sum2>=5000
查询结果:
(8)在订单主表中选取订单金额最高的前10%的订单数据。
查询脚本:
select top 10 percent*
from ordermaster
order by ordersum desc
查询结果:
(9)计算一共销售了几种商品。
查询脚本:
select count(distinct productno)产品种类
from orderdetail
查询结果:
(10)计算OrderDetail表中每种商品的销售数量、平均销售单价和总销售金额,并且依据销售金额有大到小排序输出。
查询脚本:
select productno 商品编号,sum(quantity)销售数量,avg(price)平均销售单价,sum(price*quantity)总销售金额
from orderdetail
group by productno
order by sum(price*quantity)desc
查询结果:
(11)按客户编号统计每个客户2008年2月的订单总金额。
查询脚本:
select customerno 客户编号,sum(ordersum)订单总金额
from ordermaster
where year(orderdate)='2008'and month(orderdate)='02'
group by customerno
查询结果:
(12)统计至少销售了10件以上的商品编号和销售数量。
查询脚本:
select productno 商品编号,sum(quantity)销售数量
from orderdetail
group by productno
having sum(quantity)>=10
查询结果:
(13)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资。
查询脚本:
select count(employeeno)员工人数,avg(salary)平均工资
from employee
where department='业务科'and(year(birthday)='1973'or year(birthday)='1967')查询结果:
三、实验心得.
基本掌握了SQL语句中的单表查询语句的使用方法,了解并使用select语法。
并且了解GROUP BY子句分组,GROUP BY子句分组的作用是细化聚集函数的作用对象,若未对查询结果分组,聚集函数将作用于整个查询结果对查询结果分组后,同时聚集函数将分别作用于每个组,作用对象是查询的中间结果表按指定的一列或多列值分组,值相等的为一组。
掌握HAVING短语与WHERE子句的区别,二者作用对象不同。
WHERE子句作用于基表或视图,从中选择满足条件的元组,而HAVING短语作用于组,从中选择满足条件的组。
同时应该了解,没有没有group by就没有having。