`
sunshine518
  • 浏览: 45759 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

以前学习SQL时的练习

阅读更多
创建表和输入数据

CREATE TABLE STUDENT
(  SNO VARCHAR(3) NOT NULL,
   SNAME VARCHAR(4) NOT NULL,
   SSEX VARCHAR(2) NOT NULL,
   SBIRTHDAY DATETIME,
   CLASS VARCHAR(5))
go
CREATE TABLE COURSE
(  CNO VARCHAR(5) NOT NULL,
   CNAME VARCHAR(10) NOT NULL,
   TNO VARCHAR(10) NOT NULL)
go
CREATE TABLE SCORE
(  SNO VARCHAR(3) NOT NULL,
   CNO VARCHAR(5) NOT NULL,
   DEGREE NUMERIC(10, 1) NOT NULL)
go
CREATE TABLE TEACHER
(  TNO VARCHAR(3) NOT NULL,
   TNAME VARCHAR(4) NOT NULL,
   TSEX VARCHAR(2) NOT NULL,
   TBIRTHDAY DATETIME NOT NULL,
   PROF VARCHAR(6),
   DEPART VARCHAR(10) NOT NULL)

INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,1977-09-01,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,1975-10-02,95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,1976-01-23,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,1976-02-20,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,1975-02-10,95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,1974-06-03,95031);
GO
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825)
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100);
GO
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88); 
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'6-106',79);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);
GO
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (825,'王萍','女','1972-05-05','助教','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');

练习题目

1、 查询Student表中的所有记录的Sname、Ssex和Class列。
2、 查询教师所有的单位即不重复的Depart列。
3、 查询Student表的所有记录。
4、 查询Score表中成绩在60到80之间的所有记录。
5、 查询Score表中成绩为85,86或88的记录。
6、 查询Student表中“95031”班或性别为“女”的同学记录。
7、 以Class降序查询Student表的所有记录。
8、 以Cno升序、Degree降序查询Score表的所有记录。
9、 查询“95031”班的学生人数。
10、查询Score表中的最高分的学生学号和课程号。
11、查询‘3-105’号课程的平均分。
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
13、查询最低分大于70,最高分小于90的Sno列。
14、查询所有学生的Sname、Cno和Degree列。
15、查询所有学生的Sno、Cname和Degree列。
16、查询所有学生的Sname、Cname和Degree列。
17、查询“95033”班所选课程的平均分。
18、假设使用如下命令建立了一个grade表:
create table grade(low   number(3,0),upp   number(3),rank   char(1));
insert into grade values(90,100,’A’);
insert into grade values(80,89,’B’);
insert into grade values(70,79,’C’);
insert into grade values(60,69,’D’);
insert into grade values(0,59,’E’);
commit;
现查询所有同学的Sno、Cno和rank列。
19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学生成绩。
24、查询选修某课程的同学人数多于5人的教师姓名。
25、查询95033班和95031班全体学生的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35  查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。
39、查询Student表中最大和最小的Sbirthday日期值。
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
42、查询最高分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表

SQL语句练习题参考答案
1、 select Sname,Ssex,Class from Student;
2、 select distinct depart from teacher;
3、 select Sno as '学号',Sname as '姓名',Ssex as '性别',Sbirthday as'出生日期',Class as'班号'from student;

select Sno as 学号,Sname as 姓名,Ssex as 性别,Sbirthday as 出生日期,Class as 班号 from student;
4、 select * from score where degree between 60 and 80;
或select * from score where degree>=60 and degree<=80;
5、 select * from score where degree in (85,86,88);
6、 select * from student where class='95031'or Ssex='女';
7、 select * from student order by class desc;
8、 select * from score order by cno asc ,degree desc;
或select * from score order by cno ,degree desc;
9、 select count(*) as CNT from student where class='95031';
10、select Sno as '学号',cno as '课程号', degree as '最高分' from score
where degree=(select max(degree) from score)
11、select avg(degree)as 课程平均分 from score where cno='3-105';
12、select cno,avg(degree) from score where cno like'3%'group by cno having   count(*) >5;
13、select Sno from score group by Sno having min(degree)>70 and max(degree)<90;
14、select student.Sname,score.Cno,score.degree from student,score where student.Sno=score.Sno;
15、select x.Sno,y.Cname,x.degree from score x,course y where x.Cno=y.Cno;
16、select x.Sname,y.Cname,z.degree from student x,course y,score z where x.Sno=z.Sno and z.Cno=y.Cno;
17、select y.Cno,avg(y.degree) from student x,score y where x.Sno=y.Sno and x.class='95033'group by y.cno;
18、select Sno,Cno,rank from score,grade where degree between low and upp order by rank;
19、select x.Cno,x.Sno,x.degree from score x,score y
where x.cno='3-105' and x.degree>y.degree and y.sno='109'and y.cno='3-105';
20、
1,查询成绩非本科最高 select *   from score b   where degree <(select max(degree) from score a where a.cno=b.cno);
2,查询成绩非本科最高并且选2门以上的学生的成绩:
21、select x.cno,x.Sno,x.degree from score x,score y where x.degree>y.degree and y.sno='109'and y.cno='3-105';
select cno,sno,degree from score   where degree >(select degree from score where sno='109' and cno='3-105')
22、select sno,sname,sbirthday from student where to_char(sbirthday,'yyyy')=(select to_char(sbirthday,'yyyy') from student where sno='108');
23、select cno,sno,degree from score where cno=(select x.cno from course x,teacher y where x.tno=y.tno and y.tname='张旭');
24、select tname from teacher where tno in(select x.tno from course x,score y where x.cno=y.cno group by x.tno having count(x.tno)>5);
25、select * from student where class in('95033','95031');
26、select distinct cno from score where degree in (select degree from score where degree>85);
27、select * from score where cno in(select x.cno from course x,teacher y where y.tno=x.tno and y.depart='计算机系');
28、select tname,prof from teacher where depart='计算机系' and prof not in (select prof from teacher where depart='电子工程系');
29、select * from score where cno='3-105' and degree>any (select degree from score where cno='3-245')order by degree desc;
30、select * from score where cno='3-105' and degree>all(select degree from score where cno='3-245');
31、select tname,tsex,tbirthday from teacher
union select sname,ssex,sbirthday from student;
32、select tname,tsex,tbirthday from teacher where tsex='女'
union select sname,ssex,sbirthday from student where ssex='女';
33、select * from score a where degree<(select avg(degree)
from score b where a.cno=b.cno);
34、select tname,depart from teacher a where exists
(select * from course b where a.tno=b.tno);
35、select tname,depart from teacher a where not exists
(select * from course b where a.tno=b.tno);
36、select class from student where ssex='男'group by class having count(*)>=2;
37、select * from student where sname not like'王_';
38、select sname as 姓名,(to_char(sysdate,'yyyy')-to_char(sbirthday,'yyyy')) as 年龄 from student
39、select sname,sbirthday as 最大 from student where   sbirthday =(select min (sbirthday) from student)
union select sname,sbirthday as 最小 from student where sbirthday =(select max(sbirthday) from student) 
40、select class,sname,sbirthday from student order by class desc,sbirthday;
41、select x.tname,y.cname from teacher x,course y where x.tno=y.tno and x.tsex='男';
42、select * from score where degree=(select max(degree)from score);
43、select sname from student where ssex=(select ssex from student where sname='李军');
44、select sname from student where ssex=(select ssex from student where sname='李军') and class=(select class from student where sname='李军');
45、select * from score where sno in(select sno from student where ssex='男') and cno=(select cno from course
where cname='计算机导论');

分享到:
评论
1 楼 sunshine518 2008-12-24  
好!看了真是受益匪浅;

相关推荐

    sql及plsql练习题

    SQL 及 PL/SQL 练习题 本资源为 Oracle SQL 和 PL/SQL 的练习题,旨在帮助学习者学习如何使用 Oracle ...在学习这些练习时,学习者需要具备基本的 Oracle SQL 和 PL/SQL 知识,并对 Oracle 数据库管理系统有所了解。

    T-SQL阅读笔记和习题

    以前只有数据库的基础和一些实践经验。但是对于SQL语言不是很熟悉,于是找了一些书来看,经过多方阅读和对比,最后看到一本《MICROSOFT SQL SERVER 2008技术内幕:T-...可以在SQL SERVER2008上面创建,供学习时做实验。

    SQL Server 2000课程设计案例精编 5 ebooks 源代码

    你将学习如何设置用户角色,控制访问权限,以及如何使用SQL Server 2000的备份工具来保护数据,防止意外丢失,并在需要时恢复数据。 综上所述,《SQL Server 2000课程设计案例精编 5 ebooks 源代码》是一个全面的...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:...

    数据库原理与应用-SQL2000

    7. **集成服务**:SQL Server 2000的集成服务(Integration Services,以前称为Data Transformation Services,DTS)允许数据导入导出,以及不同数据源之间的数据转换。 8. **报表服务**:报表服务(Reporting ...

    学习报告 实习报告

    在学习过程中,张金龙发现以前的学习方法过于片面,缺乏针对性和计划性。通过对数据库的深入学习,他认识到查询并非简单的数据读取,而是涉及到复杂的多表条件查询和操作。他建议在学习时,不应拘泥于课本,可以尝试...

    大气象B2C模板(以前练习B2C的项目)

    【大气象B2C模板】是一个专为初学者设计的练习项目,旨在模拟实际的B2C(Business-to-Consumer)电子商务平台。这个项目涵盖了在线购物的基本流程,包括商品浏览、购物车操作、订单处理等核心功能。通过此项目,学习...

    SQL交互式查询--单表查询.doc

    本次实验旨在通过一系列具体的SQL查询案例,加深对SQL语言的理解与应用能力,特别是针对单表查询的各种操作技巧进行实践学习。实验环境为Windows 7 旗舰版操作系统下运行SQL Server 2005,通过对一个模拟的产品信息...

    Oracle自整理学习资料

    学习Oracle,你需要掌握SQL语言的基本语法,如查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)操作。同时,PL/SQL提供了过程化编程的能力,如变量、循环、条件判断和异常处理,这对于编写存储过程...

    学生网上在线自测系统-毕设

    系统可以进行简单的自测试学习,此之后系统可以自动阅卷后查看成绩以及试卷的解析和答案,即使是很久以前练习过的试题,系统也提供的调出和查看,管理员可以对有误的题目进行修改,不合要求的题目进行删除;

    MS SQL Server游标(CURSOR)的学习使用

    说实的,使用MS SQL Server这样久,游标一直没有使用过。以前实现相似的功能,都是使用WHILE循环加临时表来实现。刚才有参考网上示例练习写了一下。了解到游标概念与语法。 下面代码示例中, 先是宣告你在游标中需...

    整理后java开发全套达内学习笔记(含练习)

    exist 存在, 发生 [ig'zist] '(SQL关键字 exists) extends (关键字) 继承、扩展 [ik'stend] false (关键字) final (关键字) finally (关键字) fragments 段落; 代码块 ['frægmәnt] FrameWork [java] 结构,...

    软件设计师15年及以前几年真题

    《软件设计师15年及以前历年...总结来说,《软件设计师15年及以前历年真题》这份资料是备考软件设计师考试的重要工具,通过系统性地学习和练习,考生可以逐步提高自己的专业知识和技能,为顺利通过考试打下坚实基础。

    计算机二级ACCESS练习题.pdf

    【计算机二级ACCESS练习题知识点详解】 1. **程序设计风格**:良好的程序设计风格强调源程序的可读性和可维护性,包括文档化、避免滥用`goto`语句,以及保持模块的高耦合性和高内聚性。选项D不符合良好编程风格,...

    400系统下cobol学习资料

    本压缩包提供的"400系统下cobol学习资料"是一个专门针对在400系统环境下学习COBOL的资源,这可能是IBM iSeries(以前称为AS/400)系统,这是一个强大的企业级服务器平台。 COBOL的语法结构清晰,易于理解,适合进行...

    oracle9i课件(企业培训版,网上下不到)

    这个“Oracle9i课件(企业培训版,网上下不到)”包含的资源很可能是一系列详细的教程、讲义、实例和练习,旨在帮助学习者深入理解和掌握Oracle 9i的核心功能和技术。以下是关于Oracle 9i的一些关键知识点: 1. **...

    二级VF复习题资料,以前的都有。

    3. **SQL语言**:VF支持SQL命令,包括SELECT查询、INSERT插入、UPDATE更新、DELETE删除等操作,熟悉这些语句对于处理数据至关重要。 4. **表单和控件**:VF中的表单是用户界面的核心,用于展示数据和接收用户输入。...

    Oracle9I入门基础

    PL/SQL是Oracle数据库的内置编程语言,是学习Oracle9i时必须掌握的一部分。它允许用户编写存储过程、函数、触发器和游标,以实现复杂的业务逻辑。通过PL/SQL,你可以创建自定义的数据库对象,提高应用的效率和安全性...

    oracle9i实用教案

    学习Oracle 9i,首先需要掌握SQL的基本语法,包括查询、插入、更新和删除数据,以及创建和修改表结构。 2. **PL/SQL**:PL/SQL是Oracle特有的过程式语言,用于编写存储过程、函数、触发器等。了解其基本语法和控制...

Global site tag (gtag.js) - Google Analytics