上机作业3(单表查询)
1、在图书管理数据库中创建下面选择查询对象:
s1:查询读者表中全部记录,结果集按借书证号降序排序
SELECT * FROM 读者 ORDER BY 借书证号
s2:查询所有专科生和本科生的已借书数,提取数据项:借书证号、姓名、读者类别、已借数
SELECT 借书证号,姓名,读者类别,已借数 FROM 读者
WHERE 读者类别 in("专科生","本科生")
s3:查询清华大学出版社出版的藏书信息
SELECT * FROM 图书 WHERE 出版社="清华大学出版社"
s4:查询价格高于100元的图书信息
SELECT * FROM 图书 WHERE 价格>100
s5:查询已借空的图书信息
SELECT * FROM 图书 WHERE 库存量=0
s6:查询ISBN号的从第2到第4字符是777的图书记录
SELECT * FROM 图书 WHERE ISBN like "?777*"
s7:查询借出时间超过30天的读者的借书证号
SELECT 借书证号 FROM 读者 WHERE date()-借书时间>30
或:
SELECT 借书证号 FROM 读者 WHERE datediff("d",借书时间,date())>30
s8:在已借过的书中(借阅历史表)查借出时间不超过两天的书的ISBN号
SELECT isbn FROM 借阅历史无 WHERE借书时间-还书时间<=2
或:
SELECT isbn FROM 借阅历史无 WHERE datediff("d",借书时间,还书时间)<=2
s9:给定一个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 学期=1
S3查询专业代码为"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.12
S2:查询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=图书.ISBN
WHERE 已借数=0  and  (借阅.借书证号 is not null)
S4:查询在图书表中库存量=复本量,但在借阅表中存在借出记录的图书的书号
与S3雷同
S5:查询所有已借出的书的书名和所借者的借书证号和姓名
SELECT 读者.借书证号,姓名,书名
FROM (读者 INNER JOIN 借阅 ON 借阅.借书证号=读者.借书证号)
      INNER JOIN 图书 ON 借阅.ISBN=图书.ISBN
S6:给定一个借书证号,查询该读者是否可借书。提取数据项:借书证号,姓名,现可借数
SELECT 借书证号,姓名,读者类别.限借数-读者.已借数 AS 可借数,
IIF(读者类别.限借数-读者.已借数>0, " 可借", "不可借 ") AS 是否可借
FROM 读者类别 INNER JOIN 读者 ON 读者类别.读者类别=读者.读者类别
WHERE 借书证号=[请输入借书证号]
2、在成绩管理数据库中创建下面的查询对象
S1:任给一个学号,查询该学生所修的全部课程的课程名、成绩及学分
SELECT课程.课程名, 成绩.成绩, 成绩.学分
FROM 课程 INNER JOIN 成绩 ON 课程.课程号 = 成绩.课程号
WHERE 成绩.学号=[请输入学号]
S2:任给一个专业名称,查询该专业拥用的全部班级的班级代码及班级名称
SELECT 班级.班级代码, 班级.班级名称
FROM 专业 INNER JOIN 班级 ON 专业.专业代码 = 班级.专业代码
WHERE 专业.专业名称=[请输入专业名称]
S3:任给一个课程号,查选修该课程的全部学生的学号、姓名、成绩及学分
SELECT 学生.学号, 学生.姓名, 成绩.成绩, 成绩.学分
FROM 学生 INNER JOIN 成绩 ON 学生.学号 = 成绩.学号
WHERE 成绩.课程号=[输入课程号]
S4:任给一个课程号,查选修该课程的全部学生中不及格者的学号和姓名
SELECT 学生.学号, 学生.姓名, 成绩.成绩, 成绩.学分
FROM 学生 INNER JOIN 成绩 ON 学生.学号 = 成绩.学号
WHERE 成绩.课程号=[输入课程号] and 成绩.成绩<60
S5::查询没有选课的学生
SELECT 学生.学号,姓名
FROM学生 LEFT JOIN 成绩 ON 学生.学号 = 成绩.学号
WHERE 成绩.学号 is null
S6:查询没有学生选修的课程
SELECT 课程.课程号, 课程.课程名
FROM 课程 LEFT JOIN 成绩 ON 课程.课程号 = 成绩.课程号
WHERE 成绩.课程号 is null;
S7:查询2005级计算机应用专业已开出的所有课程的课程号及课程名。
SELECT DISTINCT 课程.课程号, 课程.课程名
FROM (((专业 INNER JOIN 班级 ON 专业.专业代码=班级.专业代码)
INNER JOIN 学生 ON 班级.班级代码=学生.班级代码)
INNER JOIN 成绩 ON 学生.学号=成绩.学号)
INNER JOIN 课程 ON 课程.课程号=成绩.课程号
WHERE (班级.年级="2005") AND (专业.专业名称="计算机应用");;
3、在工资管理数据库中中创建下面的查询对象
S1:查询出2006年1月分全部职工的月工资清单,提取数据项:职工号、所在部门、职务工资、奖金、应发、医保、个税、扣款小计、实发
SELECT 月工资.职工号, 职工.部门, 月工资.职务工资, 月工资.奖金, 月工资.职务工资+月工资.奖金 AS 应发, 月工资.医保, 月工资.个税, 月工资.医保+月工资.个税 AS 扣款小计, 月工资.实发
FROM 职工 INNER JOIN 月工资 ON 职工.职工号=月工资.职工号
WHERE(月工资.年=2006) AND (月工资.月=1)
S2:任合一个职工号,查该职工所在部门的部门出纳员的姓名
上机作业5(聚合函数)
1.在图书管理数据库中实现下列查询
(1)在借阅表中查询哪些书被借出以及每种书被借出的本数,提取书号及借出本数
SELECT isbn,count(*) as 借出本数
FROM 借阅
GROUP BY  isbn
(2)统计馆藏书的总册数
SELECT SUM(复本量) AS 藏书总册数
FROM 图书
(3)统计馆藏书的总值金额
SELECT SUM(单价*复本量) AS 藏书总值
FROM 图书
(4)统计各个出版社正在借出的书的种数
SELET 出版社,COUNT(*)
FROM 图书
GROUP BY 出版社
WHERE 库存量<复本量
(5)查询借出图书总值金额最高的读者的借书证号及姓名
SELECT TOP 1借阅.借书证号,SUM(单价) AS 总值
FROM (读者 INNER JOIN借阅览 ON 读者.借书证号 = 借阅.借书证号)
INNER JOIN 图书 ON 图书.ISBN = 借阅.ISBN
GROUP BY 借阅.借书证号
ORDER BY  SUM(单价) DESC
(6)查询所有库存量<复本量但在借阅表中却没有出现的图书的ISBN号及书名
SELECT 图书.ISBN,书名
FROM  图书 LEFT JOIN 借阅ON 图书.ISBN = 借阅.ISBN
WHERE 库存量<复本量 and 借阅.ISBN is null
2.在成绩管理数据库中实现下面查询