试题2-14:数据库设计与操作

(一)测试任务

任务描述:在线鲜花商城系统,有一个评价子系统。该子系统的数据库设计E-R图如图1所示。

 

图1 评价子系统E-R图

该子系统涉及的表中各字段定义见表1到表3

表1 用户表t_user

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

username

varchar(18)

用户名

phone

varchar(11)

要求11位数字

电话

password

varchar(25)

要求包含字母数字

密码

2 鲜花表t_flower

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

price

decimal(10, 1)

值必须在1-100

单价

name

varchar(20)

名称

3 评论表t_comment

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

comment

varchar(200)

内容

comment_date

datetime

发布日期

user_id

int

外键

用户ID

flower_id

int

外键

鲜花ID

请按以上设计完成数据库创建、数据表创建和数据操作任务:

任务1:创建数据库(5分)

创建数据库FlowerOnlineStore。如果原来有该数据库,请先删除。

任务2:创建数据表及约束(30分)

(1)按表1到表3所列出字段, 创建数据表t_ user、t_ flower、t_comment,将四个表的主键列设为标识列,自动从1开始增长。(10分)

(2)根据表1到表3中的约束要求,建立好主建、外键、默认、检查、非空等约束。(20分)

CREATE DATABASE IF NOT EXISTS floweronlinestore_dsw;
USE FlowerOnlineStore_dsw;
 
CREATE TABLE IF NOT EXISTS t_user_dsw(
id_dsw int PRIMARY key auto_increment,
usename_dsw varchar(18) NOT NULL,
phone_dsw varchar(11) not null check(phone_dsw REGEXP '\\d{11}'),
password_dsw varchar(25) not null check (password_dsw REGEXP '^[A-Za-z0-9]+$') 
)ENGINE=InnoDB;
SELECT*FROM t_user_dsw;
 
CREATE TABLE IF NOT EXISTS t_flower_dsw(
id_dsw int PRIMARY key auto_increment,
price_dsw decimal(10, 1) NOT NULL check(price_dsw between 1 and 100),
name_dsw varchar(20) NOT NULL
)ENGINE=InnoDB;
SELECT*FROM t_flower_dsw;
 
CREATE TABLE IF NOT EXISTS t_comment_dsw(
id_dsw int PRIMARY key auto_increment,
comment_dsw varchar(200)NOT NULL,
comment_date_dsw datetime not null,
user_id_dsw int not null,
flower_id_dsw int not null,
CONSTRAINT fk_t_comment_dsw_t_user_dsw FOREIGN KEY(user_id_dsw)REFERENCES t_user_dsw(id_dsw)on DELETE CASCADE on UPDATE CASCADE,
CONSTRAINT fk_t_comment_dsw_t_flower_dsw FOREIGN KEY(flower_id_dsw)REFERENCES t_flower_dsw(id_dsw)on DELETE CASCADE on UPDATE CASCADE
)ENGINE=InnoDB;
SELECT*FROM t_comment_dsw;

任务3:数据库操作(50分)

(1)在四个表中分别插入5条测试数据(样本数据包含下面题目中使用的数据)。

 
insert into t_user_dsw values(null,'王旭', '18576432283', '111wx');
insert into t_user_dsw values(null,'张世杰', '18264972020', '111zsj');
insert into t_user_dsw values(null,'陈哲', '18767801220', '111cz');
insert into t_user_dsw values(null,'闻康', '15869736103', '111wk');
insert into t_user_dsw values(null,'孙威', '13089765674', '111sw');
insert into t_user_dsw values(null,'吴伟', '16810103241', '111ww');
insert into t_user_dsw values(null,'张三', '12323212345', '111zs');
SELECT*FROM t_user_dsw;
 
 
insert into t_user_dsw values(null,'王旭', '18576432283', '111wx');
insert into t_user_dsw values(null,'张世杰', '18264972020', '111zsj');
insert into t_user_dsw values(null,'陈哲', '18767801220', '111cz');
insert into t_user_dsw values(null,'闻康', '15869736103', '111wk');
insert into t_user_dsw values(null,'孙威', '13089765674', '111sw');
insert into t_user_dsw values(null,'吴伟', '16810103241', '111ww');
insert into t_user_dsw values(null,'张三', '12323212345', '111zs');
SELECT*FROM t_user_dsw;
 
insert into t_comment_dsw values(null,'好看','2022-09-1','2','3');
insert into t_comment_dsw values(null,'一般般','2022-09-2','1','6');
insert into t_comment_dsw values(null,'太喜欢了,下次还会买','2022-09-2','3','1');
insert into t_comment_dsw values(null,'花花很好看,贺卡也是','2022-9-4','4','5');
insert into t_comment_dsw values(null,'第二次买了,女朋友很开心','2022-9-6','5','2');
insert into t_comment_dsw values(null,'五星好评,店主很热心','2022-9-10','2','1');
insert into t_comment_dsw values(null,'满意','2022-9-10','7','2');
insert into t_comment_dsw values(null,'喜欢','2022-9-11','7','1');
SELECT*FROM t_comment_dsw;

(2)查询评论表中,包含‘好’的评论。

SELECT*FROM  t_comment_dsw a 
where a.comment_dsw like'%好%';

(3)查询用户姓名含‘张’的所有评论。

SELECT comment_dsw,usename_dsw,user_id_dsw
FROM t_comment_dsw INNER JOIN t_user_dsw
ON t_comment_dsw.user_id_dsw=t_user_dsw.id_dsw
WHERE t_user_dsw.usename_dsw like'%张%';

(4)查询哪个花被评论次数最多。

SELECT flower_id_dsw,count(*)as number
FROM t_comment_dsw
group by flower_id_dsw;
ORDER BY number DESC;

5)删除用户‘张三’的所有关于‘玫瑰’的评论。

DELETE b 
FROM t_user_dsw as a,t_comment_dsw b
WHERE a.id_dsw=b.id_dsw and a.usename_dsw='张三';

任务4:数据库备份(5分)

(1)通过数据库备份命令,将数据库FlowerOnlineStore的数据库结构以及数据导出到考生成果文件夹下的backup文件夹,文件名为FlowerOnlineStore_backup.sql。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值