数据库技术与应用B-SQL命令题题库.doc_第1页
数据库技术与应用B-SQL命令题题库.doc_第2页
数据库技术与应用B-SQL命令题题库.doc_第3页
数据库技术与应用B-SQL命令题题库.doc_第4页
数据库技术与应用B-SQL命令题题库.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL 查询命令题题库一、写出 SQL 查询命令 设有一个职工表,表中有若干条记录,表结构定义如下: 编号 姓名 部门 年龄 进厂日期 职称 性别 电话 文本 文本 文本 整型 日期 / 时间 文本 文本 长整型 记录举例: 2006 汪洋 技术部 44 1980/05/06 技术员 男 73979400 编写 SQL 命令完成下面的查询 : 1、列出姓名中包含“秋”字的全部男职工的信息: 2、列出所有除技术部以外的年龄在 40 岁以上的职工的姓名和电话: 3、统计进厂迄今已满 25 年或以上的职工人数: 4、按部门显示职工的平均年龄,显示形式见下表,注意按部门顺序排列: 性别 平均年龄 财务部 52 技术部 36.2 人事部 52.3 销售部 44.8 5、显示男职工中年龄最小者的姓名1、SELECT *FROM 职工表WHERE 姓名LIKE”*秋*”AND 性别=”男”2、SELECT 姓名,电话FROM 职工表WHERE 部门LIKE”!技术部” AND年龄403、SELECT COUNT(编号) FROM 职工表 WHERE YEAR(NOW()-YEAR(进厂日期)=254、SELECT 性别,AVG(年龄)AS平均年龄 FROM 职工表 GROUP BY 部门 ORDER BY 部门5、SELECT 姓名 FROM 职工表 WHERE 性别=”男” AND 年龄=(SELECT MIN(年龄)FROM 职工表)二、根据主教材第四章所给的商品库和教学库,按照下列所给的每条SQL查询语句写出相应的功能。在名称为商品库的数据库中包含有商品表1和商品表2,它们的定义分别为:商品表1(商品代号char(8),分类名 char(8),单价 float ,数量 int )商品表2(商品代号char(8),产地 char(8),品牌 char(6)在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义分别为:学生(学生号char(7),姓名char(6),性别char(2),出生日期 datetime,专业char(10),年级int)课程(课程号char(4),课程名char(10),课程学分 int)选课(学生号char(7),课程号char(4),成绩 int)1. selectx.商品代号,分类名,数量,品牌(09年1月考)from商品表1x ,商品表2ywherex.商品代号 = y.商品代号从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息2.select distinct 产地from 商品表2从商品库中查询出所有商品的不同产地3. select distinct 品牌(07年7月考)from 商品表2从商品库中查询出所有商品的不同品牌4.select count(distinct 产地)as 产地数(08年7月考)from 商品表2从商品库中查询出所有商品的不同产地的总数5. selectx.商品代号,分类名,数量,品牌from商品表1x ,商品表2ywherex.商品代号 = y.商品代号 and ( 品牌 =熊猫or品牌 =春兰)从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌6.select 学生.学生号,count(*)as 选课门数(08年1月考、09.7考)from 学生,选课where 学生.学生号=选课.学生号group by 学生.学生号从教学库中查询出每个学生选课的门数7.select distinct x.*from 学生 x,选课 y,选课 zwhere y.学生号=z.学生号 and y.课程号z.课程号 and x.学生号=y.学生号从教学库中查询出至少选修了两门课程的全部学生8.select *(09年1月考)from 学生where学生号in (select 学生号from 选课group by 学生号 having count(*)=1 )从教学库中查询出只选修了一门课程的全部学生9.select x.学生号,y.学生号,y.课程号(07年7月考)(09年1月考)from选课 x,选课 ywherex.学生号=s1 and y.学生号=s2and x.课程号=y.课程号从教学库中查询出学生号为 s1的学生和学生号为 s2的学生选修的共同课程的课程号10.select x.*from课程 x,选课 ywherex .课程号= y .课程号 and y .学生号= s1and y .课程号 notin (select 课程号 from 选课 where 选课.学生号= s2)从教学库中查询出学生号为 s1的学生所选修、而学生号为 s2的学生没有选修的课程11.select *from课程wherenotexists (select*from 选课where 课程.课程号=选课.课程号 )从教学库中查询出所有未被学生选修的课程12. select *(08年7月考)from 课程whereexists (select * from 选课 where 课程.课程号=选课.课程号 )从教学库中查询出所有已被学生选修的课程13.select *(08年1月考)from学生whereexists(select *from 选课where学生.学生号=选课.学生号group by 选课.学生号 having count(*)=3)从教学库中查询出同时选修了3门课程的全部学生14.select *from学生where学生号 in(select 学生号from 选课group by 学生号 having count(*)103. 从商品库中查询出数量在10和20之间的所有商品。select*from商品表1where数量=10and数量 all (select单价from商品表1where分类名=”电视机”)8. 从商品库中查询出比所有商品单价的平均值要高的全部商品。(09年1月考)select*from商品表1where单价 all (selectavg (单价)from商品表1)9. 从商品库中查询出数量最多的一种商品。(09年7月考)select*from商品表1where数量= some(selectmax (数量)from商品表1)10. 从商品库中查询出同一类商品多于一种的所有分类名。(07年7月考)selectdistinct 分类名from商品表1groupby 分类名 having count(*)111.从商品库中查询出同一产地的商品只有一种的所有商品。select商品表1.* ,产地from商品表1, 商品表2where商品表1.商品代号=商品表2.商品代号 and 产地in (select 产地from商品表1 X ,商品表2 YwhereX.商品代号=y.商品代号groupby产地 having count(*)=1 )12. 从商品库中查询出每种商品的总价值,并按降序排列出来。select*, 单价*数量 as 总价值from商品表1orderby 总价值 desc13.从教学库中查询出至少选修了姓名为 m1学生所选课程中一门课的全部学生号。selectdistinct 学生.*from学生, 选课where 学生.学号=选课.学号and 课程号= any (select 课程号from 学生,选课where 学生.学生号=选课.学生号 and 姓名=m1 )14.从教学库中查询出每门课程被选修的学生人数,并按所选人数的升序排列出课程号、课程名和选课人数。select课程.课程号, 课程名,count(课程.课程号)as 人数from课程, 选课where课程.课程号=选课.课程号group by 课程.课程号,课程名orderby 人数15. 从商品库中查询出不同产地,并按产地所具有的品牌数多少升序排列。(08年7月考)select 产地 ,count (品牌)as 品牌数from 商品表2group by产地order by品牌数16.从教学库中查询出至少有5名学生所选修的全部课程(提示:使用子查询)(08年1月考)select*from课程whereexists(select *from 选课where课程.课程号=选课.课程号group by 选课.课程号 having count(*)=5)四、根据下面所给的AAA数据库,写出下列每条查询语句的执行结果,或者写出下列每条语句或程序段的功能。假设存在名为AAA的数据库,包括Students(学号char(8),姓名varchar(8),年龄int,专业varchar(20),入学日期 DateTime)和Score(学号char(8),课程名 varchar(10),成绩numeric(5,2))两张表。1.SELECT*FROMStudentsWHEREDATEPART(year,入学日期)=datepart(year,GETDATE()从Students表中查询出所有当年入学的学生记录2.DECLAREMyNOchar(8)SETMyNO=20030001IF (SELECT 专业 fromstudents WHERE学号=MyNO)=计算机软件BeginSelectAVG(成绩)AS 平均成绩From scroeWhere 学号= MyNOEndElsePrint学号为+MyNO +的学生号不存在或不属于软件专业Go首先定义一个名为MyNo的局部变量,并给它赋初值,如果MyNo属于计算机软件专业,则显示出平均成绩,否则显示“学生为MyNo的学生不存在或不属于软件专业”。3.declare a numeric(5,2)(09.7考)set a=(select avg(成绩) fromscore)select *from scorewhere 成绩=a从Score表中查询出大于等于平均成绩的所有记录。4. declare a numeric(5,2),b numeric(5,2)(08年1月考)set a=(select max(成绩) fromscore)setb=(select min(成绩) fromscore)print a- b求出Score表中最高成绩与最低成绩的分数之差5.declare a char(6)set a=刘亮if(exists(select * from students where 姓名=a)print 姓名为+a+的同学存在!elseprint 姓名为+a+的同学不存在!从Students表中查询出姓名为a值的学生是否存在,根据不同情况显示出相应信息。6. declare a char(8)(08年7月考)set a=计算机select计算机专业人数=count(*)from studentsWhere left(专业,3)= a从Students表中统计出专业名开头为a的值的所有学生人数7.select year(入学日期) as 入学年份,count(*) as 人数from studentsgroup by year(入学日期)从Students表中分组统计出每个年份入学的学生人数8. selectmonth (入学日期) as 入学月份,count(*) as 人数(09年1月考)from studentsgroup by month (入学日期)从Students表中分组统计出每个月份入学的学生人数9.select day(入学日期) as 入学日号,count(*) as 人数from studentsgroup by day(入学日期)从Students表中分组统计出每个日号入学的学生人数10. create procedurexxk1(09.7考)asbeginselect * from studentsx,score yWherex.学号 = y.学号End显示出AAA数据库中所有学生的记录信息及选课成绩11.create procedurexxk2(08年1月考)asbeginselect x.学号,x.姓名,x.专业,count(*) as 门数from students x,score ywhere x.学号=y.学号group by x.学号,x.姓名,x.专业end显示出AAA数据库中每个学生的学号、姓名、专业及选课门数。12.create procedurexxk3(08年7月考)asbeginselect学号,avg(成绩) as 平均成绩fromscoregroupby 学号end显示出AAA数据库中每个学生的平均成绩13.create procedurexxk4(a char(8),b varchar(10),c numeric(5,2)asbeginupdate scoreset 成绩=cwhere 学号=a and 课程名=bend修改Score表中学号为a的值,课程名为b的值的学生的成绩为c的值。14.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论