SQL练习题及答案
- 格式:doc
- 大小:91.50 KB
- 文档页数:8
姓名:______________班级:__________________一、请根据以下要求,填写正确的SQL语句。
1.查询“学生”表中所有计算机专业的男生信息。
______________________________________________________________________________ 2.查询“学生”表中姓“李”且2006年出生的学生的学号、姓名、出生日期信息。
______________________________________________________________________________ 3.查询“学生”表中年龄最大的三名学生的学号、姓名、出生日期信息。
______________________________________________________________________________ 4.统计“学生”表中各专业男生人数,显示格式为:专业、人数。
______________________________________________________________________________ 5.查询每名“学生”的平均成绩,按平均成绩降序显示姓名和平均成绩信息。
______________________________________________________________________________ 6.已知“Student1”表结构与“Student”完全相同,现将“Student1”中所有“旅游管理”专业学生的学号、姓名及专业追加到“Student”中。
______________________________________________________________________________ 7.计算Grade等级字段的值。
计算规则为60分及以上为合格,其余为不合格。
sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。
通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。
本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。
1. 查询员工表中所有员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。
答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。
SQL语句练习题1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。
select ename,sal from emp where job='CLERK' or job='MANAGER';2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。
select ename,deptno,sal,job from emp where deptno between 10 and 30;3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。
select ename,sal,job from emp where ename like 'J%';4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。
select ename,job,sal from emp where sal<=2000 order by sal desc;5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。
select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=’CLERK’;6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。
select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000;7、查询所有雇员的姓名、SAL与COMM之和。
select ename,sal+nvl(comm,0) “sal-and-comm” from emp;8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);9、查询列出来公司就职时间超过24年的员工名单select ename from emp where hiredate<=add_months(sysdate,-288);10、查询于81年来公司所有员工的总收入(SAL和COMM)select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=’1981’;11、查询显示每个雇员加入公司的准确时间,按××××年××月××日时分秒显示。
sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。
select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。
select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。
select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。
select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。
select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。
select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。
select sname from student where sdept= 'cs' and sage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
sql试题及答案解析SQL试题及答案解析1. 题目:查询所有学生的姓名和年龄。
答案:使用以下SQL查询语句可以实现该需求:```sqlSELECT name, age FROM students;```解析:此查询语句从`students`表中选择`name`和`age`两个字段,返回所有学生的姓名和年龄。
2. 题目:统计每个班级的学生人数。
答案:使用以下SQL查询语句可以统计每个班级的学生人数:```sqlSELECT class_id, COUNT(*) AS student_count FROM students GROUP BY class_id;```解析:此查询语句通过`GROUP BY`子句按`class_id`分组,使用`COUNT(*)`函数统计每组的记录数,即每个班级的学生人数。
3. 题目:找出成绩最高的学生的姓名和成绩。
答案:使用以下SQL查询语句可以找出成绩最高的学生的姓名和成绩:```sqlSELECT name, score FROM students ORDER BY score DESC LIMIT 1; ```解析:此查询语句首先使用`ORDER BY score DESC`对成绩进行降序排序,然后通过`LIMIT 1`限制返回的记录数为1,从而得到成绩最高的学生的姓名和成绩。
4. 题目:查询所有选修了课程编号为'CS101'的学生的姓名。
答案:使用以下SQL查询语句可以查询所有选修了课程编号为'CS101'的学生的姓名:```sqlSELECT FROM students s JOIN enrollments e ONs.student_id = e.student_id WHERE e.course_id = 'CS101';```解析:此查询语句通过`JOIN`操作符连接`students`表和`enrollments`表,条件是两个表中的`student_id`字段相等。
一在数据库 school 中建立student , sc, course 表。
学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学生选课SC(Sno,Cno,Grade)二设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学生的系科为: JSJ2 把陈小明的年龄加1岁,性别改为女。
2 修改李文庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句一单表1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。
2查询姓名中第2个字为“明”字的学生学号、性别。
3查询 1001课程没有成绩的学生学号、课程号4查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列5按10分制查询学生的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。
90-100为10)6查询 student 表中的学生共分布在那几个系中。
SQL练习题库表结构Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表试题:1、查询“0001”课程比“C002”课程成绩高的所有学生的学号;Select s# from scWhere c#='0001' and score>any(select score from sc c#='0002')2、查询平均成绩大于60分的同学的学号和平均成绩;select s#,avg(score) from SCgroup by s#having avg(score)>603、查询所有同学的学号、姓名、选课数、总成绩;select student.s#,student.sname,count(sc.c#)as 选课数,sum(score)总成绩from student,scwhere student.s#=sc.s#group by student.s#,student.sname4、查询姓“张”的老师的个数;select count(*)人数from teacherwhere tname like'张%'5、查询没学过“叶平”老师课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# not in(select t# from teacher where tname='张丽芬') group by student.s#,student.sname6、查询学过“0001”并且也学过编号“0002”课程的同学的学号、姓名;select sc.s#,sname from sc,studentwhere sc.c# = '0001' and student.s# = sc.s# and sc.s# in (select s# from sc where sc.c# = '0002')--并(两表值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'unionselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--交(有相同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'intersectselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--差(不同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'exceptselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# in(select t# from teacher where tname='张丽芬')group by student.s#,student.sname8、查询课程编号“001”的成绩比课程编号“002”课程低的所有同学的学号、姓名;select student.s#,sname,score from student,scwhere student.s#=sc.s# and score in(( select score from sc where c#='0001' )<all( select score from sc where c#='0002' )) 9、查询所有课程成绩小于60分的同学的学号、姓名;select student.s#,sname from studentwhere s# in(select s# from sc where score<60)10、查询没有学全所有课的同学的学号、姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s#group by student.s#,student.snamehaving count(c#)<(select count(c#) from course)11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s# and c#=any(select c# from scwhere s#='1001')group by student.s#,student.sname12、查询至少学过学号为“0001”同学所有一门课的其他同学学号和姓名;Select sc.s#,sname from sc inner join student on sc.s#=student.s#Where c# in (select c# from sc where s#=’0001’)13、把“SC”表中“赵雁南”老师教的课的成绩都更改为此课程的平均成绩;update scset score=(select avg(sc.score) from sc,teacher,coursewhere sc.c#=course.c# and course.t#=teacher.t# and teacher.tname='赵雁南')where sc.c#=(select c# from course,teacher where course.t#=teacher.t# and tname='赵雁南' )14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select student.s#,sname from student,scwhere student.s#=sc.s# and sc.c#=all(select c# from sc where s#='1005') and student.s#<>'1005'15、删除学习“朱玉文”老师课的SC表记录;delete from scwhere c# in(select c# from sc where c# in (select c# from course,teacher where teacher.t#=course.t# and teacher.tname='朱玉文' ) )16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“0002”课程的同学学号、号课的平均成绩;insert into scvaluesselect s# from sc where s# not in (select s# from sc where c#='0002'select avg(score) as 平均成绩from sc where c#='0002'17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分select sc.s#,ame,sc.score,avg(score)as 平均成绩from sc inner join course on sc.c#=course.c#where sc.c# in(select c# from course where cname=any(select cname from course where cname in('计算机基础','Oracle','软件工程')))group by sc.s#,ame,sc.scoreorder by avg(score) descSELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0001') AS 计算机基础,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0002') AS Oracle,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0011') AS 软件工程,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM sc AS tGROUP BY S#ORDER BY avg(t.score) desc18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分select c# 课程ID,max(score) 最高分,min(score) 最低分from scgroup by c#19、按各科平均成绩从低到高和及格率的百分数从高到低顺序select c#, avg(score) from scwhere score>60group by c#20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()21、查询不同老师所教不同课程平均分从高到低显示select course.t#,avg(sc.score) as 平均分from sc,coursewhere sc.c#=course.c#group by course.t#order by avg(sc.score) desc22、查询如下课程成绩第3 名到第6 名的学生成绩单:企业管理,马克思,UML,数据库[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩select student.s#,student.sname,sc.score,ame from student inner join sc on student.s#=sc.s#inner join course on sc.c#=course.c#where ame in('oracle','电路分析','计算机基础')order by ame,sc.score desc23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]select sc.c#,ame,count(*)人数from sc,coursewhere course.c#=sc.c#group by sc.c#,ame24、查询学生平均成绩及其名次select sc.s#,avg(score) from scgroup by sc.s#order by avg(score) desc25、查询各科成绩前三名的记录考虑成绩并列情况select s#,c# ,score from scwhere score in (select distinct top 3 score from scgroup by c#,score)order by score desc26、查询每门课程被选修的学生数select c# as 课程号,count(c#)as 选修人数from scgroup by c#order by count(c#) desc27、查询出只选修了一门课程的全部学生的学号和姓名select sc.s#,student.sname from sc inner join student on student.s#=sc.s#group by sc.s#,student.snamehaving count(c#)=128、查询男生、女生人数select ssex, count(*) as 总人数from studentgroup by ssex29、查询姓“张”的学生名单select sname from studentwhere sname like '张%'30、查询同名同性学生名单,并统计同名人数select ssex,count(*) from studentgroup by ssex31、同年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列select c#,avg(score)平均成绩from scgroup by c#order by avg(score) asc33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select top 1 student.s#,student.sname,avg(score)平均成绩from student inner join sc on student.s#=sc.s#group by student.s#,student.snameorder by avg(score) desc34、查询课程名称为“数据库”,且分数低于80的学生姓名和分数select student.sname,sc.score from sc,student,coursewhere student.s#=sc.s# and sc.c#=course.c# and ame='计算机基础' and sc.score<80group by student.sname,sc.score35、查询所有学生的选课情况;select student.s#,sname,c# from student left join sc on student.s#=sc.s#36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;select student.sname,ame,sc.score from student,sc,coursewhere student.s#=sc.s# and sc.c#=course.c# and sc.score>70order by score desc37、查询不及格的课程,并按课程号从大到小排列select c#,score from scwhere score<60order by c#38、查询课程编号为0001且课程成绩在70分以上的学生的学号和姓名;select student.s#,sname from sc,studentwhere c#='0001' and score>70 and student.s#=sc.s#39、求选了课程的学生人数select count(s#)人数from scwhere sc.score<>040、查询选修“oracle”课程的学生中,成绩最高的学生姓名及其成绩select top 1 student.sname,max(sc.score)成绩最高from student inner join sc on student.s#=sc.s# inner join course on sc.c#=course.c#where ame='oracle'group by student.snameorder by max(sc.score) desc41、查询各个课程及相应的选修人数select ame,count(sc.c#) as 选修人数from sc inner join course on sc.c#=course.c#group by ameorder by count(sc.c#) desc,ame asc42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 score FROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#44、统计每门课程的学生选修人数(超过人的课程才统计)。
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中的视图。
选择题(1)如果要查询所藏图书中,各个出版社图书的最高单价、平均单价和册数,所用的SQL 语句是A)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书;GROUP BY 出版单位B)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书;HAVING 出版单位C)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书GROUP BY 出版单位D)SELECT 出版单位,MIN(单价), AVG(单价),COUNT(*);FROM 图书;HAVING 出版单位(2)为"运动员"表增加一个字段"得分"的SQL语句是A)CHANGE TABLE运动员ADD得分IB)ALTER DATA运动员ADD得分IC)ALTER TABLE运动员ADD得分ID)CHANGE TABLE运动员IN得分I(3)利用SQL数据更新功能,自动计算更新每个"设备总金额"字段的字段值,该字段值等于"单价*设备数量"的值,正确命令为A)UPDATE 设备表SET 设备总金额=单价*设备数量B)UPDATE 设备表FOR 设备总金额=单价*设备数量C)UPDATE 设备表WITH 设备总金额=单价*设备数量D)UPDATE 设备表WHERE 设备总金额=单价*设备数量(4)查找教师表中教师最高的工资值,下列SQL语句正确的是A)SELECT MAX(工资) FROM 教师表B)SELECT MIN(工资) FROM 教师表C)SELECT AVG(工资) FROM 教师表D)SELECT SUM(工资) FROM 教师表(5)在当前目录下有数据表文件student.dbf,执行如下SQL语句后SELECT * FORM student INTO DBF student ORDER BY 学号/DA)生成一个按"学号"升序的表文件,将原来的student.dbf文件覆盖B)生成一个按"学号"降序的表文件,将原来的student.dbf文件覆盖C)不会生成新的排序文件,保持原数据表内容不变D)系统提示出错信息(6)语句"DELETE FROM 成绩表WHERE 计算机<60"的功能是A)物理删除成绩表中计算机成绩在60分以下的学生记录B)物理删除成绩表中计算机成绩在60分以上的学生记录C)逻辑删除成绩表中计算机成绩在60分以下的学生记录D)将计算机成绩低于60分的字段值删除,但保留记录中其它字段值(7)检索职工表中工资大于800元的职工号,正确的命令是A)SELECT 职工号WHERE 工资>800B)SELECT 职工号FROM 职工SET 工资>800C)SELECT 职工号FROM 职工WHERE 工资>800D)SELECT 职工号FROM 职工FOR 工资>800(8)下列选项中,不属于SQL数据定义功能的是A)SELECTB)CREATEC)ALTERD)DROP(9)有"工资"表和"职工"表,结构如下:职工.dbf:部门号C(8),职工号C(10),姓名C(8),性别C(2),出生日期D工资.dbf:职工号C(10),基本工资N(8,2),津贴N(8,2),奖金N(8,2),扣除N(8,2) 查询职工实发工资的正确命令是A)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资FROM 工资B)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资FROM 工资;WHERE 职工.职工号=工资.职工号C)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资;FROM 工资,职工WHERE职工.职工号=工资.职工号D)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资;FROM 工资JOIN 职工WHERE职工.职工号=工资.职工号(10)从设备表中查询单价大于100000元的设备,并显示设备名称,正确的命令是A)SELECT 单价>100000 FROM 设备表FOR 设备名称B)SELECT 设备名称FROM 设备表FOR 单价>100000C)SELECT 单价>100000 FROM 设备表WHERE 设备名称D)SELECT 设备名称FROM 设备表WHERE 单价>100000(11)下列命令动词中,不具有数据操纵功能的SQL语句是A)DELETEB)UPDATEC)INSERTD)DROP(12)显示2005年1月1日后签订的订单,显示订单的订单号、客户名以及签订日期。
正确的SQL语句是A)SELECT 订单号,客户名,签订日期 FROM 订单 JOIN 客户 ON 订单.客户号=客户.客户号 WHERE 签订日期>{^2005-1-1}B)SELECT 订单号,客户名,签订日期 FROM 订单 JOIN 客户 WHERE 订单.客户号=客户.客户号 AND 签订日期>{^2005-1-1}C)SELECT 订单号,客户名,签订日期 FROM 订单,客户 WHERE 订单.客户号=客户.客户号 AND 签订日期<{^2005-1-1}D)SELECT 订单号,客户名,签订日期 FROM 订单,客户 ON 订单.客户号=客户.客户号AND 签订日期<{^2005-1-1}(13)有"部门表"和"职工表",内容如下:部门.dbf:部门号C(8),部门名C(12),负责人C(6),电话C(16)职工.dbf:部门号C(8),职工号C(10),姓名C(8),性别C(2),出生日期D查询每个部门年龄最长者的信息,要求得到的信息包括部门名和最长者的出生日期。
正确的命令是A)SELECT 部门名,MIN(出生日期) FROM 部门JOIN 职工;ON 部门.部门号=职工.部门号GROUP BY 部门号B)SELECT 部门名,MAX (出生日期) FROM 部门JOIN 职工;ON 部门.部门号=职工.部门号GROUP BY 部门号C)SELECT 部门名,MIN (出生日期) FROM 部门JOIN 职工;WHERE 部门.部门号=职工.部门号GROUP BY 部门号D)SELECT 部门名,MAX (出生日期) FROM 部门JOIN 职工;WHERE 部门.部门号=职工.部门号GROUP BY 部门号(14)查询借阅了两本和两本以上图书的读者姓名和单位,应使用SQL语句A)SELECT 姓名,单位FROM 读者;WHERE 借书证号IN;(SELECT 借书证号FROM 借阅;GROUP BY 借书证号HAVING COUNT(*)>=2)B)SELECT 姓名,单位FROM 读者;WHERE 借书证号EXISTS;(SELECT 借书证号FROM借阅;GROUP BY 借书证号HAVING COUNT(*)>=2)C)SELECT 姓名,单位FROM 读者;WHERE 借书证号EXISTS;(SELECT 借书证号FROM 借阅;GROUP BY 借书证号WHERE COUNT (*)>=2)D)SELECT 姓名,单位FROM 读者;WHERE 借书证号IN;(SELECT 借书证号FROM 借阅;GROUP BY 借书证号WHERE COUNT (*)>=2)(15)嵌套查询命令中的IN,相当于A)等号=B)集合运算符C)加号+D)减号-(16)有"部门表"和"商品表"的内容如下:部门.dbf:部门号C(8),部门名C(12),负责人C(6),电话C(16)职工.dbf:部门号C(8),职工号C(10),姓名C(8),性别C(2),出生日期D查询有10名以上(含10名)职工的部门信息(部门名和职工人数),并按职工人数降序排列。
正确的命令是A)SELECT 部门名,COUNT(职工号) AS 职工人数;FROM 部门,职工WHERE 部门.部门号=职工.部门号;GROUP BY 部门名HAVING COUNT(*)>=10;ORDER BY COUNT(职工号) ASCB)SELECT 部门名,COUNT(职工号) AS 职工人数;FROM 部门,职工WHERE 部门.部门号=职工.部门号;GROUP BY 部门名HAVING COUNT(*)>=10;ORDER BY COUNT(职工号) DESCC)SELECT 部门名,COUNT(职工号) AS 职工人数;FROM 部门,职工WHERE 部门.部门号=职工.部门号;GROUP BY 部门名HAVING COUNT(*)>=10ORDER BY职工人数ASCD)SELECT 部门名,COUNT(职工号) AS 职工人数;FROM 部门,职工WHERE 部门.部门号=职工.部门号;GROUP BY 部门名HAVING COUNT(*)>=10ORDER BY 职工人数DESC(17)语句"DELETE FROM 成绩表WHERE 计算机<60"功能是A)物理删除成绩表中计算机成绩在60分以下的学生记录B)物理删除成绩表中计算机成绩在60分以上的学生记录C)逻辑删除成绩表中计算机成绩在60分以下的学生记录D)将计算机成绩低于60分的字段值删除,但保留记录中其他字段值(18)为设备表增加一个"设备总金额N(10,2)"字段,正确的命令是A)ALTER TABLE 设备表ADD FIELDS 设备总金额N(10,2)B)ALTER TABLE 设备表ADD 设备总金额N(10,2)C)ALTER TABLE 设备表ALTER FIELDS 设备总金额N(10,2)D)ALTER TABLE 设备表ALTER 设备总金额N(10,2)(19)下列关于SQL对表的定义的说法中,错误的是A)利用CREATE TABLE语句可以定义一个新的数据表结构B)利用SQL的表定义语句可以定义表中的主索引C)利用SQL的表定义语句可以定义表的域完整性、字段有效性规则等D)对于自由表的定义,SQL同样可以实现其完整性、有效性规则等信息的设置(20)有如下SQL语句:SELECT * FROM 仓库WHERE 仓库号="H1";UNION;SELECT * FROM 仓库WHERE 仓库号="H2"该语句的功能是A) 查询在H1或者H2仓库中的职工信息B) 查询仓库号H1或者H2的仓库信息C) 查询既在仓库号H1,又在仓库号H2工作的职工信息D) 语句错误,不能执行(21)SELECT-SQL语句中,条件短语的关键字是A)FORB)FROMC)WHERED)WITH(22)查询没有借阅图书的读者的姓名和借书证号,应使用SQL语句A)SELECT 姓名FROM 读者WHERE NOT EXISTS;(SELECT 借书证号FROM 借阅WHERE 借阅.借书证号=读者.借书证号)B)SELECT 姓名,借书证号FROM 读者WHERE(SELECT *FROM 借阅WHERE 借阅.借书证号=读者.借书证号)C)SELECT 姓名,借书证号FROM 读者WHERE NOT EXISTS;(SELECT *FROM 借阅WHERE 借阅.借书证号=读者.借书证号)D)SELECT 姓名,借书证号FROM 读者WHERE 借阅=NULL(SELECT *FROM 借阅WHERE 借阅.借书证号=读者.借书证号)(23)向职工表中插入一条记录,正确的命令是有职工表如下:职工表(部门号N(4)、职工号C(4)、姓名C(8)、工资N(7,2))A)APPEND BLANK 职工表VALUES("1111","1101","王明","1500.00")B)APPEND INTO 职工表VALUES("1111","1101","王明",1500.00)C)INSERT INTO 职工表VALUES("1111","1101","王明","1500.00")D)INSERT INTO 职工表VALUES("1111","1101","王明",1500.00)(24)在SQL语句中,与表达式"工资BETWEEN 1000 AND 1500"功能相同的表达式是A)工资<=1000 AND 工资>=1500B)工资<=1500 AND 工资>=1000C)工资<=1000 OR 工资>=1500D)工资<=1500 OR 工资>=10000(25)有如下SQL语句:SELECT 班级名称FROM 班级表WHERE NOT EXISTS;(SELECT * FROM 学生表WHERE 班级号=班级表.班级号)执行该语句后,班级名称的字段值是A)03计算机一班B)03计算机二班C)03计算机三班D)03计算机一班和03计算机二班(26)有如下SQL-SELECT语句SELECT * FROM HH WHERE 单价BETWEEN 10.6 AND 13.4 与该语句等价的是A)SELECT * FROM HH WHERE 单价<=13.4 AND 单价>=10.6B)SELECT * FROM HH WHERE 单价<13.4 AND 单价>10.6C)SELECT * FROM HH WHERE 单价>=13.4 AND 单价<=10.6D)SELECT * FROM HH WHERE 单价>13.4 AND 单价<10.6(27)有如下SQL语句:SELECT 姓名,MAX(工资) AS 工资FROM 教师表GROUP BY 系号该语句的作用是A)检索出所有教师中工资最高的教师的姓名和工资B)检索出各系教师中工资最高的教师的姓名和工资C)检索出所有教师中工资最低的教师的姓名和工资D)检索出各系教师中工资最低的教师的姓名和工资(28)若在教师表中查找还没有输入工龄的记录,使用的SQL语句为A)SELECT * FROM 教师WHERE 工龄IS NOT NULLB)SELECT * FROM 教师WHERE 工龄=0C)SELECT * FROM 教师WHERE 工龄IS NULLD)SELECT * FROM 教师WHERE 工龄=NULL(29)有班级表和学生表如下:班级表班级号班级名称班级人数200301 03计算机一班55200302 03计算机二班48200303 03计算机三班50学生表班级号学号姓名性别籍贯200301 1001 王伟男北京200301 1002 刘红女上海200301 1003 李林女北京200302 2001 张清女上海200302 2002 刘雷男上海有如下SQL语句:SELECT班级名称,姓名,性别FROM 班级表,学生表;WHERE班级表.班级号=学生表.班级号;AND 籍贯="上海" AND 性别="女";ORDER BY 班级名称DESC执行该语句后,查询结果中共有几条记录,且第一条记录的学生姓名是A)1 李林B)2 张清C)2 刘红D)3 张清(30)使用如下的3个数据表:学生、课程和成绩。