7-Java Net面试题库数据库.pdf
文本预览下载声明
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 、
显示全部