sql商品表


    CREATE DATABASE mypos;  

    USE mypos;  

      

    CREATE TABLE 客户表 (  

        客户ID INT AUTO_INCREMENT PRIMARY KEY,  

        客户名称 VARCHAR(255) NOT NULL,  

        联系方式 VARCHAR(50) NOT NULL  

    );  

      

    CREATE TABLE 商品表 (  

        商品ID INT AUTO_INCREMENT PRIMARY KEY,  

        商品名称 VARCHAR(255) NOT NULL,  

        计量单位 VARCHAR(50) NOT NULL,  

        零售价 DECIMAL(10, 2) NOT NULL,  

        促销价 DECIMAL(10, 2)  

    );  

      

    CREATE TABLE 库存表 (  

        商品ID INT,  

        数量 INT,  

        FOREIGN KEY (商品ID) REFERENCES 商品表(商品ID) ON DELETE CASCADE  

    );  

      

    CREATE TABLE 销售总表 (  

        销售ID INT AUTO_INCREMENT PRIMARY KEY,  

        客户ID INT,  

        销售时间 DATETIME NOT NULL,  

        收银员 VARCHAR(50),  

        应收金额 DECIMAL(10, 2) NOT NULL,  

        实收金额 DECIMAL(10, 2) NOT NULL,  

        优惠金额 DECIMAL(10, 2),  

        备注 TEXT,  

        FOREIGN KEY (客户ID) REFERENCES 客户表(客户ID)  

    );  

      

    CREATE TABLE 销售明细表 (  

        销售明细ID INT AUTO_INCREMENT PRIMARY KEY,  

        销售ID INT,  

        商品ID INT,  

        数量 INT,  

        零售价 DECIMAL(10, 2),  

        促销价 DECIMAL(10, 2),  

        FOREIGN KEY (销售ID) REFERENCES 销售总表(销售ID) ON DELETE CASCADE,  

        FOREIGN KEY (商品ID) REFERENCES 商品表(商品ID) ON DELETE CASCADE  

    );
    DELIMITER //  

    CREATE PROCEDURE insert_商品表(  

        IN p_商品名称 VARCHAR(255),  

        IN p_计量单位 VARCHAR(50),  

        IN p_零售价 DECIMAL(10, 2),  

        IN p_促销价 DECIMAL(10, 2)  

    )  

    BEGIN  

        INSERT INTO 商品表 (商品名称, 计量单位, 零售价, 促销价)  

        VALUES (p_商品名称, p_计量单位, p_零售价, p_促销价);  

    END //  

    DELIMITER ;

    DELIMITER //  

    CREATE PROCEDURE insert_商品表(  

        IN p_商品名称 VARCHAR(255),  

        IN p_计量单位 VARCHAR(50),  

        IN p_零售价 DECIMAL(10, 2),  

        IN p_促销价 DECIMAL(10, 2)  

    )  

    BEGIN  

        INSERT INTO 商品表 (商品名称, 计量单位, 零售价, 促销价)  

        VALUES (p_商品名称, p_计量单位, p_零售价, p_促销价);  

    END //  

    DELIMITER ;

    CALL insert_商品表('可口可乐', '瓶', 2.50, 2.30);  

    CALL insert_商品表('百事可乐', '瓶', 2.50, 2.30);  

    CALL insert_商品表('伊利牛奶', '盒', 5.20, 4.80);  

    CALL insert_商品表('农夫山泉', '瓶', 1.50, 1.30);  

    CALL insert_商品表('涪陵榨菜', '袋', 1.00, 0.80);
CREATE INDEX index_商品名称 ON 商品表(商品名称);

    CREATE VIEW v_库存 AS  

    SELECT 商品表.商品名称, 库存表.数量  

    FROM 商品表  

    JOIN 库存表 ON 商品表.商品ID = 库存表.商品ID;

  

    CREATE TRIGGER delete_销售记录  

    AFTER DELETE ON 销售总表  

    FOR EACH ROW  

    BEGIN  

        -- 删除与被删除销售记录相关的销售明细  

        DELETE FROM 销售明细表 WHERE 销售ID = OLD.销售ID;  

      

        -- 更新库存,基于被删除的销售明细中的商品和数量  

        UPDATE 库存表 k  

        JOIN (  

            SELECT 商品ID, SUM(数量) AS total_quantity  

            FROM 销售明细表  

            WHERE 销售ID = OLD.销售ID  

            GROUP BY 商品ID  

        ) s ON k.商品ID = s.商品ID  

        SET k.数量 = k.数量 + s.total_quantity;  

    END //  

    DELIMITER ;

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值