一、概要
作为《某电子商务网站》项目开发组的程序员,请按要求完成:
数据库的创建;
数据表的创建;
数据的操作。
二、实施步骤及内容
《电子商务网站》的E-R图如图2.13 所示,逻辑数据模型如图2.14 所示,物理数据模型如图2.15所示,数据表字段名定义见表2.7。请按以下设计完成数据库创建、数据表创建和数据操作任务:
三、代码
-- 创建数据库表
CREATE TABLE IF NOT EXISTS T_category(
Category_id CHAR(50) NOT NULL COMMENT '常平类别ID,主键',
Category_name VARCHAR(100) NOT NULL COMMENT '产品类别名称',
Register_date VARCHAR(10) NOT NULL COMMENT '注册时间',
PRIMARY KEY(Category_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS T_product(
Product_id CHAR(50) NOT NULL COMMENT '产品编号',
Category_id CHAR(50) NOT NULL COMMENT '产品类别ID',
Product_name VARCHAR(50) NOT NULL COMMENT '产品名称',
Price DECIMAL(8,2) COMMENT '产品价格',
Remark VARCHAR(50) NOT NULL COMMENT '产品描述',
Register_date DATETIME NOT NULL COMMENT '注册时间',
PRIMARY KEY(Product_id,Category_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS T_product_review(
Review_id CHAR(50) NOT NULL COMMENT '评论编号',
Product_id CHAR(50) NOT NULL COMMENT '产品编号',
Review VARCHAR(100) NOT NULL COMMENT '评论内容',
Register_date DATETIME NOT NULL COMMENT '注册时间',
PRIMARY KEY(Review_id,Product_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO T_category VALUES('01','电子类',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_category VALUES('02','家用类',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_category VALUES('03','生活类',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product VALUES('1','01','笔记本电脑',5680,'good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product VALUES('2','01','智能手机',2400,'good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product VALUES('3','01','智能手表',1000,'good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product VALUES('4','02','沙发',5000,'good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product VALUES('5','03','手提包',1000,'good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product_review VALUES('001','1','very good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product_review VALUES('002','1','common',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product_review VALUES('003','1','nice',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product_review VALUES('004','2','very good',DATE_FORMAT(NOW(),'%Y-%m-%d'));
INSERT INTO T_product_review VALUES('005','5','beautiful',DATE_FORMAT(NOW(),'%Y-%m-%d'));
-- 查询某类别下所有产品;
SELECT * FROM T_product WHERE Category_id=1
-- 查询产品价格在1000---3000元之间的产品;
SELECT * FROM T_product WHERE Price BETWEEN 1000 AND 3000
-- 查询录入日期在2022年9月到11月之间的产品数据
-- 方法一
SELECT * FROM T_product WHERE YEAR(Register_date)=2022 AND
MONTH(Register_date) BETWEEN 9 AND 11
-- 方法二
SELECT * FROM T_product WHERE Register_date > '2022-09-01' AND
Register_date < '2022-11-30'
-- 查询评论数在1—3条的所有产品
SELECT Product_name,Price,Remark,Register_date FROM T_product AS p INNER JOIN
(SELECT Product_id,COUNT(*) AS revcount FROM T_product_review
GROUP BY T_product_review.`Product_id`
HAVING COUNT(*) >= 1 AND COUNT(*) <= 3) AS t
ON p.Product_id=t.Product_id
-- 查询产品价格在1000—4000元之间的所有评论
SELECT * FROM T_product_review AS a INNER JOIN T_product AS b
ON a.Product_id = b.Product_id
WHERE Price >= 1000 AND Price <= 4000