万常选数据库实验参考答案
SET DATEFORMAT YMD GO
--选择数据库 USE OrderDB GO
--实验一:简单查询
--1.1 查询所有业务部门的员工姓名、职务、薪水。 SELECT employeeName,headShip,salary FROM Employee
--1.2 查询名字中含有“有限”的客户姓名和所在地。 SELECT customerName,address FROM Customer
--1.3 查询出姓“王”并且姓名的最后一个字为“成”的员工。 SELECT *
FROM Employee
WHERE employeeName LIKE '王%成'
--1.4 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。
SELECT employeeName AS 姓名, department AS 所属部门, headShip AS 职称, address AS 住址, CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END AS 性别 FROM Employee
--1.5 在表sales中挑出销售金额大于等于5000元的订单。 SELECT *
FROM OrderMaster WHERE orderSum>5000
--1.6 选取订单金额最高的前10%的订单数据。 SELECT TOP(10) PERCENT * FROM OrderMaster ORDER BY orderSum --或
SELECT TOP 10 PERCENT orderNo,SUM(quantity*price) AS totalPrice FROM OrderDetail
GROUP BY orderNO
ORDER BY SUM(quantity*price) DESC
--1.7 查询出职务为“职员”或职务为“科长”的女员工的信息。 SELECT * FROM Employee
WHERE sex='女' AND (headShip='职员' OR headShip='科长')
--1.8 查找订单金额高于4000的所有客户编号。 SELECT customerNo FROM OrderMaster WHERE orderSum>4000
--1.9 选取编号介于C20050001~C20050004的客户编号、客户名称、客户地址。
SELECT customerNo,customerName,address FROM Customer WHERE
customerNo
BETWEEN
'C20050001'
AND
'C20050004'
--1.10 找出同一天进入公司服务的员工。
SELECT * FROM Employee ORDER BY hireDate
--1.11 在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。 SELECT *
FROM OrderMaster WHERE orderSum >( SELECT MAX(orderSum) FROM OrderMaster
WHERE salerNo='E2005002' AND orderDate='2008-1-9' ) --或 SELECT *
FROM OrderMaster WHERE orderSum >ALL( SELECT orderSum FROM OrderMaster
WHERE salerNo='E2005002' AND orderDate='2008-1-9' )
--1.12 查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。 SELECT customerNo,orderNo,orderSum FROM OrderMaster WHERE orderNo IN( SELECT o1.orderNo
FROM OrderDetail o1,OrderDetail o2 WHERE o1.orderNo=o2.orderNo AND o1.productNo IN( SELECT productNo FROM Product
WHERE productName='52倍速光驱' ) AND o2.productNo IN( SELECT productNo FROM Product
WHERE productName='17寸显示器' ) )
--1.13 查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。
SELECT employeeName,sex,department,headShip