CREATE DATABASE ClothingStore;
USE ClothingStore;
CREATE TABLE Cloth (
ItemID VARCHAR(20) PRIMARY KEY,
ShelfID VARCHAR(20),
SellerID VARCHAR(20),
MaterialColor VARCHAR(50) NOT NULL,
Size VARCHAR('L','M','S') NOT NULL,
StockQuantity INT NOT NULL DEFAULT 0 CHECK (StockQuantity >= 0),
PurchaseDate DATE NOT NULL,
LogisticsStatus VARCHAR(20) NOT NULL DEFAULT '在库',
Price DECIMAL(10, 2) NOT NULL CHECK (Price > 0),
FOREIGN KEY (ShelfID) REFERENCES Shelf(ShelfID) ON DELETE SET NULL,
FOREIGN KEY (SellerID) REFERENCES Seller(SellerID) ON DELETE SET NULL
);
CREATE TABLE Shelf (
ShelfID VARCHAR(20) PRIMARY KEY,
Location VARCHAR(50) COMMENT '货架位置'
);
CREATE TABLE Staff (
StaffID VARCHAR(20) PRIMARY KEY,
StaffName VARCHAR(50) NOT NULL,
Gender ENUM('男', '女') NOT NULL,
Position VARCHAR(20) NOT NULL,
HireDate DATE NOT NULL,
ShelfID VARCHAR(20),
FOREIGN KEY (ShelfID) REFERENCES Shelf(ShelfID) ON DELETE SET NULL
);
CREATE TABLE Seller (
SellerID VARCHAR(20) PRIMARY KEY,
SellerName VARCHAR(50) NOT NULL,
ContactPhone VARCHAR(20) UNIQUE,
Address VARCHAR(100),
CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE sell (
item_id VARCHAR(50),
buyer_phone VARCHAR(20),
quantity INT NOT NULL,
PRIMARY KEY (item_id, buyer_phone),
FOREIGN KEY (item_id) REFERENCES cloth(item_id),
FOREIGN KEY (buyer_phone) REFERENCES buyer(buyer_phone)
);
CREATE TABLE Buyer (
BuyerID VARCHAR(20) PRIMARY KEY,
BuyerName VARCHAR(50) NOT NULL,
ContactPhone VARCHAR(20) UNIQUE,
ShippingAddress VARCHAR(100),
CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO Cloth (ItemID, ShelfID, SellerID, MaterialColor, Size, StockQuantity, PurchaseDate, Price)VALUES ('C001', '01E', 'S001', '红色纯棉', 'M', 100, '2023-05-01', 99.99);
INSERT INTO Shelf (ShelfID, Location) VALUES ('01E', '一楼东区');
INSERT INTO Staff (StaffID, StaffName, Gender, Position, HireDate, ShelfID) VALUES ('S001', '李四', '男', '仓库管理员', '2023-01-01', '01E');
INSERT INTO Seller (SellerID, SellerName, ContactPhone, Address) VALUES ('0001', '广州服装厂', '18976480001', '广州市天河区天河小区A栋');
INSERT INTO SellRecord (ItemID, BuyerID, Quantity, TotalAmount) VALUES ('C001', 'B001', 5, 499.95);
INSERT INTO Buyer (BuyerID, BuyerName, ContactPhone, ShippingAddress) VALUES ('B001', '张三', '18976480002', '北京市朝阳区朝阳小区B栋303');
SELECT c.ItemID, c.MaterialColor, c.Size, c.StockQuantity, s.Location
FROM Cloth c
LEFT JOIN Shelf s ON c.ShelfID = s.ShelfID;
SELECT *
FROM Cloth WHERE ShelfID = 'A01';
SELECT sr.RecordID, c.ItemID, c.MaterialColor, b.BuyerName, sr.Quantity, sr.TotalAmount
FROM SellRecord sr
JOIN Cloth c ON sr.ItemID = c.ItemID
JOIN Buyer b ON sr.BuyerID = b.BuyerID;
SELECT
DATE_FORMAT(sr.SellDate, '%Y-%m-%d') AS SellDate,
SUM(sr.Quantity) AS TotalItemsSold,
SUM(sr.TotalAmount) AS TotalRevenue
FROM SellRecord sr
WHERE sr.SellDate BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY DATE_FORMAT(sr.SellDate, '%Y-%m-%d')
ORDER BY SellDate DESC;
ALTER TABLE Staff ADD COLUMN ContactPhone VARCHAR(20) AFTER Position;