文档详情

7-Java Net面试题库数据库.pdf

发布:2017-04-06约7.32千字共10页下载文档
文本预览下载声明
Java.Net 面试题库数据库 第 1 页 Java.Net 面试题库数据库 2016 年 12 月面试题库 1 、 有如下几张表 1)、customers 存放顾客信息表: cid 唯一标识顾客/行 cname 顾客名称 city 顾客所在城市 discnt每个顾客的折扣 2)、agents 存放代理商信息表: aid 唯一标识一个代理商/行 aname 代理商名称 city 代理商所在城市 percent 每笔交 易代理所能获得的佣金百分比 3)、products 存放商品信息的表: pid 唯一标识一件商品 pname 商品名称 city 商品库所在的城市 quantity 目前可销售的商品库存的数量 price 每单位商品的批发价 4)、orders 存放订单信息的表: ordno 唯一标识一份订单 cid购买商品的顾客 aid经由代理商订货 ordDate 订单时间 pid 所订购的商品 qty 订购商品的数量 dollars 商品的总价 实现如下题目: 1)找出通过住在广州或佛山的代理商订购了商品名称为p05的顾客的名字 2) 求出商品名称为p03的订购总量 3) 当某个代理商所订购的某样产品的总量超过 1000时,列出所有满足条件的商品名称和 代理商 ID以及这个总量 答案解析: 1) select c.cname from orders o left join customers c on o.cid=c.cid left join products p on o.pid=p.pid left join agents a on o.aid=a.aid where a.city in (广州,佛山) and p.pname=p05 2) Java.Net 面试题库数据库 第 2 页 select sum(o.qty) from orders o left join products p on o.pid=p.pid where p.pname=p03 3) select o.aid,sum(o.qty) from orders o left join customers c on o.cid=c.cid left join products p on o.pid=p.pid left join agents a on o.aid=a.aid group by o.aid,o.pid having sum(o.qty)1000 2 、 删除姓名、年龄重复的记录(只保留 Id最大的一条)(常考!!!) Id name age salary 1 yzk 80 1000 2 yzk 80 2000 3 tom 20 20000 4 tom 20 20000 5 im 20 20000 答案解析: 思路: 首先取得不重复的数据 select * from Persons where Id in ( SELECT MAX(Id) AS Expr1 FROM Persons GROUP BY Name, Age ) Java.Net 面试题库数据库 第 3 页 根据姓名、年龄分组,取出每组的 Id最大值,然后将 Id 最大值之外的排除。 删除重复的数据(最终结果): delete from Persons where Id not in ( SELECT MAX(Id) AS Expr1 FROM Persons GROUP BY Name, Age ) 3 、 left join、right join、inner join 的区别? 答案解析: (1)比如 t1 left join t2 on t1.xx=t2.xx ,此时 t1(左边的)表中的数据会被全部查 询出来,如果 t2 中没有使 t1.xx=t2.xx成立的行,则以 null的形式出现在结果集中 (2)right join 和 left join 情况相反 (3)inner join 是等值连接,只有连接条件成立时才把当前连接放入结果集 注意,有时候会听到“左外连接 left outer joint”、“右外连接 right outer joint” 的说法,其实“左连接 left join”就是“左外连接 left outer joint”的简写而已,是 等价的,“右外连接”也同理。 4 、
显示全部
相似文档