think in java interview-高级开发人员面试宝典(七)

上两周研发任务太紧了,所以担搁了一下,我们继续我们的面试之旅。

下面是一个基于图书系统的15道SQL问答,供大家参考

问题描述:
本题用到下面三个关系表:
CARD     借书卡。   CNO 卡号,NAME  姓名,CLASS 班级
BOOKS    图书。     BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 
BORROW   借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期
备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下15个处理:
  1. 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。
  2. 找出借书超过5本的读者,输出借书卡号及所借图书册数。
  3. 查询借阅了"水浒"一书的读者,输出姓名及班级。
  4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
  5. 查询书名包括"网络"关键词的图书,输出书号、书名、作者。
  6. 查询现有图书中价格最高的图书,输出书名及作者。
  7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。
  8. 将"C01"班同学所借图书的还期都延长一周。
  9. 从BOOKS表中删除当前无人借阅的图书记录。
  10.如果经常按书名查询图书信息,请建立合适的索引。
  11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。
  12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。
  13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。
  14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。
  15.对CARD表做如下修改:
    a. 将NAME最大列宽增加到10个字符(假定原为6个字符)。
    b. 为该表增加1列NAME(系名),可变长,最大20个字符。

1. 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束
--实现代码:
CREATE TABLE BORROW(
    CNO int FOREIGN KEY REFERENCES CARD(CNO),
    BNO int FOREIGN KEY REFERENCES BOOKS(BNO),
    RDATE datetime,
    PRIMARY KEY(CNO,BNO)) 
 
2. 找出借书超过5本的读者,输出借书卡号及所借图书册数
--实现代码:
SELECT CNO,借图书册数=COUNT(*)
FROM BORROW
GROUP BY CNO
HAVING COUNT(*)>5
 
3. 查询借阅了"水浒"一书的读者,输出姓名及班级
--实现代码:
SELECT * FROM CARD c
WHERE EXISTS(
    SELECT * FROM BORROW a,BOOKS b 
    WHERE a.BNO=b.BNO
        AND b.BNAME=N'水浒'
        AND a.CNO=c.CNO) 
 
4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期
--实现代码:
SELECT * FROM BORROW 
WHERE RDATE<GETDATE() 
 
5. 查询书名包括"网络"关键词的图书,输出书号、书名、作者
--实现代码:
SELECT BNO,BNAME,AUTHOR FROM BOOKS
WHERE BNAME LIKE N'%网络%' 
 
6. 查询现有图书中价格最高的图书,输出书名及作者
--实现代码:
SELECT BNO,BNAME,AUTHOR FROM BOOKS
WHERE PRICE=(
    SELECT MAX(PRICE) FROM BOOKS) 
 
7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出
--实现代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO AND b.BNAME=N'计算方法'
    AND NOT EXISTS(
        SELECT * FROM BORROW aa,BOOKS bb
        WHERE aa.BNO=bb.BNO
            AND bb.BNAME=N'计算方法习题集'
            AND aa.CNO=a.CNO)
ORDER BY a.CNO DESC 
 
8. 将"C01"班同学所借图书的还期都延长一周
--实现代码:
UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)
FROM CARD a,BORROW b
WHERE a.CNO=b.CNO
    AND a.CLASS=N'C01' 
 
9. 从BOOKS表中删除当前无人借阅的图书记录
--实现代码:
DELETE A FROM BOOKS a
WHERE NOT EXISTS(
    SELECT * FROM BORROW
    WHERE BNO=a.BNO) 
 
10. 如果经常按书名查询图书信息,请建立合适的索引
--实现代码:
CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)
 
11. 在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)
--实现代码:
CREATE TRIGGER TR_SAVE ON BORROW
FOR INSERT,UPDATE
AS
IF @@ROWCOUNT>0
INSERT BORROW_SAVE SELECT i.*
FROM INSERTED i,BOOKS b
WHERE i.BNO=b.BNO
    AND b.BNAME=N'数据库技术及应用' 
 
12. 建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)
--实现代码:
CREATE VIEW V_VIEW
AS
SELECT a.NAME,b.BNAME
FROM BORROW ab,CARD a,BOOKS b
WHERE ab.CNO=a.CNO
    AND ab.BNO=b.BNO
    AND a.CLASS=N'力01'
 
13. 查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出
--实现代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO
    AND b.BNAME IN(N'计算方法',N'组合数学')
GROUP BY a.CNO
HAVING COUNT(*)=2
ORDER BY a.CNO DESC 
 
14. 假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句
--实现代码:
ALTER TABLE BOOKS ADD PRIMARY KEY(BNO) 
 
15.1 将NAME最大列宽增加到10个字符(假定原为6个字符)
--实现代码:
ALTER TABLE CARD ALTER COLUMN NAME varchar(10) 
 
15.2 为该表增加1列NAME(系名),可变长,最大20个字符
--实现代码:
ALTER TABLE CARD ADD 系名 varchar(20)
问题描述:
为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA)   S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )        C#,CN       分别代表课程编号、课程名称

SC ( S#,C#,G )   S#,C#,G     分别代表学号、所选修的课程编号、学习成绩

时间: 2024-11-01 20:54:26

think in java interview-高级开发人员面试宝典(七)的相关文章

think in java interview-高级开发人员面试宝典(一)

"生死六重门" 无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文! 相信这篇文章对你的职业生涯和阶值观会造成重大的改变! 如果你是一名PM或者是管理者正在物色合适的开发人选,那么我相信这篇文章同样会在在你考虑如何挑选技术型人材上给你带来重大的帮助. 本系列不适合想去应聘PM,管理路线的人士!!! 作为一名技术型人材由其是程序员,用什么可以恒量自己是否合格或者我们怎么去恒量一个程序员是否质深.是否合格? 比如说:他可以适合一般的软件工程师岗位,还是适合高级

think in java interview-高级开发人员面试宝典(二)

从现在开始,以样题的方式一一列出各种面试题以及点评,考虑到我在前文中说的,对于一些大型的外资型公司,你将会面临全程英语面试,因此我在文章中也会出现许多全英语样题. 这些题目来自于各个真实的公司,公司名我就不一一例举了,是本人一直以来苦心收藏的. 一个JAVA 的MAIN方法引发的一场血案 Q:    What if the main method is declared as private? A:     The program compiles properly but at run tim

think in java interview-高级开发人员面试宝典(九)

模拟面试 今天来谈一下出于面试官的角度,他是会如何去考虑给一个侯选人面试的. 下面先来看一份简历的摘要. 熟练掌握SPRING, STRUTS1, 2, HIBERNATE: J2EE方面5年工作经验: ORACLE使用经验48个月: 熟练掌握JAVA缓存机制: 了解工作流.ERP.EAI工作机制并有实际项目经验: 老实说,一般面试官看到上面的简历就会想让这个人来面试了,因为真的你SSH,ORACLE,ERP或者是EAI等工作过5年很利害了已经,于是面试官在F2F(Face To Face)面试

think in java interview-高级开发人员面试宝典(十)

今天是"面经"的最后一篇,主要讲的就是一些大公司在招人时最后的那道"智力题"关卡. 什么是智力题? 什么样的智力题呢?就是类似于下面这种题目,出个1道到2道让面试者回答一下. 例: 有四个人要在夜里穿过一条悬索桥回到宿营地.可是他们只有一支手电,电池只够再亮17分钟.过桥必须要有手电,否则太危险.桥最多只能承受两个人 同时通过的重量.这四个人的过桥速度都不一样:一个需要1分钟,一个需要2分钟,一个需要5分钟,还有一个需要10分钟.问什么样的组合可以在最短的时间过桥?

think in java interview-高级开发人员面试宝典代码示例

下载资源地址为: http://download.csdn.net/detail/lifetragedy/6379755 这是think in java interview中的代码示例,包括JAVA基础的数据结构,IO, 核心基础以及设计模式等. 因此我把它称为wallet工程(钱包工程),可以直接导入eclipse工程中去.

think in java interview-高级开发人员面试宝典(四)

算出num个数内的质数 质数即大于1的一个自然数,这个数可以被1和自身整除,如算出20之内的质数,它们有2,3,5,7,11,13,17,19这样的数字.这道题也是面试过程中笔试常问的一道题. 这道题的其目的在于: 1. 看笔试者的数学还记不记得 2. 看笔试者平时的算法 因此答题有两种. 第一种,通用做法 public class prime { public static boolean isPrime(int num) { for (int i = 2; i <= Math.sqrt(nu

think in java interview-高级开发人员面试宝典(六)

写了这么多JAVA基础,来点SQL吧! 一般面试时考SQL,主要就是考你"统计分析"这一块,下面我们来看面试官经常采用的手段. 由4张简单的不能再简单的表,演变出50道SQL 哈哈哈哈,够这个面试官面个15,20个人,不带重复的了,而且每个SQL你真的不动动脑子还写不出呢,你别不服气,下面开始. 表结构: 表Student (S#,Sname,Sage,Ssex) 学生表 S# student_no Sage student_age Ssex student_sex 表Course (

think in java interview-高级开发人员面试宝典(三)

收集自Oracle公司的10次(60道)电话面试全部问答(英语) Q: What environment variables do I need to set on my machine in order to be able to run Java programs?A: CLASSPATH and PATH are the two variables. Q: Can an application have multiple classes having main method?A: Yes

think in java interview-高级开发人员面试宝典(五)

这次开始我们来点洋文吧. 有些基础,大家可能用中文知道如何表示,但是面试官如果让你用全英语表达你就不知道如何去说了,那么下面我们将给出对于一些常用的JAVA基础知识的英语问答以及相关的答案. 大家可以看一下如何用英语去回答这些基础的问题,找一下感觉. Overriding & Overloading Overriding - same method names with same arguments and same return types associated in a class and