请将下面创建销售单表的SQL语句补充完整,要求指定关系的主码和外码约束。
CREATE TABLE SALES (
Sno CHAR(8)(a)
VEMno CHAR(5)(b)
Gno CHAR(8)(c)
SDate DATE,
STime TIME );
阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】
某公司要对其投放的自动售货机建立商品管理系统,其数据库的部分关系模式如下:
售货机:VEM(VEMno,Location),各属性分别表示售货机编号、部署地点:
商品:GOODS(GNo,Brand,Price),各属性分别表示商品编号、品牌名和价格;
销售单:SALES(SNo,VEMno(下划虚线),Gno(下划虚线),SDate,STime),各属性分别表示销售号、售货机编号、商品编号、日期和时间。
缺货单:OOS(VENo(下划虚线),Gno(下划虚线),SDate,STime),各属性分别表示售货机编号、商品编号、日期和时间。
相关关系模式的属性及说明如下:
(1)售货机摆放固定种类的商品,售货机内每种商品最多可以储存10件。管理员在每天结束的时候将售货机中所有售出商品补全
(2)每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则表明该售货机上该商品已售完,需要通知系统立即补货,通过自动向缺货单中添加一条缺货记录来实现。
根据以上描述,回答下列问题,将SQL语句的空缺部分补充完整。
请将下面创建销售单表的SQL语句补充完整,要求指定关系的主码和外码约束。
CREATE TABLE SALES (
Sno CHAR(8)(a)
VEMno CHAR(5)(b)
Gno CHAR(8)(c)
SDate DATE,
STime TIME );
创建销售记录详单视图SALES Detail,要求按日期统计每个售货机上各种商品的销售数量,属性有VEMno、Location、Gno、Brand、Price、amount和SDate。为方便实现,首先建立一个视图SALES_Total,然后利用SALES Total完成视图SALES Detail的定义。
CREATE VIEW SALES_Total (VEMno,Gno,SDate,amount) AS
SELECT VENno,Gno,SDate,count(*)
FROM SALES
GROUP BY ( d );
CREATE VIWE ( e ) AS
SELECT VEM.VEMno,Location,GOODS.Gno,Brand,Price,amount,SDate
FROM VEM,GOODS,SALES_Total
WHERE ( f ) AND ( g )
每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则自动向缺货单中添加一条缺货记录。需要用触发器来实现缺货单的自动维护。程序中的GetTime()获取当前时间。
CREAT ( h ) OOS TRG AFTER ( i ) ON SALES ON SALES
REFERENCING new row AS nrow FOREACHROW
FOR EACH ROW
BEGIN
INSERT INTO OOS
SELECT SALES.VENno ( j ) Get Time()
FROM SALES
WHERE SALES.VEMno=nrow.VEMno AND SALES.Gno=nrow.Gno
AND SALES.SDate=nrow.SDate
GROUP BY SALES.VEMno,SALES.Gno,SALES.SDate
HAVING count(*) AND mod(count(*),10)=0;
END
查询当天销售最多的商品编号、品牌和数量。程序中的GetDate()获取当天日期。
SELECT GOODS.Gno,Brand,( k )
FROM GOODS,SALES
WHERE GOODS.Gno=SALES.GNo AND SDATE=GetDate()
GROUP BY ( l )
HAVING ( m ) ( SELECT count(*)
FORM SALELS
WHERE SDATE=GETDATE()
GROUP BY GNO );
查询一件都没有售出的所有商品编号和品牌。
SELECT GNo,BRAND
FROM GOODS
WHERE GNo ( n )
SELECT DISTINCT GNo
FROM ( o )