CREATE DATABASE ClothingStore;
USE ClothingStore;
CREATE TABLE Shelf (
ShelfID VARCHAR(20) PRIMARY KEY,
Location VARCHAR(50) COMMENT '货架位置'
);
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 Buyer (
BuyerID VARCHAR(20) PRIMARY KEY,
BuyerName VARCHAR(50) NOT NULL,
ContactPhone VARCHAR(20) UNIQUE,
ShippingAddress VARCHAR(100),
CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP
);
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 Cloth (
ItemID VARCHAR(20) PRIMARY KEY,
ShelfID VARCHAR(20),
SellerID VARCHAR(20),
MaterialColor VARCHAR(50) NOT NULL,
Size VARCHAR(10) 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 SellRecord (
RecordID INT AUTO_INCREMENT PRIMARY KEY,
ItemID VARCHAR(20) NOT NULL,
BuyerID VARCHAR(20) NOT NULL,
Quantity INT NOT NULL CHECK (Quantity > 0),
SellDate DATETIME DEFAULT CURRENT_TIMESTAMP,
TotalAmount DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (ItemID) REFERENCES Cloth(ItemID) ON DELETE CASCADE,
FOREIGN KEY (BuyerID) REFERENCES Buyer(BuyerID) ON DELETE CASCADE,
UNIQUE (ItemID, BuyerID, SellDate)
);
CREATE TABLE PurchaseRecord (
RecordID INT AUTO_INCREMENT PRIMARY KEY,
ItemID VARCHAR(20) NOT NULL,
SellerID VARCHAR(20) NOT NULL,
Quantity INT NOT NULL CHECK (Quantity > 0),
PurchaseDate DATETIME DEFAULT CURRENT_TIMESTAMP,
UnitPrice DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (ItemID) REFERENCES Cloth(ItemID) ON DELETE CASCADE,
FOREIGN KEY (SellerID) REFERENCES Seller(SellerID) ON DELETE CASCADE
);
INSERT INTO Shelf (ShelfID, Location) VALUES ('A01', '一楼东区');
INSERT INTO Seller (SellerID, SellerName, ContactPhone, Address) VALUES ('S001', '广州服装厂', '18976403509', '广州市天河区');
INSERT INTO Buyer (BuyerID, BuyerName, ContactPhone, ShippingAddress) VALUES ('B001', '张三', '18976483506', '海口市美兰区');
INSERT INTO Buyer (BuyerID, BuyerName, ContactPhone, ShippingAddress) VALUES ('B002', '张四', '18976483508', '西安市灞桥区');
INSERT INTO Staff (StaffID, StaffName, Gender, Position, HireDate, ShelfID) VALUES ('E001', '李四', '男', '库管', '2023-01-01', 'A01');
INSERT INTO Cloth (ItemID, ShelfID, SellerID, MaterialColor, Size, StockQuantity, PurchaseDate, Price)
VALUES ('C001', 'A01', 'S001', '红色纯棉', 'M', 100, '2023-05-01', 99.99);
INSERT INTO SellRecord (ItemID, BuyerID, Quantity, TotalAmount) VALUES ('C001', 'B001', 5, 499.95);
SELECT *
FROM Staff ;
ALTER TABLE Staff ADD COLUMN ContactPhone VARCHAR(20) AFTER Position;
SELECT *
FROM Staff;
UPDATE Staff
SET ContactPhone='18976484199'
WHERE StaffID='E001';
SELECT *
FROM Staff;
SELECT *
FROM Buyer;
DELETE FROM Buyer
WHERE ContactPhone='18976483508';
SELECT *
FROM Buyer;
SELECT *
FROM SellRecord;
DROP TABLE IF EXISTS SellRecord;
SELECT *
FROM SellRecord;