上机练习4
一、建立数据库:DB081;
二、为描述商品的销售情况,建立了三张表:客户表、商品表和销售表。客户表用于描述客户的基本信息,商品表用于描述商品的基本信息,销售表描述商品对客户的销售情况。在查询分析器中写出创建这三张表的语句,并将语句以文件形式保存下来,文件名为“考生名.SQL”,存放在新建的文件夹下。可以将后续所有的SQL语句均保存在此文件中,在文件中注明题号,不用抄题)。 三张表的结构如下:
1.客户表(KHB)
客户号(KHH) 普通字符编码定长字符型,长度为4,主码。
客户名(KHM) 普通字符编码可变长字符型,最大长度为12,非空。 积分(JF) 整型,默认值为0。
2.商品表(SPB)
商品号(SPH) 普通字符编码定长字符型,长度为4,主码。(注:一个商品号代表一种商品)。 商品名(SPM) 普通字符编码可变长字符型,最大长度为20,非空。
类别(LB) 普通字符编码定长字符型,长度为6,取值范围为{冰箱,电视,电脑} 进价(JJ) 整型。
3.销售表(XSB)
客户号(KHH) 普通字符编码定长字符型,长度为4,非空。 商品号(SPH) 普通字符编码定长字符型,长度为4,非空。 销售日期(XSRQ) 小日期时间型,默认值为系统当前日期,非空。 销售数量(XSSL) 小整型。 销售价格(XSJG) 整型。(注:指单个商品的销售价格) 其中:主码为(客户号,商品号,销售日期),
“客户号”为引用客户表的“客户号”的外码, “商品号”为引用商品表的“商品号”的外码。
三、运行SQL_Data1.exe程序解压缩数据文件(可解压到任何地方),解压缩的密码为“bbaa”。利用SQL Server的DTS工具,将解压后的 “客户及销售表.xls”文件中的数据分别导入到 “客户表”和“销售表”中,将“商品表.txt”文件中的数据导入到“商品表”中。
四、利用第三题的三张表,在查询分析器中写出实现如下要求的SQL语句。(注:下述每个小题要求均使用一条SQL语句完成)
1. 查询姓“张”和姓“王”的客户的详细信息。
2. 查询2008年每个月每种商品的销售总数量,列出月份、商品号和销售总数量,结果按月份和商品号升序排序。
3. 查询被卖出次数最少的三种商品(包括没有被卖出过的商品,包括并列的情况),列出商品名、
类别和进价。
4. 查询在2008年3月到8月期间没有被卖出过的“电脑”类商品的名称和进价。 5. 查询至少购买了“电视”和“冰箱”两类商品的客户名、购买的商品名和类别。 6. 在客户表中插入一新记录,客户号为“K100”,客户名为“新客户”,积分用默认值。 7. 将销售总数量超过1000的商品的进价降低10%。
1
1
SELECT *
FROM KHB
WHERE KHM LIKE '张%' OR KHM LIKE '王%';
2
SELECT MONTH(XSRQ) 月份,SPH 商品号,SUM(XSSL) 销售总数量 FROM XSB
WHERE YEAR(XSRQ)=2008 GROUP BY MONTH(XSRQ),SPH ORDER BY MONTH(XSRQ),SPH; 3
SELECT TOP 3 SPM,LB,JJ
FROM SPB LEFT JOIN XSB ON(SPB.SPH=XSB.SPH) GROUP BY SPB.SPH,SPM,LB,JJ ORDER BY COUNT(SPB.SPH)
4
SELECT SPM,JJ FROM SPB
WHERE LB='电脑' AND SPH NOT IN ( SELECT SPH
FROM XSB
WHERE XSRQ>='2008-3-1' AND XSRQ<='2008-8-31') 5
SELECT KHM,SPM,LB
FROM KHB,XSB,SPB
WHERE KHB.KHH=XSB.KHH AND XSB.SPH=SPB.SPH
AND XSB.KHH IN ( SELECT KHH FROM XSB,SPB
WHERE XSB.SPH=SPB.SPH AND LB='冰箱' AND XSB.KHH IN ( SELECT KHH
FROM XSB,SPB
WHERE XSB.SPH=SPB.SPH AND LB='电脑'))
2