1. 项目(任务)概要
你作为《某电子商务网站》项目开发组的程序员,请按要求完成:
- 数据库的创建
- 数据表的创建
- 数据的操作
2. 实施步骤及内容
《电子商务网站》的E-R图如图2.13 所示,逻辑数据模型如图2.14 所示,物理数据模型如图2.15所示,数据表字段名定义见表2.7。请按以下设计完成数据库创建、数据表创建和数据操作任务:
表2.7字段名定义表
字段名 | 字段说明 | 字段名 | 字段说明 |
Category_id | 产品类别ID | Remark | 产品描述 |
Category_name | 产品类别名称 | Register_date | 默认值为当前录入时间 |
Register_date | 默认值为当前录入时间 | Review_id | 评论编号 |
Product_id | 产品编号 | Product_id | 产品编号 |
Category_id | 产品类别ID | Review | 评论内容 |
Product_name | 产品名称 | Register_date | 默认值为当前录入时间 |
Price | 产品价格 |
实施步骤
第一步 创建数据库
创建数据库ProductDB。
第二步 创建数据表
根据图2.14和表2.7,创建数据表T_category、T_product_review、T_product,其中产品表的产品ID(Product_id)列设置为标识列,自动从1开始增长。
第三步 创建数据表之间的关系
- 创建主键(三个表均设置);
- 产品价格列(Price)只能输入1-1000之间的数;
- 录入时间列(Register_date)默认值为当前录入时间(三个表均设置)。
第四步 数据查询
用SQL语句查询出如下数据:
- 在三个表中分别录入2-3条测试数据;
- 查询某类别下所有产品;
- 查询产品价格在300-500元之间的产品;
- 查询录入日期在2022年3月到10月之间的产品数据;
- 查询产品价格在90-200元之间的所有评论;
- 查询评论数在1-3条的所有产品。
-- 第一步 创建数据库
-- 创建数据库ProductDB。
CREATE DATABASE ProductDB
USE ProductDB
-- 第二步 创建数据表
-- 根据图2.14和表2.7,创建数据表T_category、T_product_review、T_product,其中产品表的产品ID(Product_id)列设置为标识列,自动从1开始增长。
Create table T_category
(
Category_id CHAR(50) PRIMARY KEY,
Category_name varchar(100) NOT NULL,
Register_date VARCHAR(10) NOT NULL
)
Create table T_product
(
Product_id int IDENTITY,
T_c_Category_id CHAR(50) NOT NULL,
Product_name varchar(50) NOT NULL,
Price DECIMAL(8,2) NOT NULL,
Remark varchar(50) NOT NULL,
Register_date datetime NOT NULL,
primary key(Product_id )
)
Create table T_product_review
(
Review_id CHAR(50) PRIMARY KEY,
T_p_Produc_id int NOT NULL,
Review VARCHAR(100) NOT NULL,
Register_date datetime NOT NULL
)
-- 第三步 创建数据表之间的关系
-- 创建主键(三个表均设置);
alter table T_product_review
add constraint
FK_T_product_review_T_product_Product_id foreign key(T_p_Produc_id) references T_Product(Product_id);
alter table T_product
add constraint FK_T_product_Category_id foreign key(T_c_Category_id) references T_category(Category_id )
-- 产品价格列(Price)只能输入1-1000之间的数;
alter table T_product
add constraint CK_price check(price>0 and price<1001)
-- 录入时间列(Register_date)默认值为当前录入时间(三个表均设置)。
alter table T_category
add DEFAULT getdate() for Register_date
alter table T_product
add DEFAULT getdate() for Register_date
alter table T_product_review
add DEFAULT getdate() for Register_date
-- 第四步 数据查询
-- 用SQL语句查询出如下数据:
-- 在三个表中分别录入2-3条测试数据;
insert into T_category values('0001','电子产品',DEFAULT)
insert into T_category values('0002','电子产品','2022-05-15')
insert into T_product values('0001','冰箱','481','挺好的','2011-3-6')
insert into T_product values('0002','杀虫剂','399','还好','2011-5-2')
insert into T_product values('0003','菜刀','699','挺好的','2011-3-6')
insert into T_product_review values('01','1','还不错,不贵',DEFAULT)
insert into T_product_review values('02','2','还不错,太差',DEFAULT)
insert into T_product_review values('03','3','还不错,太贵',DEFAULT)
-- 查询某类别下所有产品;
SELECT*FROM T_product_review
SELECT * FROM T_product WHERE T_c_Category_id='0001'
-- 查询产品价格在300-500元之间的产品;
select *from [dbo].[T_product] where [price] between 300 and 500
-- 查询录入日期在2022年3月到10月之间的产品数据;
select *from [dbo].[T_product] where [register_date] between '2011-3-1' and '2011-6-30'
-- 查询产品价格在90-200元之间的所有评论;
select a.Product_name AS 产品名称,a.Price AS 价格,b.Review 评论
FROM T_product AS a,T_product_review AS b
WHERE a.Product_id=b.T_p_Produc_id AND
a.Price BETWEEN 399 AND 699
-- 查询评论数在1-3条的所有产品。
SELECT a.Product_name AS 产品名称,COUNT(b.T_p_Produc_id) AS 产品评论数
FROM T_product AS a,T_product_review AS b
WHERE a.Product_id=b.T_p_Produc_id
GROUP BY a.Product_name
HAVING COUNT(b.T_p_Produc_id)>=1 AND
COUNT(b.T_p_Produc_id)<=3
以上就是项目的全部代码