-- 创建商品表
CREATE TABLE sh_goods (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
score DECIMAL(3, 2)
);
-- 创建商品评论表
CREATE TABLE sh_goods_comment (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
goods_id INT,
content TEXT,
is_valid BOOLEAN,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
score INT,
FOREIGN KEY (goods_id) REFERENCES sh_goods(id)
);
-- 插入商品数据
INSERT INTO sh_goods (name, score) VALUES
('商品1', 4.5),
('商品2', 3.2),
('商品3', 5.0),
('商品4', 2.8),
('商品5', 4.8),
('商品6', 3.9),
('商品7', 4.2),
('商品8', 3.7),
('商品9', 4.6),
('商品10', 3.5);
-- 插入商品评论数据
INSERT INTO sh_goods_comment (user_id, goods_id, content, is_valid, score) VALUES
(1, 1, '很不错的商品', true, 4),
(2, 2, '质量一般', true, 3),
(3, 3, '非常满意', true, 5),
(1, 4, '不太好用', true, 2),
(2, 5, '超出预期', true, 5),
(3, 6, '还行吧', true, 3),
(1, 7, '很喜欢', true, 4),
(2, 8, '有点失望', true, 2),
(3, 9, '值得购买', true, 5),
(1, 10, '还可以', true, 3),
(4, 1, '非常好', true, 5),
(4, 2, '不好用', true, 2),
(5, 3, '满意', true, 5),
(5, 4, '一般般', true, 3),
(6, 5, '很棒', true, 5),
(6, 6, '不太满意', true, 2),
(7, 7, '很实用', true, 4),
(7, 8, '有点贵', true, 3),
(8, 9, '质量很好', true, 5),
(8, 10, '还不错',true, 3);
基于这个表和表中的数据给我创建一个 sh_goods_attr 商品属性表和 sh_goods_attr_value 商品属性值表,其数据要满足我做这些题(1)查询 id 为 6 的分类(手机)所具有的属性信息,将属性按照层级并排显示。
在查询时,应注意 sh_goods_attr 表中有一个 sort 字段,表示排序值,在输出属性信息时,应按照 sort 字段的值升序排列。(2)查询 id 为 5 的商品(智能手机)的所有属性信息,将属性名称和属性值并排显示。
(3)查询 id 为 1 的属性的所有子属性值,有两种实现方式,一种是通过连表查询实现,另一种是通过子查询实现。下面演示利用子查询来实现(4)查询拥有属性值个数大于 1 的商品 id 和名称。首先通过子查询在商品属性值表中找出所有属性值个数大于 1 的商品 id,然后获取这些商品的 id 和名称。
最新发布