SQL经典练习题目-初学者必看(2)

2019-04-09 12:06

--首先查看“水浒”这本书的编号

select bno from books where bname ='水浒' --到borrow表中看哪些卡号借了号这本书 select cno from borrow where bno=(select bno from books where bname ='水浒');

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。 --5.查询书名包括\网络\关键词的图书,输出书号、书名、作者。 select bno,bname,author from books

where bname like '%网络%'

-- 6.查询现有图书中价格最高的图书,输出书名及作者。 select bname,author from books

where price in (select max(price) from books)

-- 7.查询当前借了\计算方法\但没有借\计算方法习题集\的读者,输出其借书卡号,

--并按卡号降序排序输出。 Card(cno,name,class)

Books(bno,bname,author,price,quantity) Borrow(cno,bno,rdate) select cno from borrow

where bno =(select bno from books where bname='c' )

select cno from borrow

where bno in ( select bno from books where bname='水浒' )

order by cno desc

--自身连接查询

select * from borrow; select * from borrow;

--查询既接了号书又借了号书的卡号 select b1.cno

from borrow b1,borrow b2 where b1.cno = b2.cno and b1.bno = ( select bno from books where bname='水浒' ) and b2.bno =(select bno from books where bname='c' )

--b1.cno = b2.cno 表示同一个人

select distinct t.bcno from

(select b2.cno bcno,b1.bno,b1.rdate from borrow b1,borrow b2

where b1.cno = b2.cno and b1.bno <> 7 and b2.bno = 1 and b1.cno not in (

select b1.cno

from borrow b1,borrow b2

where b1.cno = b2.cno and b1.bno = 7 and b2.bno = 1 ))t

--查看计算方法这本书的编号

select bno from books where bname='SQL' --查看计算方法习题集这本书的编号

select bno from books where bname='网络技术'

-- 8.将\班同学所借图书的还期都延长一周。

update borrow set rdate=dateadd(dd,7,rdate);

-- 9.从BOOKS表中删除当前无人借阅的图书记录。 --首先:查看有哪些书已经被借了 select distinct bno from borrow

--再去删除

delete from books where bno not in (select distinct bno from borrow )

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是\数据库技术及应用\,就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。

12.建立一个视图,显示\力\班学生的借书信息(只要求显示姓名和书名)。 -- 13.查询当前同时借有\计算方法\和\组合数学\两本书的读者,输出其借书卡号,

--并按卡号升序排序输出。 select b1.cno

from borrow b1,borrow b2 where b1.cno = b2.cno and b1.bno = ( select bno from books where bname='计算方法' )

and b2.bno =(select bno from books where bname='组合数学

' )

-- 14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。 alter table borrow

add constraint PK_borrow_cno_bno primary key(cno,bno); -- 15.对CARD表做如下修改:

-- a. 将NAME最大列宽增加到个字符(假定原为个字符)。 alter table card

alter column cname varchar(10) not null

-- b. 为该表增加列NAME(系名),可变长,最大个字符。 alter table card

add DeptName varchar(20)

复制代码执行,创建好表,然后往里面插入数据,完成下面个题目: 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表中成绩在到之间的所有记录。 5、查询Score表中成绩为,或的记录。

6、查询Student表中\班或性别为\女\的同学记录。 7、以Class降序查询Student表的所有记录。

8、以Cno升序、Degree降序查询Score表的所有记录。 9、查询\班的学生人数。

10、查询Score表中的最高分的学生学号和课程号。 11、查询'3-105'号课程的平均分。

12、查询Score表中至少有名学生选修的并以开头的课程的平均分数。 13、查询最低分大于,最高分小于的Sno列。 14、查询所有学生的Sname、Cno和Degree列。 15、查询所有学生的Sno、Cname和Degree列。 16、查询所有学生的Sname、Cname和Degree列。 17、查询\班所选课程的平均分。 18、假设使用如下命令建立了一个grade表:

create table grade(low float,upp float,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、查询选修\课程的成绩高于\号同学成绩的所有同学的记录。 20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。 21、查询成绩高于学号为\、课程号为\的成绩的所有记录。

22、查询和学号为的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 23、查询\张旭\教师任课的学生成绩。

24、查询选修某课程的同学人数多于人的教师姓名。 25、查询班和班全体学生的记录。

26、查询存在有分以上成绩的课程Cno.

27、查询出\计算机系\教师所教课程的成绩表。

28、查询\计算机系\与\电子工程系\不同职称的教师的Tname和Prof。

29、查询选修编号为\课程且成绩至少高于选修编号为\的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。

30、查询选修编号为\且成绩高于选修编号为\课程的同学的Cno、Sno和Degree.

31、查询所有教师和同学的name、sex和birthday.

32、查询所有\女\教师和\女\同学的name、sex和birthday. 33、查询成绩比该课程平均成绩低的同学的成绩表。

34、查询所有任课教师的Tname和Depart.

35 查询所有未讲课的教师的Tname和Depart. 36、查询至少有名男生的班号。

37、查询Student表中不姓\王\的同学记录。 38、查询Student表中每个学生的姓名和年龄。

39、查询Student表中最大和最小的Sbirthday日期值。

40、以班号和年龄从大到小的顺序查询Student表中的全部记录。 41、查询\男\教师及其所上的课程。

42、查询最高分同学的Sno、Cno和Degree列。 43、查询和\李军\同性别的所有同学的Sname. 44、查询和\李军\同性别并同班的同学Sname.

45、查询所有选修\计算机导论\课程的\男\同学的成绩表 学生选课练习 已知关系模式:

S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名

C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师

SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

首先根据上面的关系模式,创建好数据库表,往数据库表中插入一些测试记录。 然后实现下面的操作,要求实现如下个处理:

1.找出没有选修过“李明”老师讲授课程的所有学生姓名;

2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩; 3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名; 4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号;

5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩;


SQL经典练习题目-初学者必看(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:创新与科技发展讲课的教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: