学生图书借阅管理数据库查询练习与答案
- 格式:doc
- 大小:40.50 KB
- 文档页数:9
1)查询全体图书的图书号,书名,作者,出版社,单价。
SELECT * FROM 图书2)查询全体图书的信息,其中单价打8折,并且将该列设置别名为’打折价’ 。
SELECT 图书号,书名,作者,出版社,单价*0.8 ‘打折价’ FROM 图书3)显示所有借阅者的读者号,并去掉重复行。
SELECT DISTINCT 读者号FROM 借阅4)查询所有单价在20到30之间的图书信息。
SELECT * FROM 图书WHERE 单价BETWEEN 20 AND 305)查询所有单价不在20到30之间的图书信息。
SELECT * FROM 图书WHERE 单价NOT BETWEEN 20.00 AND 30.006)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息SELECT * FROM 图书WHERE 出版社IN (‘机械工业出版社’, ‘科学出版社’, ‘人民邮电出版社’)7)查询既不是机械工业出版社、也不是科学出版社出版的图书信息SELECT * FROM 图书WHERE 出版社NOT IN (‘机械工业出版社’, ‘科学出版社’)8)查找姓名的第二个字符是’建’并且只有两三个字符的读者的读者号、姓名。
SELECT 读者号,姓名FROM 读者WHERE 姓名LIKE ‘_建_’9)查找姓名以’王’开头的所有读者的读者号、姓名。
SELECT 读者号,姓名FROM 读者WHERE 姓名LIKE ‘王%’10)查找姓名以’王’、’张’或’李’开头的所有读者的读者号、姓名。
SELECT 读者号,姓名FROM 读者WHERE 姓名LIKE ‘[王张李]%’11)查找姓名不是以’王’、’张’或’李’开头的所有读者的读者号、姓名。
SELECT 读者号,姓名FROM 读者WHERE 姓名NOT LIKE ‘[王张李]%’12)查询无归还日期的借阅信息。
SELECT * FROM 借阅WHERE 归还日期IS NULL13)查询有归还日期的借阅信息。
学生图书借阅管理数据库数据查询一、简单查询1.查询所有学生的信息Select *from 学生信息2.查询学生的借书证号,姓名,班级Select 借书证号,姓名,班级from 学生信息3.按图书定价从高到低查询所有图书的图书名称和定价,定价相同再按图书名称升序排列Select 图书名称,定价From 图书信息Order by 定价desc, 图书名称4.查询图书定价最高的三本图书信息Select top 3 with ties *From 图书信息Order by 定价desc5.查询图书信息表中的图书类别,并消除重复记录Select distinct 图书类别From 图书信息6.查询图书信息表中的图书名称、书号,输出结果以书名和ISBN为列标题Select 图书名称as 书名,书号as ISBNFrom 图书信息7.查询所有图书名称,和打八折之后的定价,并以折后价命名Select 图书名称,定价*0。
8 as 折后价From 图书信息8.查询所有图书的入馆年数Select 图书名称,year(getdate())-year(入馆时间) as 入馆年数From 图书信息二、条件查询⒈查询计算机类的图书信息Select *from 图书信息Where 图书类别=’计算机’2。
查询图书定价大于30的图书名称和定价Select 图书名称,定价from 图书信息Where 定价〉303.查询图书定价在20~30之间的图书信息Select *from 图书信息Where 定价between 20 and 304。
查询图书定价大于30的计算机类图书信息Select *from 图书信息Where 定价>30 and 图书类别=’计算机'5。
查询图书定价大于30或计算机类的图书信息Select *from 图书信息Where 定价〉30 or图书类别='计算机’6.查询计算机、英语和电子类的图书信息Select *from 图书信息Where 图书类别in(’计算机’,’英语’,’电子’) 7.查询姓李的学生信息Select *From 学生信息Where 姓名like ‘李%'8。
上机作业3(单表查询)1、在图书管理数据库中创建下面选择查询对象:s1:查询读者表中全部记录,结果集按借书证号降序排序SELECT * FROM 读者ORDER BY 借书证号s2:查询所有专科生和本科生的已借书数,提取数据项:借书证号、姓名、读者类别、已借数SELECT 借书证号,姓名,读者类别,已借数FROM 读者WHERE 读者类别in("专科生","本科生")s3:查询清华大学出版社出版的藏书信息SELECT * FROM 图书WHERE 出版社="清华大学出版社"s4:查询价格高于100元的图书信息SELECT * FROM 图书WHERE 价格>100s5:查询已借空的图书信息SELECT * FROM 图书WHERE 库存量=0s6:查询ISBN号的从第2到第4字符是777的图书记录SELECT * FROM 图书WHERE ISBN like "?777*"s7:查询借出时间超过30天的读者的借书证号SELECT 借书证号FROM 读者WHERE date()-借书时间>30或:SELECT 借书证号FROM 读者WHERE datediff("d",借书时间,date())>30s8:在已借过的书中(借阅历史表)查借出时间不超过两天的书的ISBN号SELECT isbn FROM 借阅历史无WHERE借书时间-还书时间<=2或:SELECT isbn FROM 借阅历史无WHERE datediff("d",借书时间,还书时间)<=2s9:给定一个ISBN号,查询该书是否可借SELECT 库存量FROM 图书WHERE isbn=[请输入书号]SELECT iif(库存量>0, "可借","不可借") FROM 图书WHERE isbn=[请输入书号]s11给定一个借书证号,查询该读者已借的书的ISBN号和借出时间SELECT ISBN,借书时间FROM 借阅WHERE 借书证号=[请输入借书证号]2、在成绩数据库中创建下面选择查询对象:S1:查询所有课程名为"高等数学"的课程信息SELECT * FROM 课程WHERE 课程名="高等数学"S2:查询在第1学期开出的课程SELECT * FROM 课程WHERE 学期=1S3查询专业代码为"034"的专业的所有班级名称SELECT 班级名称FROM 班级WHERE 专业代码="034"S4:查询来源地中包含有“广西”的学生记录SELECT * FROM 学生WHERE 来源地LIKE "*广西*"S5:查询2005级的学生记录(学号前4位为2005)SELECT * FROM 学生WHERE 班级代码like "2005*"S6:查询年满20岁的学生SELECT * FROM 学生WHERE dateadd("yyyy",20,生日)<=date()S7:查询今天是生日的学生的姓名及所在班的班级代码SELECT 姓名,班级代码FROM 学生WHERE month(生日)=month(date()) and day(生日)=month(date())3、在工资管理数据库中创建下面选择查询对象S1:查医保小于职务工资的12%的职工的信息SELECT * FROM 职工WHERE 医保<职务工资*0.12S2:查询2006年1月份每个职工的扣款小计,提取数据项:职工号、扣款小计SELECT 职工号,医保+个税as 扣款小计FROM 月工资WHERE 年=2006 and 月=1上机作业4(多表查询)1、在图书管理数据库中创建下面的查询对象S1:任给一个借书证号,查该读者所借出的全部书的书号及书名SELECT 借阅.ISBN,书名FROM 借阅,图书WHERE 借阅.ISBN=图书.ISBN and 借阅.ISBN=[请输入书号]S2:任给一个借书证号,查该读者当前的可借书数SELECT 限借数-已借数FROM 读者类别,读者WHERE 读者类别.读者类别=读者.读者类别and 借书证号=[请输入借书证号]S3:查询所有已借数为0,但借阅表中存在借阅记录的读者的借书证号、所借书的书号和书名SELECT 读者.借书证号,借阅.ISBN,书名FROM (读者LEFT JOIN 借阅ON 读者.借书证号=借阅.借书证号)LEFT JOIN 图书ON 借阅.ISBN=图书.ISBNWHERE 已借数=0 and (借阅.借书证号is not null)S4:查询在图书表中库存量=复本量,但在借阅表中存在借出记录的图书的书号与S3雷同S5:查询所有已借出的书的书名和所借者的借书证号和姓名SELECT 读者.借书证号,姓名,书名FROM (读者INNER JOIN 借阅ON 借阅.借书证号=读者.借书证号)INNER JOIN 图书ON 借阅.ISBN=图书.ISBNS6:给定一个借书证号,查询该读者是否可借书。
多表查询:在图书管理数据库“Library”:1、查询每个读者的详细信息(读者及借阅图书的信息),允许有重复列select Reader.*,Borrow.*from Reader, Borrowwhere Reader.RID=Borrow.RID或者select Reader.*,Borrow.*from Reader inner join Borrow on Reader.RID=Borrow.RID2、从Library中查询每个读者的详细信息(读者、读者类型、借阅图书信息),不允许有重复的列查看全部select a.*, b.*,c.*from Reader a , Borrow b , ReaderType cwhere a.RID=b.RID and a.TypeID=c.TypeID挑选出列:select a.RID,a.Rname,b.typeid,bid,lenddate,returndatefrom Reader a , Borrow b , ReaderType cwhere a.RID=b.RID and a.TypeID=c.TypeID3、从表“Reader”和表“Borrow”中查询出读者的借阅情况,包括没有借书的读者情况。
(提示:左外连接)select Reader.*,Borrow.rid,bidfrom Reader left join Borrow on Reader.RID=Borrow.RID4、从表“Borrow”和表“Book”中查询出图书被借阅的情况,包括没有被借的图书情况(提示:右外连接)select Borrow.rid,Borrow.bid,book.bid,bname,authorfrom Borrow right join book on Borrow.bid=book.bid5、从图书馆Library 中查询出同名且由不同作者编著的图书(提示:自连接)自连接的格式:格式:From 表名1 别名1 join 表名1 别名2 on 连接表达式select a.bid,a.bname,a.author,b.bid,b.bname,b.authorfrom book a ,book bwhere a.bname=b.bname and a.author!=b.author6、对读者表“Reader”、借阅表“Borrow”和图书表“Book”三个表进行等值连接。
一、基本查询说明:按下面的要求,在“图书销售管理系统CH3.mdb”数据库中建立查询。
要求:(以下描述中,低于x的含义指小于x,高于x的含义指大于x,均不含x本身。
如果没有指明查询结果包括哪些字段则指包含源表的所有字段。
)1 查询工作人员信息,结果包括每个员工的所有信息(选择所有列)。
以“查询101”为名称保存查询。
2 查询定价低于30元的图书,结果包括所有字段。
以“查询102”为名称保存查询。
3 查询1970年-1980年之间出生的工作人员(使用BETWEEN运算符),查询结果只包括“人员编号”、“姓名”、“性别”、“出生日期”字段。
以“查询103”为名称保存查询。
4 查询作者姓王的图书(使用LIKE运算)。
以“查询104”为名称保存查询。
5 查询定价低于30元的计算机图书(名称中含有“计算机”),按定价升序排序。
以“查询105”为名称保存查询。
6 查询定价低于30元或者高于50元的图书(使用OR运算符,或者在设计器中填写两行准则)。
以“查询106”为名称保存查询。
7 查询在人员表中记录过照片的工作人员(Is Not Null)。
以“查询107”为名称保存查询。
8 查询已婚员工的信息,显示所有字段,将查询命名为“查询108”。
-------------------------------------------------9 查询高等教育出版社出版的20-50元之间的图书*,和机械工业出版的20-40元之间的图书**。
以“查询109”为名保存查询。
(*和**两组条件为或者关系,需要分别写在两行中。
)10 查询作者姓王名字由两个字组成的图书信息,显示“图书编号”、“书名”、“作者”字段。
以“查询110”为名保存查询。
11 查询图书编号第3个和第4个字符是“40”的图书信息,显示所有字段。
保存为“查询111”。
二、计算字段、复杂条件、参数查询说明:如有困难,请看提示信息。
要求:1 使用计算字段a. 查询每笔进货的支出总额(即进书数量和单价的乘积),显示图书进货表的所有字段和支出总额字段,查询201。
项目5 查询图书借阅数据库 项目测试题参考答案学生情况表(student)字段系别班级专业学号姓名性别出生年月总学分分备注课程号课程名开课学期学 时学 分学 号课程号成 绩学 分以下题目全部再查询分析器用SQL语句实现:1.创建好三张表,并每张表输入至少5条记录,根据实际关系,创建好主键、外键的关系。
并输入记录,在查询分析器中显示学生课程表(course)中课程名和学时,并把学时列列名显示为“学时数”。
2. 输出学生课程表中的所有的列。
参考答案:select*from course3.要查询学生课程表(course)中课程学时数在48到64之内(包含48、64这两个数)的课程的课程号、课程名以及学时数。
参考答案:select课程号,课程名,学时from course where学时between 48 and 644.要在学生情况表(student)中查询软件技术专业、信息管理专业、计算机应用技术专业的学生,使用IN运算符实现。
参考答案:select*from student where专业in('软件技术','信息管理','计算机应用技术')5.要在学生情况表(student)中查询名字中有“胡”字的学生的学号与姓名。
参考答案:select学号,姓名from student where姓名like'%胡%'6.要在学生情况表中查询总学分为空值的学生的学号和姓名。
参考答案:select学号,姓名from student where总学分is null7.要在学生情况表(student)中统计每个专业的学生人数。
参考答案:select COUNT(*)as人数from student group by专业8.在学生课程表(course)中统计每个学期的平均学时。
参考答案:select AVG(学时)as平均课时from course group by开课学期9.在学生课程表(course)中统计每个学期的平均学时,列举大于64的记录。
1 操作查询
1.1 生成表查询。
从"图书信息表"中查询“高等教育”出版社出版的图书的记录(包括字段:图书编号、图书名称、作者、出版社定价),生成数据表“图书信息临时表”。
查询1。
注意:生成的表的最后一个字段名称为“出版社定价”,而非“定价”。
1.2 从“图书信息表”中查询"机械工业"出版社出版的图书的记录,追加到“图书信息临时表”中。
查询2。
1.3 删除查询。
从“图书销售记录”表中删除2005-10-31以前的销售记录。
查询3。
1.4 更新查询。
近期销售业绩每况愈下,图书定价是重要的影响因素,所以,我们要调整价格。
更新"图书信息表"中的记录,使所有图书的定价更新到8折(即原价的80%)。
查询4。
注意:此更新查询不要多次执行,否则定价会越来越低。
1.5 更新查询。
继续进行价格调整,将从未售出图书的定价更新为10元。
查询5。
注意:首先需要找到“未售出”的记录(可参考上次实验的查询2)。
2 交叉表查询
2.1 查询各出版社出版的各类图书的总数量,以交叉表的形式实现。
查询6。
做法和结果所呈现的样式可参考下图
做法。
多表连接习题:1.求在2005年2月3日借书的人的姓名及其所借书的书名。
Select , from borrow join reader on reader.reader_id=borrow.reader_id join book onreader.reader_id=book.book_id whereborrowdate=’2005-2-3’2.求读者施秋乐所借的图书编号、书名和出版社信息及借书时间。
3.查询借阅了数据库原理这本书的读者编号和姓名。
4.查询所有的借阅信息,要求列出借阅人编号、姓名、所借图书编号、书名和借阅日期,并用中文显示列名。
5. 练习:查询借书价格在20-40之间的读者的姓名Select from book join borrow onbook.book_id=borrow.book_id join reader onreader.reader_id =borrow.reader_idWhere price between 20 and 406. 练习:查询‘胡晓丽’借阅‘计算机文化基础’的日期Select borrowdate from book join borrow onbook.book_id=borrow.book_id join reader onreader.reader_id=borrow.reader_id where=’胡晓丽’ and =’计算机文化基础’--------------------------------------------------------------------Select borrowdate from borrow where reader_id in(select reader_id from reader where name=’胡晓丽’ ) and book_id in (select book_id from book where name=’计算机文化基础’)7. 练习:查询所借图书的平均价格多余30元的读者的姓名Select from book join borrow onbook.book_id=borrow.book_id join reader onreader.reader_id=borrow.reader_idGroup by reader.reader_idHaving avg(price)>30Select name from reader where reader_id in(select reader_id from borrow join book on book.book_id=borrow.book_id Group by reader_id having avg(price)>30)多表连接作业:(能用多种方法的题目请用多种方法实现)1.查询成绩大于90分的学生的学号、姓名和选修的课程号。
(一)现有图书借阅关系数据库如下:图书(图书号、书名,作者,单价,库存量)读者(读者号,姓名,工作单位,地址)借阅(图书号,读者号,借期,还期,备注)其中:还期为NULL表示该书未还。
用关系代数表达式实现下列1-4小题:1、检索读者号为R016的读者姓名、工作单位;Π姓名,工作单位(σ读者号=‘R016’(读者))2、检索借阅图书号为B5的读者姓名;Π姓名(σ图书号=‘B5’(读者∞借阅))3、检索读者“李林”所借图书的书名;Π书名(σ姓名=‘李林’(图书∞借阅∞读者))4、检索读者“李林”所借图书中未还的书名;Π书名(σ姓名=‘李林’∧还期=‘NULL’(图书∞借阅∞读者))用SQL语言实现下列5-10小题:5、检索读者号为R016的读者姓名、工作单位;SELECT 姓名,工作单位FROM 读者WHERE 读者号=‘R016’6、检索借阅图书号为B5的读者姓名;SELECT DISTINCT 姓名FROM 读者,借阅WHERE 读者.读者号=借阅.读者号 AND 图书号=‘B5’7、检索读者“李林”所借图书的书名;SELECT DISTINCT 书名FROM 图书,借阅,读者WHERE 图书.图书号=借阅.图书号 AND 借阅.读者号=读者.读者号 AND 姓名=‘李林’8、检索读者“李林”所借图书中未还的书名;SELECT DISTINCT 书名FROM 图书,借阅,读者WHERE 图书.图书号=借阅.图书 AND 借阅.读者号=读者.读者号 AND 姓名=‘李林’ AND 还期 IS NULL9、将读者“李林”所借图书的信息从借阅表中删除;DELETE FROM 借阅WHERE 读者号 IN(SELECT 读者号FROM 读者WHERE 姓名=‘李林’)10、建立未还图书的读者姓名和单位视图。
CREATE VIEW 未还(姓名,工作单位)AS SELECT 姓名,工作单位FROM 读者,借阅,图书WHERE 图书.图书号=借阅.图书号 AND 借阅.读者号=读者.读者号 AND 还期 IS NULL(二)设有一个顾客商品关系数据库,有三个基本表,表结构如下:商品表:Article (商品号,商品名,单价,库存量)客户表:Customer (顾客号,顾客名,性别,年龄,电话)订单表:OrderItem (顾客号,商品号,数量,购买价,日期)注意:回答时要将答案写到规定的地方;给出的答案要求字迹必须清楚;不允许改变程序结构和随意添加子查询。
思考与练习设图书管理关系数据模型包括以下三个关系模式:图书(总编号,书名,作者,出版单位,单价)读者(借书证号,姓名,性别,单位,职称)借阅(借书证号,总编号,借阅日期)其中,“单价”是数值型字段,“借阅日期”是日期型字段,其它都是字符型字段。
试用SQL语言完成以下各项操作:(1)查询读者张平的所在单位。
(2)查找人民出版社和科学出版社的所有图书及作者。
(3)查找价格介于10元和15元之间的图书,结果按单价降序排列。
(4)查找所有借阅了图书的读者姓名及借阅日期。
(5)查找价格在20元以上已借出的图书,结果按单价升序排列。
(6)找出藏书中所有与“数据库原理”在同一个出版单位出版的图书。
(7)求计算机科学系的读者人数。
(8)求各出版社图书的最高价格、最低价格和平均价格。
(9)找出没有借阅任何图书的读者及所在单位。
(10)找出借阅了“数据结构”一书的读者姓名及所在单位。
(11)找出当前至少借了5本图书的读者的借书证号。
(12)查找书名以“数据库”打头的所有图书及作者。
各表参考数据如下:思考与练习答案设图书管理关系数据模型包括以下三个关系模式:图书(总编号,书名,作者,出版单位,单价)读者(借书证号,姓名,性别,单位,职称)借阅(借书证号,总编号,借阅日期)其中,“单价”是数值型字段,“借阅日期”是日期型字段,其它都是字符型字段。
试用SQL语言完成以下各项操作:(1)查询读者张平的所在单位。
select 姓名,单位from 读者where 姓名=“张平”;(2)查找人民出版社和科学出版社的所有图书及作者。
select书名,出版单位,作者from 图书where 出版单位=“人民出版社”or 出版单位=“科学出版社”;(或:where 出版单位in(“人民出版社”,“科学出版社”);(3)查找价格介于10元和15元之间的图书,结果按单价降序排列。
Select *from 图书where 单价>=10 and 单价<=15(或:where 单价between 10 and 15)order by 单价desc;(4)查找所有借阅了图书的读者姓名及借阅日期。
数据库sql课后练习题及答案解析(borrow表)(reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。
6) 检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询xx年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了<FoxPro大全>一书的借书证号。
11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
12) 查询xx年7月以后没有借书的读者借书证号、姓名及单位。
#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。
##14)* 求”信息系”当前借阅图书的读者人次数。
#15) 求出各个出版社图书的最高价格、最低价格和总册数。
#16) 分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
18) 分别找出借书人次数多于1人次的单位及人次数。
19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20) 查询经济系是否还清所有图书。
如果已经还清,显示该系所有读者的姓名、所在单位和职称。
附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK ( BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int); 创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANYVARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50)); 创建BORROW:(借阅表)CREATE TABLE BORROW ( READER_ID int, BOOK_ID int, BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(445501,'TP3/12','数据库导论','王强','科学出版社',17、90);insert into BOOK values(445502,'TP3/12','数据库导论','王强','科学出版社',17、90);insert into BOOK values(445503,'TP3/12','数据库导论','王强','科学出版社',机基础','李伟','高等教育出版社',18、00);insert into BOOKvalues(112266,'TP3/12','FoxBASE','张三','电子工业出版社',23、60);insert into BOOK values(665544,'TS7/21','高等数学','刘明','高等教育出版社',20、00);insert into BOOK values(114455,'TR9/12','线性代数','孙业','北京大学出版社',20、80);insert into BOOK values(113388,'TR7/90','大学英语','胡玲','清华大学出版社',12、50);insert into BOOK values(446601,'TP4/13','数据库基础','马凌云','人民邮电出版社',22、50);insert into BOOK values(446602,'TP4/13','数据库基础','马凌云','人民邮电出版社',22、50);insert into BOOK values(446603,'TP4/13','数据库基础','马凌云','人民邮电出版社',22、50);insert into BOOKvalues(449901,'TP4/14','FoxPro大全','周虹','科学出版社',32、70);insert into BOOKvalues(449902,'TP4/14','FoxPro大全','周虹','科学出版社',32、70);insert into BOOK values(118801,'TP4/15','计算机网络','黄力钧','高等教育出版社',机网络','黄力钧','高等教育出版社',21、80);READER表:insert into reader values(111,'信息系','王维利','女','教授','1号楼424');insert into reader values(112,'财会系','李立','男','副教授','2号楼316');insert into reader values(113,'经济系','张三','男','讲师','3号楼105');insert into reader values(114,'信息系','周华发','男','讲师','1号楼316');insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224');insert into reader values(116,'信息系','李明','男','副教授','1号楼318');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318');insert into reader values(120,'国际贸易','李雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李爽','女','讲师','4号楼510');insert into reader values(122,'国际贸易','王纯','女','讲师','4号楼512');insert into readervalues(123,'财会系','沈小霞','女','助教','2号楼202');insert into reader values(124,'财会系','朱海','男','讲师','2号楼210');insert into reader values(125,'财会系','马英明','男','副教授','2号楼212');BORROW表:insert into borrow values(112,445501,'3-19-xx');insert into borrow values(125,332211,'2-12-xx');insert into borrow values(111,445503,'8-21-xx');insert into borrowvalues(112,112266,'3-14-xx');insert into borrowvalues(114,665544,'10-21-xx');insert into borrowvalues(120,114455,'11-2-xx');insert into borrowvalues(120,118801,'10-18-xx');insert into borrowvalues(119,446603,'11-12-xx');insert into borrowvalues(112,449901,'10-23-xx');insert into borrowvalues(115,449902,'8-21-xx');insert into borrowvalues(118,118801,'9-10-xx');现有关系数据库如下:数据库名:图书借阅管理系统读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。
--图书管理系统(借书、还书、书、库存、书类、学生)--选课系统(学生、老师、选课、课程、班级、年级)USE坚持--1、数据库设计(命名规范、主外键)--2、某班所有学生二月份借的书目的总本数(相同的书不重复计算)(学号、借书本数) SELECT A.stuID,COUNT(B.BID)--注意and句在哪里FROM student ALEFT JOIN borrow B ON B.stuID=A.stuID AND DATEPART(MONTH,T_TIME)=12 GROUP BY A.stuIDSELECT A.stuID,COUNT(B.BID)FROM borrow BRIGHT JOIN student A ON B.stuID=A.stuIDand DATEPART(MONTH,T_TIME)=12GROUP BY A.stuID--3、某班所有学生最后借的一本书的借书信息(学号、书名、借书时间)SELECT A.stuID,C.title,B.T_timeFROM student AJOIN borrow B ON A.stuID=B.stuIDJOIN book C ON C.Bid=B.BIDWHERE B.T_time=(SELECT TOP 1 B.T_timeFROM borrow BJOIN student A ON B.stuID=A.stuIDWHERE A.sclanum='二班'ORDER BY T_time DESC)--5、某位老师所教课程的所有学生的借书信息。
(学号、书名、借书日期)SELECT C.title,B.T_time,A.stuIDFROM student ALEFT JOIN borrow B ON A.stuID=B.stuIDJOIN book C ON B.BID=C.BidWHERE A.stuID IN(SELECT D.sStudentidFROM Elective DJOIN course E ON D.scoursename=E.scoursenameWHERE E.SSTAFFNUMBER='')--SELECT *FROM course--SELECT *fROM teacher--SELECT *fROM--ALTER TABLE COURSE--ADD SSTAFFNUMBER VARCHAR(10)--INSERT INTO teacher ()--6、某班每位学生借的书名串联(学号、书名串联)declare@STUID varchar(100)declare@TITLE varchar(100)declare@str varchar(1000)declare@t table(stuID varchar(100),TITLE varchar(100))declare curTemp CursorforSELECT A.stuID,C.titleFROM student ALEFT JOIN borrow B ON A.stuID=B.stuIDLEFT JOIN book C ON B.BID=C.BidWHERE A.sclanum='二班'group by A.stuID,C.titleopen curTempfetch next from curTemp into@STUID,@TITLEwhile@@fetch_status=0beginset@str=IsNull(@str+',','')+RTRIM(@TITLE)fetch next from curTemp into@STUID,@TITLEendinsert into@t(stuID,TITLE)values(@STUID,@str)close curTemp--关闭游标deallocate curTemp--销毁游标select*from@t--7、每个学生借的最贵的一本书的信息(学号、书名)select student.stuID,TITLE=(select top 1 BOOK.titlefrom borrowjoin BOOK on borrow.BID=book.Bidwhere student.stuID=borrow.stuIDorder by book.price DESC)from studentorder by student.stuID--2、某班所有学生二月份借的书目的总本数(相同的书不重复计算)(学号、借书本数)SELECT B.stuID,COUNT(DISTINCT A.Bid)----------结果正确FROM student Bleft JOIN borrow A ON B.stuID=A.stuIDAND DATEDIFF(MONTH,T_time,'2007-12-19')=0GROUP BY B.stuIDSELECT*FROM studentSELECT*FROM borrowSELECT*FROM bookSELECT student.stuID,COUNT(DISTINCT BOOK.BID)--结果正确FROM borrowRIGHT JOIN student ON student.stuID=borrow.stuIDLEFT JOIN BOOK ON book.Bid=borrow.BIDAND DATEDIFF(MONTH,T_time,'2007-12-19')=0GROUP BY student.stuID--查询目前借书但未归还图书的学生名称及未还图书数量select学生名称=(select stuName from student where stuID=borrow.stuID), 借书数量=count(*)from borrow where B_time is null group by stuID。
--1. 查询“计算机基础”书籍的借出日期。
use librarygoselect books.title as '书名',borrow.BorrowDate as'借出日期'from books join borrowon books.BookID=borrow.BookIDwhere books.title='计算机基础'--2. 查询所有“信息系”读者所借阅的书籍,包括续借的书籍。
use librarygoselect books.title as '信息系读者所借阅的书籍',borrow.loan'状态' from books join borrowon books.BookID=borrow.BookIDjoin readerson readers.ReaderID=borrow.ReaderIDjoin xiTableon xiTable.xiID=readers.xiIDwhere xiTable.xiName='信息系'--3. 查询“周旭”所借的书籍的信息。
use librarygoselect books.*from books join borrowon books.BookID=borrow.BookIDjoin readerson readers.ReaderID=borrow.ReaderIDwhere readers.ReaderName='周旭'--4. 查询所有书籍的状态。
use librarygoselect borrow.loan'书的状态',books.titlefrom books left outer join borrowon books.BookID=borrow.BookIDselect books.title as '信息系读者所借阅的书籍'from books join borrowon books.BookID=borrow.BookIDjoin readerson readers.ReaderID=borrow.ReaderIDjoin xiTableon xiTable.xiID=readers.xiIDwhere xiTable.xiName='信息系'--5. 统计2006年11月以后续借书籍的数量。
学生图书借阅管理数据库查询练习及答案(总9页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March学生图书借阅管理数据库数据查询一、简单查询1.查询所有学生的信息Select * from 学生信息2.查询学生的借书证号,姓名,班级Select 借书证号,姓名,班级from 学生信息3.按图书定价从高到低查询所有图书的图书名称和定价,定价相同再按图书名称升序排列Select 图书名称,定价From 图书信息Order by 定价 desc, 图书名称4.查询图书定价最高的三本图书信息Select top 3 with ties *From 图书信息Order by 定价 desc5.查询图书信息表中的图书类别,并消除重复记录Select distinct 图书类别From 图书信息6.查询图书信息表中的图书名称、书号,输出结果以书名和ISBN 为列标题Select 图书名称 as 书名,书号 as ISBNFrom 图书信息7.查询所有图书名称,和打八折之后的定价,并以折后价命名Select 图书名称,定价*0.8 as 折后价From 图书信息8.查询所有图书的入馆年数Select 图书名称,year(getdate())-year(入馆时间) as 入馆年数From 图书信息二、条件查询⒈查询计算机类的图书信息Select * from 图书信息Where 图书类别=’计算机’2.查询图书定价大于30的图书名称和定价Select 图书名称,定价from 图书信息Where 定价>303.查询图书定价在20~30之间的图书信息Select *from 图书信息Where 定价 between 20 and 304.查询图书定价大于30的计算机类图书信息Select *from 图书信息Where 定价>30 and 图书类别=’计算机’5.查询图书定价大于30或计算机类的图书信息Select *from 图书信息Where 定价>30 or图书类别=’计算机’6.查询计算机、英语和电子类的图书信息Select *from 图书信息Where 图书类别 in(’计算机’,’英语’,’电子’)7.查询姓李的学生信息Select *From 学生信息Where 姓名 like ‘李%’8.查询姓李的名为一个汉字的学生信息Select *From 学生信息Where 姓名 like ‘李_’9.查询图书名称包含“网页”的图书信息Select *From 图书信息Where 图书名称 like ‘%网页%’10.查询姓张、王、李、赵的学生信息Select * from 学生信息Where 姓名 like ‘[张王李赵]%’11.查询借书证号第五位字符为2~5的学生信息Select * from 学生信息Where 借书证号 like ‘____[2-5]%’12. 查询没有还书的借阅信息Select *From 借阅信息Where 还书日期 is null三、统计查询1.查询所有图书的平均定价,最高定价,最低定价和定价总和Select avg(定价),max(定价),min(定价),sum(定价)From 图书信息2.查询计算机类图书的数目Select count(*) as 计算机类图书数目From 图书信息Where 图书类别=’计算机’3.查询图书类别的种数Select count(distinct 图书类别) as 图书类别种数From 图书信息4.查询各类别图书数目和平均定价Select 图书类别,count(*) as 图书数目,avg(定价) as 平均定价From 图书信息Group by 图书类别5.查询各类别图书平均定价大于25元的图书类别和平均定价,并按平均定价进行降序排列Select图书类别,avg(定价) as 平均定价From 图书信息Group by 图书类别Having avg(定价)>25Order by 平均定价 desc6.查询计算机类图书信息,并计算图书数目和平均定价Select *From 图书信息Where 图书类别=’计算机’Compute count(图书编号),avg(定价)7.查询各类别图书信息,并计算各类图书数目和平均定价Select *From 图书信息Order by图书类别Compute count(图书编号),avg(定价) by 图书类别四、连接查询1.查询学生信息表和借阅信息表的所有组合Select *From 学生信息 cross join 借阅信息2.查询借过书的学生借书证号,姓名,借书的图书编号,借书日期和还书日期。
图书(图书编号,书名,作者,出版社,单价)读者(借书证号,姓名,性别,年龄,单位,职称,地址)借阅(借书证号,图书编号,借阅日期,备注)1、查找读者黄刚所在的单位。
SELECT 姓名,单位FROM 读者WHERE 姓名=’黄刚’2、查找所有读者的姓名及其出生年份。
SELECT 姓名,2009-年龄AS 出生年份FROM 读者3、查找2008年1月1日后借阅图书的借书证号。
SELECT DISTINCT借书证号FROM 借阅WHERE借阅日期>2008-1-14、查找价格在10 元和20 元之间的图书。
SELECT 书名,作者,单价,出版社FROM 图书WHERE 单价BETWEEN 10 AND 205、查找清华大学出版社和北京大学出版社的所有图书。
SELECT 书名,作者,出版社FROM 图书WHERE 出版社IN (’清华大学出版社’,’北京大学出版社’)6、查找书名以“数据库”开头的所有图书。
SELECT 书名,作者FROM 图书WHERE 书名LIKE ‘数据库%’7、查找备注为空的借阅情况。
SELECT *FROM 图书WHERE 备注IS NULL8、查找清华大学出版的单价高于10元的图书的情况。
SELECT *FROM 图书WHERE 出版社=’清华大学出版社’ and 单价>109、查找鲁迅书的情况,并且按出版社升序排列,同一出版社的图书再按图书单价的降序排列。
SELECT *FROM 图书WHERE 作者=’鲁迅’ORDER BY 出版社,单价DESC10、查找各个出版社出版的图书册数。
SELECT 出版社,COUNT(*)AS 图书册数FROM 图书GROUP BY 出版社11、查找借阅了3本以上图书的借书证号。
SELECT 借书证号FROM 借阅GROUP BY 借书证号HAVING COUNT(*)>312、查找所有借阅了图书的读者姓名及所在单位。
SELECT DISTINCT 姓名,单位FROM 读者,借阅WHERE 读者.借书证号=借阅.借书证号13、找出李晶所借的所有图书的书名及借阅日期。
1、在你的计算机上的D盘下建立一个以你学号末3位数字和姓名给合的考试文件夹,如一个学生的学号为200501203,姓名为李明聪,则在D盘上建立一个文件夹“203_李明聪”作为考试用文件夹;并在这个考试文件夹下建立3个文件夹,分别为:“DATA”、“SQL”和“BAK”。
2、使用SQL Server2000建立一个名为“图书管理”的数据库,其数据文件和日志文件保存在考试文件夹下的DATA文件夹内;3、在“图书管理”数据库下建立三个用户表:图书、读者和借阅,其表结构分别如下图1、图2和图3所示。
图1:“图书”数据表设计图2:“读者”数据表设计图3:“借阅”数据表设计4、创建数据库关系图“图书借阅关系图”,如下图4所示。
图4:图书借阅关系图5、分别往“图书”、“读者”和“借阅”数据表中添加数据,数据内容如下图5、图6和图7所示。
图5 “图书”表中的数据图6 “读者”表中的数据图7 “借阅”表中的数据6、使用SQL命令往图书表中插入一条记录,其数据分别为“665544,TS7/21,高等代数,刘明,高等教育出版社,20”,以insert1_1文件名将命令保存在考试文件夹下的SQL文件夹下;use 图书管理insert into 图书values('665544','TS7/21','高等数学','刘明','高等教育出版社',20)使用SQL命令往读者表中插入一条记录,其数据分别为“125,财会系,马英明,男,副教授,2号楼212”,以insert1_2文件名将命令保存在考试文件夹下的SQL文件夹下;use 图书管理insert into 读者values('125','财会系','马英明','男','副教授','2号楼212')使用SQL命令往借阅表中插入一条记录,其数据分别为“125,332211,2006-3-11”,以insert1_3文件名将命令保存在考试文件夹下的SQL文件夹下;use 图书管理insert into 借阅values(‘125’,’332211’,’2006-3-11’)7、使用SQL命令在图书管理数据库中进行查询,以SQL1_4~ SQL1_31文件名将命令保存在考试文件夹下的SQL文件夹下;(1)、找出姓李的读者姓名及其所在单位;use 图书管理select 姓名,单位from 读者where 姓名 like '李%'(2)、查看所有读者的全部情况;use 图书管理select *from 读者(3)、列出所有图书的书名及出版单位;use 图书管理select 书名,出版单位from 图书(4)、找出高等教育出版社的所有图书及单价,结果按单价降序排列;use 图书管理select 书名,出版单位,单价from 图书where 出版单位='高等教育出版社'order by 单价 desc(5)、查找价格介于10元和20元之间的图书种类(即去掉重复),结果按出版单位和单价升序排列;use 图书管理select distinct 分类号,出版单位,单价from 图书where 单价 bettwen 10 and 20order by 出版单位,单价(6)、查找图书中,高等教育出版社和科学工业出版社的图书种类及作者;use 图书管理select distinct 分类号,作者from 图书where 出版单位 in ('高等教育出版社','科学工业出版社')(7)、查找书名以“计算机”打头的所有图书及作者;use 图书管理select 总编号,书名,作者from 图书where 书名 like '计算机%'(8)、查询同时借阅了总编号为112266和449901两本书的借书证号;use 图书管理select 借书证号from 借阅where 总编号='112266'and 借书证号 in(select 借书证号from 借阅where 总编号='449901')(9)、查询所有借阅了图书的读者姓名及所在单位;use 图书管理select 姓名,单位from 读者where 借书证号 in(select distinct 借书证号 from 借阅)(10)、查找姓李的读者所借的所有图书的书名及借书日期;use 图书管理select 图书.书名,借阅.借书日期from 读者,图书,借阅where 图书.总编号=借阅.总编号 and 读者.借书证号=借阅.借书证号and 姓名 like '李%'(11)、查找价格在22元以上已借出的图书,结果按单价升序排列;use 图书管理select *from 图书where 总编号 in(select distinct 总编号 from 借阅) and 单价>22order by 单价(12)、查询2005年10月以后借书的读者借书证号、姓名和单位;use 图书管理select 读者.姓名,读者.单位,借阅.借书日期from 读者,借阅where 读者.借书证号=借阅.借书证号 and 借书日期>='2005-10-01'(13)、找出借阅了“SQL Server大全”一书的借书证号;use 图书管理select 借阅.借书证号from 图书,借阅where 图书.总编号=借阅.总编号 and 书名='SQL SERVER'(14)、找出与赵正义在同一天借书的读者姓名、所在单位及借书日期;use 图书管理select 姓名,单位,借书日期from 读者,借阅where 借书日期 in(select 借书日期 from 读者,借阅 where 读者.借书证号=借阅.借书证号and 姓名='赵正义')and 姓名!='赵正义'(15)、查询2005年10月以后没有借书的读者借书证号、姓名和单位;use 图书管理select* from 读者where not exists( select *from 借阅where 读者.借书证号=借阅.借书证号 and 借书日期>'2005-10-1')(17)、找出图书管理数据库中比高等教育出版社的所有图书单价更高的书籍;use 图书管理select* from 图书where 单价>all (select 单价 from 图书 where 出版单位='高等教育出版社')(19)、找出图书管理数据库中所有与“数据库导论”或“数据库基础”在同一个出版单位出版的书;自身连接:use 图书管理select s1.*from 图书 as s1,图书 as s2where s1.出版单位=s2.出版单位 and s1.书名 not in ('数据库导论','计算机基础')and s2.书名 in ('数据库导论','计算机基础')子查询:use 图书管理select* from 图书where 出版单位 in(select 出版单位 from 图书 where 书名 in ('数据库导论','计算机基础')) and 书名 not in ('数据库导论','计算机基础')(20)、求图书库中所有图书的总册数;use 图书管理select count(*) as 图书总册数from 图书(21)、求科学出版社图书的最高价格、最低价格和平均价格;use 图书管理select MAX(单价)as 最高价格,min(单价)as 最低价格,avg(单价)as 平均价格from 图书group by 出版单位having 出版单位='科学出版社'(22)、求信息系当前借阅图书的读者人数;use 图书管理select 单位,count(*) AS 借书人数from 读者where 借书证号 in(select distinct 借书证号 from 借阅)group by 单位having 单位='信息系'(23)、求各个出版社图书的最高价格、最低价格和册数;use 图书管理select 出版单位,MAX(单价)as 最高价格,min(单价)as 最低价格,count(*)as 总册数from 图书group by 出版单位(24)、分别找出各个单位当前借阅图书的读者人数;use 图书管理select 单位,count(*) AS 借书人数from 读者where 借书证号 in(select distinct 借书证号 from 借阅)group by 单位(25)、找出图书库中各个出版单位的册数、价值总额;use 图书管理select 出版单位,count(*),sum(单价)from 图书group by 出版单位(26)、找出当前至少借阅了2本图书的读者及所在单位;use 图书管理select 姓名,单位from 读者where 借书证号 in(select 借书证号 from 借阅 group by 借书证号 having count(*)>=2)(27)、分别找出借书人次超过1人的单位及人数;use 图书管理select 单位,count(*)as 借书人数from 读者where 借书证号 in(select distinct 借书证号 from 借阅)Group by 单位Having count(*)>1(28)、查询经济系没有借书的读者;use 图书管理select*from 读者where 借书证号 not in(select distinct 借书证号 from 借阅) and 单位=’经济系’8、建立计算机系的读者视图,名称为:JSJ-READER,以VIEW1_32文件名将命令保存在考试文件夹下的SQL文件夹下;create view JSJ-READERasselect * from 读者 where 单位='计算机系'9、建立各个单位当前借阅图书情况的简单统计视图,名称为:DW-READER,以VIEW1_33文件名将命令保存在考试文件夹下的SQL文件夹下;------------10、使用SQL命令删除“借阅”表中借书日期为NULL值的记录,以delete1_34文件名将命令保存在考试文件夹下的SQL文件夹下;Delete from 借阅 where 借书日期 is NULL11、使用SQL命令将“图书”表中出版单位是“北京大学出版社”的改为“北大出版社”,以update1_35文件名将命令保存在考试文件夹下的SQL文件夹下;UPDATE 图书 set 出版单位=’北大出版社’ where 出版单位=’北京大学出版社’12、使用SQL命令将所有图书的单价上调5%,以update1_36文件名将命令保存在考试文件夹下的SQL文件夹下;update 图书 set 单价=单价*1.05。
学生图书借阅管理数据库数据查询
一、简单查询
1.查询所有学生的信息
Select * from 学生信息
2.查询学生的借书证号,,班级
Select 借书证号,,班级
from 学生信息
3.按图书定价从高到低查询所有图书的图书名称和定价,定价相同再按图书名称升序排列
Select 图书名称,定价
From 图书信息
Order by 定价 desc, 图书名称
4.查询图书定价最高的三本图书信息
Select top 3 with ties *
From 图书信息
Order by 定价 desc
5.查询图书信息表中的图书类别,并消除重复记录Select distinct 图书类别
From 图书信息
6.查询图书信息表中的图书名称、书号,输出结果以书名和ISBN 为列标题
Select 图书名称 as 书名,书号 as ISBN
From 图书信息
7.查询所有图书名称,和打八折之后的定价,并以折后价命名Select 图书名称,定价*0.8 as 折后价
From 图书信息
8.查询所有图书的入馆年数
Select 图书名称,year(getdate())-year(入馆时间) as 入馆年数
From 图书信息
二、条件查询
⒈查询计算机类的图书信息
Select * from 图书信息
Where 图书类别=’计算机’
2.查询图书定价大于30的图书名称和定价
Select 图书名称,定价
from 图书信息
Where 定价>30
3.查询图书定价在20~30之间的图书信息
Select *
from 图书信息
Where 定价 between 20 and 30
4.查询图书定价大于30的计算机类图书信息
Select *
from 图书信息
Where 定价>30 and 图书类别=’计算机’
5.查询图书定价大于30或计算机类的图书信息
Select *
from 图书信息
Where 定价>30 or图书类别=’计算机’
6.查询计算机、英语和电子类的图书信息
Select *
from 图书信息
Where 图书类别 in(’计算机’,’英语’,’电子’) 7.查询姓的学生信息
Select *
From 学生信息
Where like ‘%’
8.查询姓的名为一个汉字的学生信息
Select *
From 学生信息
Where like ‘_’
9.查询图书名称包含“网页”的图书信息
Select *
From 图书信息
Where 图书名称 like ‘%网页%’
10.查询姓、王、、的学生信息
Select * from 学生信息
Where like ‘[王]%’
11.查询借书证号第五位字符为2~5的学生信息
Select * from 学生信息
Where 借书证号 like ‘____[2-5]%’
12. 查询没有还书的借阅信息
Select *
From 借阅信息
Where 还书日期 is null
三、统计查询
1.查询所有图书的平均定价,最高定价,最低定价和定价总和Select avg(定价),max(定价),min(定价),sum(定价)
From 图书信息
2.查询计算机类图书的数目
Select count(*) as 计算机类图书数目
From 图书信息
Where 图书类别=’计算机’
3.查询图书类别的种数
Select count(distinct 图书类别) as 图书类别种数
From 图书信息
4.查询各类别图书数目和平均定价
Select 图书类别,count(*) as 图书数目,avg(定价) as 平均定价
From 图书信息
Group by 图书类别
5.查询各类别图书平均定价大于25元的图书类别和平均定价,并按平均定价进行降序排列
Select图书类别,avg(定价) as 平均定价
From 图书信息
Group by 图书类别
Having avg(定价)>25
Order by 平均定价 desc
6.查询计算机类图书信息,并计算图书数目和平均定价
Select *
From 图书信息
Where 图书类别=’计算机’
Compute count(图书编号),avg(定价)
7.查询各类别图书信息,并计算各类图书数目和平均定价
Select *
From 图书信息
Order by图书类别
Compute count(图书编号),avg(定价) by 图书类别
四、连接查询
1.查询学生信息表和借阅信息表的所有组合
Select *
From 学生信息 cross join 借阅信息
2.查询借过书的学生借书证号,,借书的图书编号,借书日期和还书
日期。
Select a.借书证号,,图书编号,借书日期,还书日期
From学生信息as a join借阅信息as b
on a.借书证号=b.借书证号
3.查询06电子商务1班学生的借阅信息。
Select,班级,b.*
From学生信息as a join借阅信息as b
on a.借书证号=b.借书证号
where班级='06电子商务1班'
4.查询借过书的学生借书证号,,借书的图书编号,图书名称,借书
日期和还书日期。
Select a.借书证号,,c.图书编号,图书名称,借书日期,还书日期From学生信息as a join借阅信息as b
on a.借书证号=b.借书证号
join图书信息as c
on c.图书编号=b.图书编号
5.查询姓的借过计算机类图书的学生,借书的图书名称和图书类别。
Select,图书名称,图书类别
From学生信息as a join借阅信息as b
on a.借书证号=b.借书证号
join图书信息as c
on c.图书编号=b.图书编号
where like'%'and图书类别='计算机'
6.查询图书名称相同,但作者不同的图书信息。
Select a.图书名称,a.作者
From图书信息as a join图书信息as b
on a.图书名称=b.图书名称
where a.作者<>b.作者
7.查询所有学生的借阅信息。
Select *
From 学生信息 as a left join 借阅信息 as b
on a.借书证号=b.借书证号
8.查询所有图书和学生的借阅信息。
Select*
From学生信息as a full join借阅信息as b
on a.借书证号=b.借书证号
full join图书信息as c
on c.图书编号=b.图书编号
五、嵌套查询
1.查询王大力同学借书的图书编号
Select 图书编号 from 借阅信息
Where 借书证号=(select 借书证号 from 学生信息
Where =’王大力’)
2.查询图书定价大于平均定价的图书信息
Select * from 图书信息
Where 定价>(select avg(定价) from 图书信息)
3.查询计算机类图书的名称、图书类别、定价和平均定价
Select 图书名称,图书类别,定价,(select avg(定价) from 图书信息
Where 图书类别=’计算机’)
from 图书信息
Where 图书类别=’计算机’
4.查询借过图书的学生借书证号和
Select 借书证号,
From 学生信息
Where 借书证号 in(select 借书证号 from 借阅信息)
5.查询被王大力同学借过的图书名称
Select 图书名称 from 图书信息
Where 图书编号 in(select 图书编号 from借阅信息
Where 借书证号=(select 借书证号
from 学生信息
where =’王大力’)
6.查询计算机类图书定价比电子类图书最高定价还高的图书信息Select * from 图书信息
Where 图书类别=’计算机’ and 定价>all(select 定价 from 图书信息
Where 图书类别=’电子’) 7.查询计算机类图书定价比电子类图书最低定价高的图书信息Select * from 图书信息
Where 图书类别=’计算机’ and 定价>any(select 定价 from 图书信息
Where 图书类别=’电子’) 8.利用exists查询所有被借过的图书信息
Select * from 图书信息
Where exists(select * from 借阅信息
Where 借阅信息.图书编号=图书信息.图书编号)
9.查询图书信息表于同类图书平均定价的图书名称和定价
Select 图书名称,定价 from 图书信息 as a
Where 定价>(select avg(定价) from 图书信息 as b
Where b.图书类别=a.图书类别)。