diff --git a/wangshangshangcheng/e_commerce.sql b/wangshangshangcheng/e_commerce.sql new file mode 100644 index 0000000..5d96b45 --- /dev/null +++ b/wangshangshangcheng/e_commerce.sql @@ -0,0 +1,553 @@ +/* + Navicat Premium Dump SQL + + Source Server : syy + Source Server Type : MySQL + Source Server Version : 80040 (8.0.40) + Source Host : localhost:3306 + Source Schema : e_commerce + + Target Server Type : MySQL + Target Server Version : 80040 (8.0.40) + File Encoding : 65001 + + Date: 29/12/2024 22:59:05 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for 仓库表 +-- ---------------------------- +DROP TABLE IF EXISTS `仓库表`; +CREATE TABLE `仓库表` ( + `WarehouseID` int NOT NULL, + `WarehouseName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `StorageCapacity` int NOT NULL, + `SupplierID` int NOT NULL, + PRIMARY KEY (`WarehouseID`) USING BTREE, + INDEX `仓库表_ibfk_1`(`SupplierID` ASC) USING BTREE, + CONSTRAINT `仓库表_ibfk_1` FOREIGN KEY (`SupplierID`) REFERENCES `供应商表` (`SupplierID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 仓库表 +-- ---------------------------- +INSERT INTO `仓库表` VALUES (20001, '得力仓库', '四川省', 166625, 10001); +INSERT INTO `仓库表` VALUES (20002, '点石仓库', '山东省', 51251, 10002); +INSERT INTO `仓库表` VALUES (20003, '西弗仓库', '北京市', 165652, 10003); +INSERT INTO `仓库表` VALUES (20004, '云溪仓库', '云南省', 15986, 10004); +INSERT INTO `仓库表` VALUES (20005, '明天仓库', '山东省', 259843, 10005); +INSERT INTO `仓库表` VALUES (20006, '教材仓库', '北京市', 69852, 10006); +INSERT INTO `仓库表` VALUES (20007, '睿轩仓库', '河南省', 26465, 10007); +INSERT INTO `仓库表` VALUES (20008, '百社仓库', '江苏省', 59851, 10008); +INSERT INTO `仓库表` VALUES (20009, '当当仓库', '河北省', 26941, 10009); +INSERT INTO `仓库表` VALUES (20010, '华为仓库', '上海市', 265146, 10010); +INSERT INTO `仓库表` VALUES (20011, '荣耀仓库', '上海市', 269842, 10011); +INSERT INTO `仓库表` VALUES (20012, '馥碧诗仓库', '广东省', 59621, 10012); +INSERT INTO `仓库表` VALUES (20013, '唯资仓库', '广东省', 26940, 10013); +INSERT INTO `仓库表` VALUES (20014, '皮克熊仓库', '浙江省', 25986, 10014); +INSERT INTO `仓库表` VALUES (20015, '野丫头仓库', '河北省', 3698, 10015); +INSERT INTO `仓库表` VALUES (20016, '陆地风暴仓库', '黑龙江省', 59811, 10016); + +-- ---------------------------- +-- Table structure for 供应商表 +-- ---------------------------- +DROP TABLE IF EXISTS `供应商表`; +CREATE TABLE `供应商表` ( + `SupplierID` int NOT NULL, + `SupplierName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ContactPerson` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ContactPhone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`SupplierID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 供应商表 +-- ---------------------------- +INSERT INTO `供应商表` VALUES (10001, '得力官方旗舰店', 'dl', '5952 545485', 'dl@qq.com'); +INSERT INTO `供应商表` VALUES (10002, '点石制笔', 'dszb', '15623987562', 'dszb@163.com'); +INSERT INTO `供应商表` VALUES (10003, '西弗优品', 'xfyb', '5492 562151', 'twhu@icloud.com'); +INSERT INTO `供应商表` VALUES (10004, '云溪办公用品', 'yx', '134-7638-2608', 'itsukitakeda@gmail.com'); +INSERT INTO `供应商表` VALUES (10005, '明天见文具美学', 'mtj', '70-6882-0011', 'wingfatcheung3@hotmail.com'); +INSERT INTO `供应商表` VALUES (10006, '教材专卖店', 'jc', '3-3006-1393', 'xiatian4@yahoo.com'); +INSERT INTO `供应商表` VALUES (10007, '睿轩图书专卖店', 'rx', '11-534-3486', 'amiyam8@icloud.com'); +INSERT INTO `供应商表` VALUES (10008, '百社文化', 'bs', '74-195-8774', 'zhangzhiyuan@gmail.com'); +INSERT INTO `供应商表` VALUES (10009, '当当网图书旗舰店', 'ddw', '213-288-3939', 'tsubasa204@hotmail.com'); +INSERT INTO `供应商表` VALUES (10010, '华为官方旗舰店', 'hw', '52-048-6133', 'yuenwf@icloud.com'); +INSERT INTO `供应商表` VALUES (10011, '荣耀官方旗舰店', 'ry', '70-2198-5145', 'amo@outlook.com'); +INSERT INTO `供应商表` VALUES (10012, '馥碧诗官方旗舰店', 'fbs', '74-753-9411', 'bettfergu@icloud.com'); +INSERT INTO `供应商表` VALUES (10013, '唯资旗舰店', 'wz', '718-740-2440', 'conbarnes@gmail.com'); +INSERT INTO `供应商表` VALUES (10014, '皮克熊', 'pkx', '212-641-1305', 'daikwokkuen@yahoo.com'); +INSERT INTO `供应商表` VALUES (10015, '野丫头TomBoy', 'tb', '(116) 737 9104', 'choyin5@icloud.com'); +INSERT INTO `供应商表` VALUES (10016, '陆地风暴眼镜', 'ldfb', '213-035-4056', 'kymiu5@gmail.com'); + +-- ---------------------------- +-- Table structure for 商品类别表 +-- ---------------------------- +DROP TABLE IF EXISTS `商品类别表`; +CREATE TABLE `商品类别表` ( + `CategoryID` int NOT NULL, + `CategoryName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ParentCategoryID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`CategoryID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 商品类别表 +-- ---------------------------- +INSERT INTO `商品类别表` VALUES (1, '笔类', '文具教具'); +INSERT INTO `商品类别表` VALUES (2, '纸类', '文具教具'); +INSERT INTO `商品类别表` VALUES (3, '学习教辅', '图书教辅'); +INSERT INTO `商品类别表` VALUES (4, '小说文学', '图书教辅'); +INSERT INTO `商品类别表` VALUES (5, '华为', '手机'); +INSERT INTO `商品类别表` VALUES (6, '荣耀', '手机'); +INSERT INTO `商品类别表` VALUES (7, '面部彩妆', '彩妆'); +INSERT INTO `商品类别表` VALUES (8, '眼部彩妆', '彩妆'); +INSERT INTO `商品类别表` VALUES (9, '太阳镜', '眼镜'); +INSERT INTO `商品类别表` VALUES (10, '护目镜', '眼镜'); + +-- ---------------------------- +-- Table structure for 商品表 +-- ---------------------------- +DROP TABLE IF EXISTS `商品表`; +CREATE TABLE `商品表` ( + `ProductID` int NOT NULL, + `ProductName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Price` float(10, 2) NOT NULL, + `StockQuantity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CategoryID` int NOT NULL, + `SupplierID` int NOT NULL, + `Sales` int NOT NULL, + PRIMARY KEY (`ProductID`) USING BTREE, + INDEX `Price`(`Price` ASC) USING BTREE, + INDEX `商品表_ibfk_2`(`SupplierID` ASC) USING BTREE, + INDEX `idx_ProductName`(`ProductName` ASC) USING BTREE, + INDEX `pc`(`CategoryID` ASC) USING BTREE, + INDEX `pp`(`Price` ASC) USING BTREE, + INDEX `ps`(`StockQuantity` ASC) USING BTREE, + CONSTRAINT `商品表_ibfk_1` FOREIGN KEY (`CategoryID`) REFERENCES `商品类别表` (`CategoryID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `商品表_ibfk_2` FOREIGN KEY (`SupplierID`) REFERENCES `供应商表` (`SupplierID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 商品表 +-- ---------------------------- +INSERT INTO `商品表` VALUES (100, '得力按动笔', '得力臻顺滑速干按动中性笔ins简约学生刷题考试中性笔0.5黑色水笔', 3.00, '18445', 1, 10001, 10024); +INSERT INTO `商品表` VALUES (101, '得力荧光笔', '得力荧光笔学生标记重点ins高颜值手账专用彩色笔划重点笔记号笔', 3.50, '44541', 1, 10001, 10123); +INSERT INTO `商品表` VALUES (102, '点石按动笔', '点石制笔刷题笔中性笔黑笔按动笔速干耐用顺滑考试学生大容量签字', 5.30, '36524', 1, 10002, 9425); +INSERT INTO `商品表` VALUES (103, '点石荧光笔', '点石按动式荧光笔复古色学生用记号笔彩色莹光重点标记笔可换笔芯', 3.00, '26584', 1, 10002, 6985); +INSERT INTO `商品表` VALUES (104, 'b5活页本', '活页笔记本子高颜值方形本大学生考研加厚本子方格本简约风手帐本', 2.50, '51646', 2, 10003, 10254); +INSERT INTO `商品表` VALUES (105, '空白草稿本', '1000草稿纸批发空白考研专用米黄演算草稿本学生护眼加厚验算', 3.10, '25464', 2, 10004, 6529); +INSERT INTO `商品表` VALUES (106, '便利贴', '彩色小方块便利贴可撕有粘性迷你便签纸学生做笔记多功能索引贴', 1.20, '5165', 2, 10005, 5692); +INSERT INTO `商品表` VALUES (107, '数据库系统概论', '数据库系统概论第5版教材+习题解析与实验指导 高等教育出版社', 25.00, '561', 3, 10006, 3692); +INSERT INTO `商品表` VALUES (108, '六级英语词汇', '2025年6月大学英语六级真题试卷6级备考资料考试模拟题英语词汇书', 26.80, '55585', 3, 10007, 4596); +INSERT INTO `商品表` VALUES (109, '月亮与六便士', '月亮与六便士 经典外国小说 世界经典文学作品 学生课外阅读书籍', 32.80, '5613', 4, 10008, 3698); +INSERT INTO `商品表` VALUES (110, '我与地坛', '我与地坛精装纪念版史铁生著作 正版书文学作品 初中生阅读书当当', 36.80, '595', 4, 10009, 4696); +INSERT INTO `商品表` VALUES (111, '你当像鸟飞往你的山', '你当像鸟飞往你的山(中文版销量超200万册,比尔·盖茨 当当', 30.00, '2586', 4, 10009, 3695); +INSERT INTO `商品表` VALUES (112, '华为Mate60', '华为/HUAWEI Mate 60 双向北斗卫星通信超可靠玄武架构华为mate60手机智能手机华为官方旗舰店', 4499.00, '3381', 5, 10010, 1000); +INSERT INTO `商品表` VALUES (113, '荣耀300', 'HONOR/荣耀300 5G手机 超薄小直屏单反级双防抖主摄 100W超级快充荣耀绿洲护眼屏官方旗舰店200', 2598.00, '6965', 6, 10011, 10); +INSERT INTO `商品表` VALUES (114, '馥碧诗粉底', 'Fabloox馥碧诗粉霜粉底液奶油肌保湿控油持久不脱干油皮官方正品', 83.00, '698', 7, 10012, 16985); +INSERT INTO `商品表` VALUES (115, '唯资眼线液笔', 'VEECCI唯资双爪眼线液笔防水不晕染极细下睫毛笔胶笔防汗显色', 15.90, '2659', 8, 10013, 15986); +INSERT INTO `商品表` VALUES (116, '皮克熊眼影盘', 'pinkbear眼影盘皮可熊七色多功能修容大地色高颜值开学学生礼物', 36.80, '8254', 8, 10014, 6985); +INSERT INTO `商品表` VALUES (117, '方框墨镜', '素颜大框方形黑色墨镜女高级感ins大脸显瘦防紫外线开车太阳眼镜', 13.69, '265', 9, 10015, 8952); +INSERT INTO `商品表` VALUES (118, '防风护目镜', '连体大框水银护目镜登山防风防紫外线雪地墨镜男女款骑行户外运动', 58.90, '5969', 10, 10016, 684); +INSERT INTO `商品表` VALUES (119, '运动太阳眼镜', '自行车户外男女马拉松运动太阳眼镜PC防爆9181骑行眼镜防紫外线', 40.36, '8926', 10, 10016, 3692); + +-- ---------------------------- +-- Table structure for 用户表 +-- ---------------------------- +DROP TABLE IF EXISTS `用户表`; +CREATE TABLE `用户表` ( + `UserID` int NOT NULL, + `Username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `PhoneNumber` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `RegistrationDate` datetime NOT NULL, + PRIMARY KEY (`UserID`) USING BTREE, + INDEX `un`(`Username` ASC) USING BTREE, + INDEX `ue`(`sex` ASC) USING BTREE, + INDEX `ur`(`RegistrationDate` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 用户表 +-- ---------------------------- +INSERT INTO `用户表` VALUES (1001, 'Sun Yuanyuan', '666666syy', '女', '19506156725', 'sdust-GA17', '2024-12-01 10:29:35'); +INSERT INTO `用户表` VALUES (1002, 'Ren Xinfeng', '88888888rxf', '女', '19560728398', 'sdust-GA17', '2024-12-01 13:32:33'); +INSERT INTO `用户表` VALUES (1003, 'Miu Wing Suen', '145965wms', '男', '19682698563', '19 1-1 Honjocho, Yamatokoriyama', '2018-06-20 03:07:51'); +INSERT INTO `用户表` VALUES (1004, 'Jeremy Murray', 'olaqbzfEls', '男', '19566666666', '220 Wall Street', '2015-08-23 02:05:14'); +INSERT INTO `用户表` VALUES (1005, 'Endo Momoka', 'in0MVvbGAP', '男', '19666666666', '647 Shennan E Rd, Cai Wu Wei, Luohu District', '2005-01-18 04:11:57'); +INSERT INTO `用户表` VALUES (1006, 'Hui Kwok Kuen', 'uEZeBuz8nP', '男', '13823888886', '685 The Pavilion, Lammas Field, Driftway', '2023-02-01 07:09:23'); +INSERT INTO `用户表` VALUES (1007, 'Tin Chung Yin', 't3NkeMK4WU', '男', '12312312312', '3 4-20 Kawagishicho, Mizuho Ward', '2016-02-18 10:56:34'); +INSERT INTO `用户表` VALUES (1008, 'Murata Mitsuki', 'C5eePqtsJX', '女', '19766666666', '31 Jianxiang Rd, Pudong', '2010-05-05 13:07:12'); +INSERT INTO `用户表` VALUES (1009, 'Deng Lan', '7KHLmwJxAx', '女', '19866666666', '16 49/50 Strand, Charing Cross', '2010-08-09 14:11:21'); +INSERT INTO `用户表` VALUES (1010, 'Zou Zitao', 'gRqmrDBHrh', '男', '15299999999', '5-4-9 Kikusui 3 Jo, Shiroishi Ward,', '2022-09-27 16:31:55'); +INSERT INTO `用户表` VALUES (1011, 'Mori Yamato', '1lCxBLVRU5', '女', '19166427211', '975 Ganlan Rd, Pudong', '2009-11-26 01:00:54'); +INSERT INTO `用户表` VALUES (1012, 'Saito Kasumi', 'f3jbw0H6Id', '女', '15646252443', '101 Columbia St', '2007-08-22 08:33:46'); +INSERT INTO `用户表` VALUES (1013, 'Matsuda Eita', 'KjKhMGxivn', '女', '15968756321', '5-19-5 Shinei 4 Jo, Kiyota Ward', '2008-10-20 18:39:08'); +INSERT INTO `用户表` VALUES (1014, 'Guo Yunxi', 'ugE978NRP5', '女', '12698756321', '853 Qingshuihe 1st Rd, Luohu District', '2002-09-01 01:34:23'); +INSERT INTO `用户表` VALUES (1015, 'Tao Zhennan', 'uPR9Hj5R8C', '女', '15987563214', '417 68 Qinghe Middle St, Haidian District', '2017-05-20 23:04:03'); +INSERT INTO `用户表` VALUES (1016, 'Wang Lan', 'fDzG4jJaRW', '男', '16987863215', '156 State Street', '2016-02-28 13:21:05'); +INSERT INTO `用户表` VALUES (1017, 'Jeffrey Hicks', 'WiCvXm56W7', '女', '13698756321', '662 Maddox Street', '2011-03-28 19:15:38'); +INSERT INTO `用户表` VALUES (1018, 'Catherine Shaw', 'rLOBFjlrEp', '男', '15986321065', '700 Diplomacy Drive', '2020-01-09 14:28:34'); +INSERT INTO `用户表` VALUES (1020, 'Shao Lu', 'QOiW0miGwF', '男', '14569875632', '3-27-1 Higashitanabe, Higashisumiyoshi Ward', '2004-08-05 01:04:12'); + +-- ---------------------------- +-- Table structure for 订单表 +-- ---------------------------- +DROP TABLE IF EXISTS `订单表`; +CREATE TABLE `订单表` ( + `OrderID` int NOT NULL, + `UserID` int NOT NULL, + `Quantity` int NOT NULL, + `Price` float(10, 2) NOT NULL, + `TotalAmount` float(10, 2) NOT NULL, + `OrderDate` datetime NOT NULL, + `Status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `PaymentMethod` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`OrderID`) USING BTREE, + INDEX `Price`(`Price` ASC) USING BTREE, + INDEX `订单表_ibfk_1`(`UserID` ASC) USING BTREE, + INDEX `od`(`OrderDate` ASC) USING BTREE, + INDEX `os`(`Status` ASC) USING BTREE, + INDEX `ot`(`TotalAmount` ASC) USING BTREE, + CONSTRAINT `订单表_ibfk_1` FOREIGN KEY (`UserID`) REFERENCES `用户表` (`UserID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 订单表 +-- ---------------------------- +INSERT INTO `订单表` VALUES (2001, 1001, 3, 3.00, 9.00, '2024-06-20 19:33:45', '交易成功', '微信'); +INSERT INTO `订单表` VALUES (2002, 1002, 5, 5.30, 26.50, '2024-08-08 10:35:06', '待评价', '微信'); +INSERT INTO `订单表` VALUES (2003, 1003, 2, 2.50, 5.00, '2024-04-18 09:42:25', '交易成功', '支付宝'); +INSERT INTO `订单表` VALUES (2004, 1004, 1, 4499.00, 4499.00, '2024-10-17 09:36:08', '交易成功', '银行卡'); +INSERT INTO `订单表` VALUES (2005, 1005, 6, 3.10, 18.60, '2024-12-23 19:41:27', '待发货', '微信'); +INSERT INTO `订单表` VALUES (2006, 1006, 10, 1.20, 12.00, '2024-09-28 15:26:00', '待评价', '支付宝'); +INSERT INTO `订单表` VALUES (2007, 1007, 5, 32.80, 164.00, '2024-02-22 12:53:02', '交易成功', '银行卡'); +INSERT INTO `订单表` VALUES (2008, 1008, 8, 3.00, 24.00, '2024-07-04 16:24:21', '交易成功', '银行卡'); +INSERT INTO `订单表` VALUES (2009, 1009, 4, 26.80, 107.20, '2024-01-24 08:08:23', '待评价', '微信'); +INSERT INTO `订单表` VALUES (2010, 1010, 3, 36.80, 110.40, '2024-05-17 13:25:13', '待收货', '微信'); +INSERT INTO `订单表` VALUES (2011, 1011, 2, 83.00, 166.00, '2024-10-17 12:51:05', '交易成功', '银行卡'); +INSERT INTO `订单表` VALUES (2012, 1012, 1, 58.90, 58.90, '2024-12-13 19:51:56', '待发货', '支付宝'); +INSERT INTO `订单表` VALUES (2013, 1013, 9, 15.90, 143.10, '2024-10-16 13:23:59', '交易成功', '支付宝'); +INSERT INTO `订单表` VALUES (2014, 1014, 6, 13.69, 82.14, '2024-06-22 10:16:01', '待收货', '微信'); +INSERT INTO `订单表` VALUES (2015, 1015, 3, 25.00, 75.00, '2024-10-24 16:36:03', '交易成功', '微信'); + +-- ---------------------------- +-- Table structure for 订单详情表 +-- ---------------------------- +DROP TABLE IF EXISTS `订单详情表`; +CREATE TABLE `订单详情表` ( + `OrderDetailID` int NOT NULL, + `OrderID` int NOT NULL, + `ProductID` int NOT NULL, + `OrderQuantity` int NOT NULL, + `UnitPrice` float(10, 2) NOT NULL, + PRIMARY KEY (`OrderDetailID`) USING BTREE, + INDEX `订单详情表_ibfk_1`(`OrderID` ASC) USING BTREE, + INDEX `订单详情表_ibfk_2`(`ProductID` ASC) USING BTREE, + INDEX `订单详情表_ibfk_3`(`UnitPrice` ASC) USING BTREE, + CONSTRAINT `订单详情表_ibfk_1` FOREIGN KEY (`OrderID`) REFERENCES `订单表` (`OrderID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `订单详情表_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `商品表` (`ProductID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `订单详情表_ibfk_3` FOREIGN KEY (`UnitPrice`) REFERENCES `订单表` (`Price`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 订单详情表 +-- ---------------------------- +INSERT INTO `订单详情表` VALUES (3001, 2001, 100, 3, 3.00); +INSERT INTO `订单详情表` VALUES (3002, 2002, 102, 5, 5.30); +INSERT INTO `订单详情表` VALUES (3003, 2003, 104, 2, 2.50); +INSERT INTO `订单详情表` VALUES (3004, 2004, 112, 1, 4499.00); +INSERT INTO `订单详情表` VALUES (3005, 2005, 105, 6, 3.10); +INSERT INTO `订单详情表` VALUES (3006, 2006, 106, 10, 1.20); +INSERT INTO `订单详情表` VALUES (3007, 2007, 109, 5, 32.80); +INSERT INTO `订单详情表` VALUES (3008, 2008, 103, 8, 3.00); +INSERT INTO `订单详情表` VALUES (3009, 2009, 108, 4, 26.80); +INSERT INTO `订单详情表` VALUES (3010, 2010, 110, 3, 36.80); +INSERT INTO `订单详情表` VALUES (3011, 2011, 114, 2, 83.00); +INSERT INTO `订单详情表` VALUES (3012, 2012, 118, 1, 58.90); +INSERT INTO `订单详情表` VALUES (3013, 2013, 115, 9, 15.90); +INSERT INTO `订单详情表` VALUES (3014, 2014, 117, 6, 13.69); +INSERT INTO `订单详情表` VALUES (3015, 2015, 107, 3, 25.00); + +-- ---------------------------- +-- Table structure for 评论表 +-- ---------------------------- +DROP TABLE IF EXISTS `评论表`; +CREATE TABLE `评论表` ( + `ReviewID` int NOT NULL, + `UserID` int NOT NULL, + `ProductID` int NOT NULL, + `Content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ReviewDate` datetime NOT NULL, + `Rating` float NOT NULL, + PRIMARY KEY (`ReviewID`) USING BTREE, + INDEX `评论表_ibfk_1`(`UserID` ASC) USING BTREE, + INDEX `评论表_ibfk_2`(`ProductID` ASC) USING BTREE, + CONSTRAINT `评论表_ibfk_1` FOREIGN KEY (`UserID`) REFERENCES `用户表` (`UserID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `评论表_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `商品表` (`ProductID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 评论表 +-- ---------------------------- +INSERT INTO `评论表` VALUES (6004, 1004, 112, '还行就是过时有点快才买没多久就out了都出到300了', '2024-12-05 21:44:08', 4.5); +INSERT INTO `评论表` VALUES (6005, 1005, 105, '行', '2024-11-26 21:52:33', 4.6); +INSERT INTO `评论表` VALUES (6006, 1006, 106, '彩色的嘿嘿嘿', '2024-12-18 21:53:47', 4.3); +INSERT INTO `评论表` VALUES (6007, 1007, 109, '抬头看见月亮低头看见六便士', '2024-12-11 21:51:42', 4.2); +INSERT INTO `评论表` VALUES (6008, 1008, 103, '一般', '2024-12-18 21:48:49', 3.6); +INSERT INTO `评论表` VALUES (6009, 1009, 108, '挺好的 考了424', '2024-11-29 21:55:14', 3.2); +INSERT INTO `评论表` VALUES (6010, 1010, 110, '写的特别好特别感动特别是那个子弹正中眉心', '2024-12-04 21:47:35', 5); +INSERT INTO `评论表` VALUES (6011, 1011, 114, '一般 退钱', '2024-12-12 21:49:58', 3.4); +INSERT INTO `评论表` VALUES (6012, 1012, 118, '挺防风的就是很贵不值', '2024-12-12 21:57:52', 3.9); +INSERT INTO `评论表` VALUES (6014, 1014, 117, '显脸大', '2024-12-03 21:56:26', 2.9); + +-- ---------------------------- +-- Table structure for 购物车表 +-- ---------------------------- +DROP TABLE IF EXISTS `购物车表`; +CREATE TABLE `购物车表` ( + `ShoppingCartID` int NOT NULL, + `UserID` int NOT NULL, + `TotalAmount` float(10, 2) NOT NULL, + `CreationTime` datetime NOT NULL, + `UpdateTime` datetime NULL DEFAULT NULL, + PRIMARY KEY (`ShoppingCartID`) USING BTREE, + INDEX `购物车表_ibfk_1`(`UserID` ASC) USING BTREE, + CONSTRAINT `购物车表_ibfk_1` FOREIGN KEY (`UserID`) REFERENCES `用户表` (`UserID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 购物车表 +-- ---------------------------- +INSERT INTO `购物车表` VALUES (4001, 1001, 15.90, '2024-12-04 20:30:22', NULL); +INSERT INTO `购物车表` VALUES (4002, 1002, 18.60, '2024-12-11 20:25:22', NULL); +INSERT INTO `购物车表` VALUES (4003, 1003, 44990.00, '2024-12-12 20:36:18', NULL); +INSERT INTO `购物车表` VALUES (4004, 1004, 119.80, '2024-12-07 20:40:54', '2024-12-10 21:31:45'); +INSERT INTO `购物车表` VALUES (4005, 1005, 69.60, '2024-12-20 20:43:22', '2024-12-20 21:33:05'); +INSERT INTO `购物车表` VALUES (4006, 1006, 36.00, '2024-12-04 20:44:54', '2024-12-10 21:36:35'); +INSERT INTO `购物车表` VALUES (4007, 1007, 80.72, '2024-11-27 20:46:33', NULL); +INSERT INTO `购物车表` VALUES (4008, 1008, 2598.00, '2024-12-12 20:47:55', NULL); +INSERT INTO `购物车表` VALUES (4009, 1009, 25.00, '2024-12-20 20:49:22', NULL); +INSERT INTO `购物车表` VALUES (4010, 1010, 13.69, '2024-12-17 20:50:52', NULL); +INSERT INTO `购物车表` VALUES (4011, 1011, 159.00, '2024-12-16 20:51:57', NULL); +INSERT INTO `购物车表` VALUES (4012, 1012, 70.00, '2024-12-16 20:54:36', NULL); +INSERT INTO `购物车表` VALUES (4013, 1013, 166.00, '2024-12-17 20:56:24', NULL); +INSERT INTO `购物车表` VALUES (4015, 1015, 137.00, '2024-12-05 21:26:39', '2024-12-17 21:38:04'); + +-- ---------------------------- +-- Table structure for 购物车详情表 +-- ---------------------------- +DROP TABLE IF EXISTS `购物车详情表`; +CREATE TABLE `购物车详情表` ( + `ShoppingCartDetailID` int NOT NULL, + `ShoppingCartID` int NOT NULL, + `ProductID` int NOT NULL, + `UnitPrice` float(10, 2) NOT NULL, + `Quantity` int NOT NULL, + PRIMARY KEY (`ShoppingCartDetailID`) USING BTREE, + INDEX `ShoppingCartID`(`ShoppingCartID` ASC) USING BTREE, + INDEX `ProductID`(`ProductID` ASC) USING BTREE, + INDEX `UnitPrice`(`UnitPrice` ASC) USING BTREE, + CONSTRAINT `购物车详情表_ibfk_1` FOREIGN KEY (`ShoppingCartID`) REFERENCES `购物车表` (`ShoppingCartID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `购物车详情表_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `商品表` (`ProductID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `购物车详情表_ibfk_3` FOREIGN KEY (`UnitPrice`) REFERENCES `商品表` (`Price`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of 购物车详情表 +-- ---------------------------- +INSERT INTO `购物车详情表` VALUES (5001, 4001, 102, 5.30, 3); +INSERT INTO `购物车详情表` VALUES (5002, 4002, 105, 3.10, 6); +INSERT INTO `购物车详情表` VALUES (5003, 4003, 112, 4499.00, 10); +INSERT INTO `购物车详情表` VALUES (5004, 4004, 116, 36.80, 1); +INSERT INTO `购物车详情表` VALUES (5005, 4005, 109, 30.00, 1); +INSERT INTO `购物车详情表` VALUES (5006, 4006, 100, 3.00, 2); +INSERT INTO `购物车详情表` VALUES (5007, 4007, 119, 40.36, 2); +INSERT INTO `购物车详情表` VALUES (5008, 4008, 113, 2598.00, 1); +INSERT INTO `购物车详情表` VALUES (5009, 4009, 104, 2.50, 10); +INSERT INTO `购物车详情表` VALUES (5010, 4010, 117, 13.69, 1); +INSERT INTO `购物车详情表` VALUES (5011, 4011, 115, 15.90, 10); +INSERT INTO `购物车详情表` VALUES (5012, 4012, 101, 3.50, 20); +INSERT INTO `购物车详情表` VALUES (5013, 4013, 114, 83.00, 2); +INSERT INTO `购物车详情表` VALUES (5015, 4015, 107, 25.00, 5); +INSERT INTO `购物车详情表` VALUES (5016, 4004, 114, 83.00, 1); +INSERT INTO `购物车详情表` VALUES (5017, 4005, 110, 36.80, 1); +INSERT INTO `购物车详情表` VALUES (5018, 4006, 103, 3.00, 10); +INSERT INTO `购物车详情表` VALUES (5019, 4015, 106, 1.20, 10); + +-- ---------------------------- +-- View structure for 商品类别的总销售额 +-- ---------------------------- +DROP VIEW IF EXISTS `商品类别的总销售额`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `商品类别的总销售额` AS select `c`.`CategoryName` AS `CategoryName`,sum((`p`.`Price` * `p`.`Sales`)) AS `SUM(p.Price*p.Sales)` from (`商品类别表` `c` join `商品表` `p` on((`c`.`CategoryID` = `p`.`CategoryID`))) group by `c`.`CategoryName`; + +-- ---------------------------- +-- View structure for 待评价的订单 +-- ---------------------------- +DROP VIEW IF EXISTS `待评价的订单`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `待评价的订单` AS select `订单表`.`OrderID` AS `OrderID`,`订单表`.`UserID` AS `UserID`,`订单表`.`OrderDate` AS `OrderDate`,`订单表`.`Status` AS `Status` from `订单表` where (`订单表`.`Status` = '待评价'); + +-- ---------------------------- +-- View structure for 订单状态分布视图 +-- ---------------------------- +DROP VIEW IF EXISTS `订单状态分布视图`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `订单状态分布视图` AS select `订单表`.`Status` AS `Status`,count(0) AS `COUNT(*)` from `订单表` group by `订单表`.`Status`; + +-- ---------------------------- +-- View structure for 近30天内有购买行为的用户 +-- ---------------------------- +DROP VIEW IF EXISTS `近30天内有购买行为的用户`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `近30天内有购买行为的用户` AS select distinct `u`.`UserID` AS `UserID`,`u`.`Username` AS `Username` from (`用户表` `u` join `订单表` `o` on((`u`.`UserID` = `o`.`UserID`))) where (`o`.`OrderDate` >= (curdate() - interval 30 day)); + +-- ---------------------------- +-- View structure for 销量排行榜前十 +-- ---------------------------- +DROP VIEW IF EXISTS `销量排行榜前十`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `销量排行榜前十` AS select `p`.`ProductID` AS `ProductID`,`p`.`ProductName` AS `ProductName`,`p`.`Price` AS `Price`,`p`.`Sales` AS `Sales` from ((`商品表` `p` join `订单详情表` `oi` on((`p`.`ProductID` = `oi`.`ProductID`))) join `订单表` `o` on((`oi`.`OrderID` = `o`.`OrderID`))) group by `p`.`ProductID` order by `p`.`Sales` desc limit 10; + +-- ---------------------------- +-- Procedure structure for AddNewOrder +-- ---------------------------- +DROP PROCEDURE IF EXISTS `AddNewOrder`; +delimiter ;; +CREATE PROCEDURE `AddNewOrder`(IN p_user_id INT, + IN p_quantity INT, + IN p_price FLOAT(10, 2)) +BEGIN + INSERT INTO 订单表 (UserID, Quantity, Price, OrderDate) + VALUES (p_user_id,p_quantity, p_price, CURRENT_DATE); +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for AddNewUser +-- ---------------------------- +DROP PROCEDURE IF EXISTS `AddNewUser`; +delimiter ;; +CREATE PROCEDURE `AddNewUser`(IN p_Username VARCHAR(255), +IN p_Email VARCHAR(255), + IN p_Password VARCHAR(255)) +BEGIN + INSERT INTO 用户表 (Username, Email, Password) VALUES (p_Username, p_Email, p_Password); +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for CalculateOrderTotal +-- ---------------------------- +DROP PROCEDURE IF EXISTS `CalculateOrderTotal`; +delimiter ;; +CREATE PROCEDURE `CalculateOrderTotal`(IN p_order_id INT, + OUT p_TotalAmount FLOAT(10, 2)) +BEGIN +SELECT SUM(unit_price * Quantity) INTO p_TotalAmount FROM 订单详情表 WHERE OrderID = p_order_id; +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for DeleteOrder +-- ---------------------------- +DROP PROCEDURE IF EXISTS `DeleteOrder`; +delimiter ;; +CREATE PROCEDURE `DeleteOrder`(IN p_order_id INT) +BEGIN +DELETE FROM 订单表 WHERE OrderID = p_order_id; +DELETE FROM 订单详情表 WHERE OrderID = p_order_id; +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for UpdateInventory +-- ---------------------------- +DROP PROCEDURE IF EXISTS `UpdateInventory`; +delimiter ;; +CREATE PROCEDURE `UpdateInventory`(IN p_ProductID INT, +IN p_new_quantity INT) +BEGIN +UPDATE products SET StockQuantity = p_new_quantity WHERE ProductID = p_ProductID; +END +;; +delimiter ; + +-- ---------------------------- +-- Triggers structure for table 商品表 +-- ---------------------------- +DROP TRIGGER IF EXISTS `BeforeProductPriceUpdate`; +delimiter ;; +CREATE TRIGGER `BeforeProductPriceUpdate` BEFORE UPDATE ON `商品表` FOR EACH ROW BEGIN + IF OLD.Price != NEW.Price THEN + INSERT INTO price_history (ProductID, old_price, new_price, change_date) + VALUES (OLD.ProductID, OLD.Price, NEW.Price, CURRENT_TIMESTAMP); + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Triggers structure for table 用户表 +-- ---------------------------- +DROP TRIGGER IF EXISTS `LogPasswordChange`; +delimiter ;; +CREATE TRIGGER `LogPasswordChange` BEFORE UPDATE ON `用户表` FOR EACH ROW BEGIN + IF OLD.Password <> NEW.Password THEN + INSERT INTO password_history (UserID, old_password, new_password, change_date) + VALUES (OLD.UserID, OLD.Password, NEW.Password, CURRENT_TIMESTAMP); + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Triggers structure for table 用户表 +-- ---------------------------- +DROP TRIGGER IF EXISTS `BeforeUserDeletion`; +delimiter ;; +CREATE TRIGGER `BeforeUserDeletion` BEFORE DELETE ON `用户表` FOR EACH ROW BEGIN + DELETE FROM 订单表 WHERE UserID = OLD.UserID; + DELETE FROM 评论表 WHERE UserID = OLD.UserID; +END +;; +delimiter ; + +-- ---------------------------- +-- Triggers structure for table 订单表 +-- ---------------------------- +DROP TRIGGER IF EXISTS `AfterOrderCompleted`; +delimiter ;; +CREATE TRIGGER `AfterOrderCompleted` AFTER UPDATE ON `订单表` FOR EACH ROW BEGIN + IF NEW.Status = '交易成功' THEN + UPDATE 商品表 + SET StockQuantity = StockQuantity - (SELECT Quantity FROM 订单详情表 WHERE OrderID = OLD.OrderID AND ProductID= ProductID) + WHERE ProductID = (SELECT ProductID FROM 订单详情表 WHERE OrderID = OLD.OrderID LIMIT 1); + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Triggers structure for table 购物车详情表 +-- ---------------------------- +DROP TRIGGER IF EXISTS `ClearCartItemsOnCheckout`; +delimiter ;; +CREATE TRIGGER `ClearCartItemsOnCheckout` AFTER UPDATE ON `购物车详情表` FOR EACH ROW BEGIN + IF NEW.Quantity = 0 THEN + DELETE FROM 购物详情表 WHERE ShoppingCartID = OLD.ShoppingCartID AND ProductID = OLD.ProductID; + END IF; +END +;; +delimiter ; + +SET FOREIGN_KEY_CHECKS = 1;