Add application.zip, and mysql/

main
Flyao 1 year ago
parent 02962d8418
commit f241fc1625

Binary file not shown.

@ -0,0 +1,45 @@
各SQL文件存放内容的说明
1、mymanager.sql
1创建表的SQL语句CREATE TABLE
2新增数据的SQL语句INSERT
3创建触发器的SQL语句CREATE TRIGGER
4创建视图的SQL语句CREATE VIEW
5创建用户的SQL语句CREATE USER
6分配权限的SQL语句GRANT
【依次对应课程设计报告】3.43.5.13.5.73.5.43.5.8
2、mymanager_select.sql
查询的SQL语句SELECT
【对应课程设计报告】3.5.2
3、mymanager_update.sql
更新的SQL语句UPDATE
【对应课程设计报告】3.5.3 UPDATE部分
4、mymanager_delete.sql
删除的SQL语句DELETE
【对应课程设计报告】3.5.3 DELETE部分

Binary file not shown.

@ -0,0 +1,586 @@
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色标识',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `unique_admin_username`(`username` ASC) USING BTREE,
UNIQUE INDEX `unique_admin_email`(`email` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '管理员' ROW_FORMAT = DYNAMIC;
INSERT INTO admin (id, username, password, name, avatar, role, phone, email)
VALUES
(1, 'flyao', 'admin', '姚昊', 'http://localhost:9090/files/1735014296914-下载.png', 'ADMIN', NULL, NULL),
(2, 'Yuki', '123', '梁羽睿', NULL, 'ADMIN', '15905487698', 'yuki.yr.liang@gmail.com'),
(3, '1', '123', '1', NULL, 'ADMIN', NULL, NULL),
(4, 'admin1', 'admin123', '李华', 'http://localhost:9090/files/1735014296915-下载1.png', 'ADMIN', '13900139000', 'lihua@example.com'),
(5, 'admin2', 'admin1234', '王丽', 'http://localhost:9090/files/1735014296916-下载2.png', 'ADMIN', '13700137000', 'wangli@example.com'),
(6, 'admin3', 'admin12345', '赵强', 'http://localhost:9090/files/1735014296917-下载3.png', 'ADMIN', '13600136000', 'zhaoqiang@example.com'),
(7, 'admin4', 'admin123456', '孙敏', 'http://localhost:9090/files/1735014296918-下载4.png', 'ADMIN', '13500135000', 'sunmin@example.com'),
(8, 'admin5', 'admin1234567', '周杰', 'http://localhost:9090/files/1735014296919-下载5.png', 'ADMIN', '13400134000', 'zhoujie@example.com'),
(9, 'admin6', 'admin12345678', '吴娜', 'http://localhost:9090/files/1735014296920-下载6.png', 'ADMIN', '13300133000', 'wuna@example.com'),
(10, 'admin7', 'admin123456789', '郑刚', 'http://localhost:9090/files/1735014296921-下载7.png', 'ADMIN', '13200132000', 'zhenggang@example.com'),
(11, 'admin8', 'admin1234567890', '钱丽', 'http://localhost:9090/files/1735014296922-下载8.png', 'ADMIN', '13100131000', 'qianli@example.com'),
(12, 'admin9', 'admin12345678901', '王明', 'http://localhost:9090/files/1735014296923-下载9.png', 'ADMIN', '13000130000', 'wangming@example.com');
DROP TABLE IF EXISTS `activity_publisher`;
CREATE TABLE `activity_publisher` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱地址',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话号码',
`organization` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '组织名称', -- 组织名称字段
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地址',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像图片',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `unique_publisher_username`(`username` ASC) USING BTREE,
UNIQUE INDEX `unique_publisher_email`(`email` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '活动发布者信息表' ROW_FORMAT = DYNAMIC;
INSERT INTO `activity_publisher` (id, role, name, username, password, email, phone, organization, address, avatar)
VALUES
(1, 'ACTIVITY_PUBLISHER', '姚昊', 'flyao1', 'password123', NULL, NULL, '科技协会', '北京市朝阳区', NULL),
(2, 'ACTIVITY_PUBLISHER', '梁羽睿', 'Yuki1', 'password456', 'yuki.yr.liang@gmail.com', '15905487698', '水下社区', '上海市浦东新区', NULL),
(3, 'ACTIVITY_PUBLISHER', '张伟', 'zhangwei', 'password123', 'zhangwei@example.com', '13812345678', '珊瑚礁保护组织', '广州市天河区', 'http://localhost:9090/files/avatar1.png'),
(4, 'ACTIVITY_PUBLISHER', '李婷', 'liting', 'password456', 'liting@example.com', '13987654321', '海洋生物研究会', '杭州市西湖区', 'http://localhost:9090/files/avatar2.png'),
(5, 'ACTIVITY_PUBLISHER', '王芳', 'wangfang', 'password789', 'wangfang@example.com', '13798765432', '环保志愿者团队', '福建厦门', 'http://localhost:9090/files/avatar3.png'),
(6, 'ACTIVITY_PUBLISHER', '赵敏', 'zhaomin', 'password202', 'zhaomin@example.com', '13512345678', '潜水培训中心', '杭州市西湖区', 'http://localhost:9090/files/avatar5.png'),
(7, 'ACTIVITY_PUBLISHER', '张三', 'zhangsan', 'password203', 'zhangsanmin@example.com', '13512345671', '海洋科技公司', '湖北武汉', 'http://localhost:9090/files/avatar6.png'),
(8, 'ACTIVITY_PUBLISHER', '李四', 'lisi', 'password204', 'lisi@example.com', '13512345672', '海洋教育机构', '陕西西安', 'http://localhost:9090/files/avatar7.png'),
(9, 'ACTIVITY_PUBLISHER', '王五', 'wangwu', 'password205', 'wangwu@example.com', '13512345673', '海洋旅游公司', '重庆', 'http://localhost:9090/files/avatar8.png'),
(10, 'ACTIVITY_PUBLISHER', '孙六', 'sunliu', 'password206', 'sunliu@example.com', '13512345674', '深海探险队', '深圳', 'http://localhost:9090/files/avatar9.png');
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色标识',
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '性别',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
`info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '简介',
`birth` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '生日',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `unique_username`(`username` ASC) USING BTREE,
UNIQUE INDEX `unique_email`(`email` ASC) USING BTREE,
CONSTRAINT `check_user_sex` CHECK (`sex` in (_utf8mb4'',_utf8mb4''))
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC;
INSERT INTO `user` (id, `username`, `password`, `name`, `avatar`, `role`, `sex`, `phone`, `email`, `info`, `birth`)
VALUES
(1, 'flyao2', 'password1', '姚昊', NULL, 'USER', '', NULL, NULL, '热爱编程', '2002-03-27'),
(2, 'Yuki2', 'password2', '梁羽睿', NULL, 'USER', '', NULL, NULL, '喜欢旅行', '2004-07-13'),
(3, 'user3', 'password3', '王五', 'http://example.com/avatar3.jpg', 'USER', '', '13800138003', 'wangwu@example.com', '运动爱好者', '1994-03-03'),
(4, 'user4', 'password4', '赵六', 'http://example.com/avatar4.jpg', 'USER', '', '13800138004', 'zhaoliu@example.com', '音乐发烧友', '1996-04-04'),
(5, 'user5', 'password5', '孙七', 'http://example.com/avatar5.jpg', 'USER', '', '13800138005', 'sunqi@example.com', '电影迷', '1998-05-05'),
(6, 'user6', 'password6', '周八', 'http://example.com/avatar6.jpg', 'USER', '', '13800138006', 'zhouba@example.com', '美食家', '2000-06-06'),
(7, 'user7', 'password7', '吴九', 'http://example.com/avatar7.jpg', 'USER', '', '13800138007', 'wujiu@example.com', '摄影爱好者', '2002-07-07'),
(8, 'user8', 'password8', '郑十', 'http://example.com/avatar8.jpg', 'USER', '', '13800138008', 'zhengshi@example.com', '读书达人', '2004-08-08'),
(9, 'user9', 'password9', '钱十一', 'http://example.com/avatar9.jpg', 'USER', '', '13800138009', 'qianyiyi@example.com', '游戏控', '2006-09-09'),
(10, 'user10', 'password10', '王十二', 'http://example.com/avatar10.jpg', 'USER', '', '13800138010', 'wangshizhi@example.com', '时尚博主', '2008-10-10');
DROP TABLE IF EXISTS `activity`;
CREATE TABLE `activity` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称',
`descr` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动简介',
`content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '活动内容',
`start` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '开始时间',
`end` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '结束时间',
`form` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动形式',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动地址',
`host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '主办方',
`publisher_id` int NULL DEFAULT NULL COMMENT '活动发布人ID',
`read_count` int NULL DEFAULT 0 COMMENT '浏览量',
`cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '封面',
PRIMARY KEY (`id`) USING BTREE,
INDEX `fk_activity_publisher`(`publisher_id` ASC) USING BTREE,
CONSTRAINT `fk_activity_publisher` FOREIGN KEY (`publisher_id`) REFERENCES `activity_publisher` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '活动' ROW_FORMAT = DYNAMIC;
-- 触发器1
-- 创建插入触发器
-- 插入数据时验证日期
CREATE TRIGGER before_activity_insert
BEFORE INSERT ON `activity`
FOR EACH ROW
BEGIN
-- 比较 start 和 end 时间
IF STR_TO_DATE(NEW.`end`, '%Y-%m-%d') < STR_TO_DATE(NEW.`start`, '%Y-%m-%d') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '结束时间不能早于开始时间';
END IF;
END;
-- 触发器2
-- 创建更新触发器
-- 更新数据时验证日期
CREATE TRIGGER before_activity_update
BEFORE UPDATE ON `activity`
FOR EACH ROW
BEGIN
-- 比较 start 和 end 时间
IF STR_TO_DATE(NEW.`end`, '%Y-%m-%d') < STR_TO_DATE(NEW.`start`, '%Y-%m-%d') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '结束时间不能早于开始时间';
END IF;
END;
INSERT INTO `activity` (`id`, `name`, `descr`, `content`, `start`, `end`, `form`, `address`, `host`, `publisher_id`, `read_count`, `cover`)
VALUES
(1, '科技大会', '一场关于最新科技趋势的研讨会', '<p>详细内容...</p>', '2024-10-01', '2024-11-03', '线下', '科技中心会议厅', '科技协会', 1, 5, 'http://example.com/cover.jpg'),
(2, '水下摄影大赛', '欢迎各位潜水爱好者参加水下摄影大赛,展现您的拍摄技巧!', '活动内容包含水下摄影技巧比赛、交流讲座等内容。', '2025-01-10', '2025-01-12', '线下', '海南三亚', '水下社区', 2, 0, 'cover1.jpg'),
(3, '珊瑚礁清理行动', '参加我们的珊瑚礁清理行动,保护美丽的海洋环境。', '大家将一起清理水下垃圾,并进行环境保护宣传。', '2025-02-05', '2025-02-07', '线下', '广东珠海', '珊瑚礁保护组织', 3, 0, 'cover2.jpg'),
(4, '海洋生物观察', '观察海洋生物,了解海洋生态。', '活动内容包括海洋生物观察、知识讲座等。', '2025-03-15', '2025-03-17', '线下', '福建厦门', '海洋生物研究会', 4, 0, 'cover3.jpg'),
(5, '环保讲座', '了解环保知识,保护地球家园。', '活动内容包括环保知识讲座、互动问答等。', '2025-04-20', '2025-04-22', '线下', '浙江杭州', '环保志愿者团队', 5, 0, 'cover4.jpg'),
(6, '潜水培训', '学习潜水技巧,探索神秘海底世界。', '活动内容包括潜水理论学习、实操练习等。', '2025-05-25', '2025-05-27', '线下', '江苏南京', '潜水培训中心', 6, 0, 'cover5.jpg'),
(7, '海洋科技展览', '展示最新的海洋科技成果。', '活动内容包括科技成果展览、互动体验等。', '2025-06-30', '2025-07-02', '线下', '湖北武汉', '海洋科技公司', 7, 0, 'cover6.jpg'),
(8, '海洋教育研讨会', '探讨海洋教育的重要性。', '活动内容包括研讨会、案例分享等。', '2025-07-15', '2025-07-17', '线下', '陕西西安', '海洋教育机构', 8, 0, 'cover7.jpg'),
(9, '海洋旅游节', '体验海洋旅游的乐趣。', '活动内容包括海洋旅游节、特色表演等。', '2025-08-20', '2025-08-22', '线下', '重庆', '海洋旅游公司', 9, 0, 'cover8.jpg'),
(10, '深海探险', '探索未知的深海世界。', '活动内容包括深海探险、科研交流等。', '2025-09-25', '2025-09-27', '线下', '深圳', '深海探险队', 10, 0, 'cover9.jpg');
DROP TABLE IF EXISTS `activity_sign`;
CREATE TABLE activity_sign (
id INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
activity_id INT NOT NULL COMMENT '活动ID',
user_id INT NOT NULL COMMENT '用户ID',
time varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报名时间',
PRIMARY KEY (id) USING BTREE,
FOREIGN KEY (activity_id) REFERENCES activity(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '活动报名' ROW_FORMAT = DYNAMIC;
INSERT INTO `activity_sign` (`activity_id`, `user_id`, `time`)
VALUES
(1, 1, '2023-09-30 10:00:00'),
(2, 2, '2024-12-23 11:00:00'),
(4, 3, '2024-12-15 12:00:00'),
(7, 4, '2024-12-23 13:00:00'),
(10, 5, '2024-12-24 14:00:00'),
(9, 6, '2023-09-29 15:00:00'),
(6, 7, '2024-12-22 16:00:00'),
(8, 8, '2024-12-14 17:00:00'),
(5, 9, '2024-12-22 18:00:00'),
(9, 10, '2024-12-23 19:00:00');
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名称',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `unique_category_name`(`name` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '博客分类' ROW_FORMAT = DYNAMIC;
INSERT INTO `category` (`id`, `name`)
VALUES
(1, '科技'),
(2, '海洋'),
(3, '摄影'),
(4, '环保'),
(5, '生物'),
(6, '培训'),
(7, '教育'),
(8, '旅游'),
(10, '科学'),
(11, '探索'),
(12, '生态'),
(13, '活动'),
(14, '讲座');
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
`content` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '内容',
`descr` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '简介',
`cover` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '封面',
`tags` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标签',
`user_id` INT NOT NULL COMMENT '发布人ID',
`date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发布日期',
`read_count` INT NULL DEFAULT 0 COMMENT '浏览量',
`category_id` INT NOT NULL COMMENT '分类ID',
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`category_id`) REFERENCES `category`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 30 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '博客信息' ROW_FORMAT = DYNAMIC;
INSERT INTO `blog` (`id`, `title`, `content`, `descr`, `cover`, `tags`, `user_id`, `date`, `read_count`, `category_id`)
VALUES
(1, '科技改变生活', '<p>科技如何改变我们的生活...</p>', '科技对生活的影响', 'cover1.jpg', '科技,生活', 1, '2023-09-01', 100, 1),
(2, '海洋保护的重要性', '<p>为什么保护海洋很重要...</p>', '海洋保护的重要性', 'cover2.jpg', '海洋,保护', 2, '2023-10-01', 150, 2),
(3, '水下摄影技巧', '<p>如何拍摄美丽的水下照片...</p>', '水下摄影技巧', 'cover3.jpg', '摄影,水下', 3, '2023-11-01', 200, 3),
(4, '珊瑚礁保护', '<p>如何保护珊瑚礁...</p>', '珊瑚礁保护', 'cover4.jpg', '珊瑚礁,保护', 4, '2023-12-01', 250, 4),
(5, '海洋生物观察', '<p>如何观察海洋生物...</p>', '海洋生物观察', 'cover5.jpg', '海洋生物,观察', 5, '2024-01-01', 300, 5),
(6, '环保知识', '<p>了解环保知识...</p>', '环保知识', 'cover6.jpg', '环保,知识', 6, '2024-02-01', 350, 4),
(7, '潜水培训', '<p>如何学习潜水...</p>', '潜水培训', 'cover7.jpg', '潜水,培训', 7, '2024-03-01', 400, 6),
(8, '海洋科技', '<p>最新的海洋科技成果...</p>', '海洋科技', 'cover8.jpg', '海洋,科技', 8, '2024-04-01', 450, 1),
(9, '海洋教育', '<p>海洋教育的重要性...</p>', '海洋教育', 'cover9.jpg', '教育,海洋', 9, '2024-05-01', 500, 7),
(10, '海洋旅游', '<p>如何体验海洋旅游...</p>', '海洋旅游', 'cover10.jpg', '旅游,海洋', 10, '2024-06-01', 550, 8);
DROP TABLE IF EXISTS `collect`;
CREATE TABLE `collect` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`fid` INT NOT NULL COMMENT '关联ID', -- 关联ID标识被收藏的内容
`user_id` INT NOT NULL COMMENT '收藏人ID', -- 用户ID标识收藏内容的用户
`module` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模块',
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 50 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '收藏表' ROW_FORMAT = DYNAMIC;
INSERT INTO `collect` (`fid`, `user_id`, `module`)
VALUES
(2, 1, 'blog'),
(4, 2, 'blog'),
(1, 3, 'blog'),
(7, 4, 'blog'),
(6, 5, 'blog'),
(10, 6, 'blog'),
(3, 7, 'blog'),
(5, 8, 'blog'),
(8, 9, 'blog'),
(9, 10, 'blog');
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`content` VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '内容',
`user_id` INT NOT NULL COMMENT '评论人',
`pid` INT DEFAULT NULL COMMENT '父级ID',
`root_id` INT DEFAULT NULL COMMENT '根节点ID',
`time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '评论时间',
`fid` INT NOT NULL COMMENT '关联ID',
`module` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模块',
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`pid`) REFERENCES `comment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`root_id`) REFERENCES `comment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '评论表' ROW_FORMAT = DYNAMIC;
INSERT INTO `comment` (`id`, `content`, `user_id`, `pid`, `root_id`, `time`, `fid`, `module`)
VALUES
(1, '非常有趣的文章!', 1, NULL, 1, '2023-09-02 10:00:00', 2, 'blog'),
(2, '谢谢分享!', 2, NULL, 2, '2023-10-02 11:00:00', 3, 'blog'),
(3, '很有启发!', 3, NULL, 3, '2023-11-02 12:00:00', 1, 'blog'),
(4, '非常有用的信息!', 4, NULL, 4, '2023-12-02 13:00:00', 10, 'blog'),
(5, '感谢作者!', 5, NULL, 5, '2024-01-02 14:00:00', 8, 'blog'),
(6, '非常详细!', 6, NULL, 6, '2024-02-02 15:00:00', 5, 'blog'),
(7, '很好的内容!', 7, NULL, 7, '2024-03-02 16:00:00', 6, 'blog'),
(8, '非常感谢!', 8, NULL, 8, '2024-04-02 17:00:00', 9, 'blog'),
(9, '很有帮助!', 9, NULL, 9, '2024-05-02 18:00:00', 4, 'blog'),
(10, '非常棒!', 10, NULL, 10, '2024-06-02 19:00:00', 10, 'blog');
DROP TABLE IF EXISTS `likes`;
CREATE TABLE `likes` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`fid` INT NOT NULL COMMENT '关联ID',
`user_id` INT NOT NULL COMMENT '点赞人ID',
`module` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模块',
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 62 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '点赞' ROW_FORMAT = DYNAMIC;
INSERT INTO `likes` (`fid`, `user_id`, `module`)
VALUES
(2, 1, 'blog'),
(6, 2, 'blog'),
(7, 3, 'blog'),
(9, 4, 'blog'),
(1, 5, 'blog'),
(3, 6, 'blog'),
(4, 7, 'blog'),
(10, 8, 'blog'),
(8, 9, 'blog'),
(5, 10, 'blog');
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
`content` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '内容',
`time` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建时间', -- 修改为 NOT NULL
`user` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '公告信息表' ROW_FORMAT = DYNAMIC;
INSERT INTO `notice` (`title`, `content`, `time`, `user`)
VALUES
('系统维护通知', '系统将于2024-12-31进行维护预计持续2小时。', '2024-12-30', 'flyao'),
('新年活动预告', '新年活动即将开始,详情请关注活动页面。', '2024-12-25', 'Yuki'),
('重要安全更新', '请尽快更新您的密码以确保账户安全。', '2024-12-20', 'flyao'),
('用户反馈收集', '我们正在收集用户反馈,请参与我们的问卷调查。', '2024-12-15', 'Yuki'),
('活动延期通知', '原定于2024-12-18的活动延期至2025-01-01。', '2024-12-10', 'Yuki'),
('系统升级通知', '系统将在2024-12-05进行升级预计持续1小时。', '2024-12-04', 'flyao'),
('活动报名提醒', '请尽快完成活动报名,名额有限。', '2024-11-30', 'admin1'),
('新功能上线', '我们的新功能已上线,欢迎体验!', '2024-11-25', 'admin4'),
('隐私政策更新', '我们更新了隐私政策,请查阅最新版本。', '2024-11-20', 'admin5'),
('用户满意度调查', '我们正在进行用户满意度调查,期待您的宝贵意见。', '2024-11-15', 'admin6');
-- 触发器3
DELIMITER $$
DROP TRIGGER IF EXISTS `after_blog_delete`;
CREATE TRIGGER `after_blog_delete`
AFTER DELETE ON `blog`
FOR EACH ROW
BEGIN
-- 删除 collect 表中与删除的 blog 记录关联的记录
DELETE FROM `collect` WHERE `fid` = OLD.id AND `module` = 'blog';
-- 删除 likes 表中与删除的 blog 记录关联的记录
DELETE FROM `likes` WHERE `fid` = OLD.id AND `module` = 'blog';
-- 删除 comment 表中与删除的 blog 记录关联的记录
DELETE FROM `comment` WHERE `fid` = OLD.id AND `module` = 'blog';
END $$
DELIMITER ;
-- 触发器4
DELIMITER $$
DROP TRIGGER IF EXISTS `after_activity_delete`;
CREATE TRIGGER after_activity_delete
AFTER DELETE ON `activity`
FOR EACH ROW
BEGIN
-- 删除 activity_sign 表中与删除的 activity 相关的记录
-- DELETE FROM `activity_sign` WHERE `activity_id` = OLD.id;
-- 删除 collect 表中与删除的 activity 相关的记录
DELETE FROM `collect` WHERE `fid` = OLD.id AND `module` = 'activity';
-- 删除 likes 表中与删除的 activity 相关的记录
DELETE FROM `likes` WHERE `fid` = OLD.id AND `module` = 'activity';
-- 删除 comment 表中与删除的 activity 相关的记录
DELETE FROM `comment` WHERE `fid` = OLD.id AND `module` = 'activity';
END$$
DELIMITER ;
-- 触发器5
DELIMITER $$
DROP TRIGGER IF EXISTS `after_admin_delete`;
CREATE TRIGGER after_admin_delete
AFTER DELETE ON `admin`
FOR EACH ROW
BEGIN
-- 删除 notice 表中与删除的 admin 用户相关的记录
DELETE FROM `notice` WHERE `user` = OLD.username;
END$$
DELIMITER ;
-- 视图1
-- 博客分类
DROP VIEW IF EXISTS view_category_list;
CREATE VIEW view_category_list AS
SELECT
id AS ``,
name AS ``
FROM
category;
-- 视图2
-- 博客信息
DROP VIEW IF EXISTS blog_view;
CREATE VIEW blog_view AS
SELECT
b.id AS ``,
b.title AS ``,
b.descr AS ``,
b.cover AS ``,
c.name AS ``,
b.tags AS ``,
u.username AS ``,
b.date AS ``,
b.read_count AS ``
FROM blog b
JOIN user u ON b.user_id = u.id
JOIN category c ON b.category_id = c.id;
-- 视图3
-- 活动信息
DROP VIEW IF EXISTS activity_view;
CREATE VIEW activity_view AS
SELECT
a.id AS ``,
a.name AS ``,
a.descr AS ``,
a.cover AS ``,
a.start AS ``,
a.end AS ``,
a.form AS ``,
a.address AS ``,
ap.name AS ``,
a.host AS ``,
a.read_count AS ``
FROM activity a
JOIN activity_publisher ap ON a.publisher_id = ap.id;
-- 视图4
-- 评论信息
DROP VIEW IF EXISTS comment_view;
CREATE VIEW comment_view AS
SELECT
c.id AS ``,
c.content AS ``,
c.user_id AS `ID`,
u.name AS ``,
c.pid AS `ID`,
c.root_id AS `ID`,
c.time AS ``,
c.fid AS `ID`,
c.module AS ``
FROM comment c
JOIN user u ON c.user_id = u.id;
-- 视图5
-- 活动报名信息
DROP VIEW IF EXISTS activity_sign_view;
CREATE VIEW activity_sign_view AS
SELECT
s.id AS ``,
a.id AS `ID`,
a.name AS ``,
u.id AS `ID`,
u.username AS ``,
s.time AS ``
FROM
activity_sign s
JOIN
activity a ON s.activity_id = a.id
JOIN
user u ON s.user_id = u.id;
-- 视图6
-- 公告信息
DROP VIEW IF EXISTS notice_view;
CREATE VIEW notice_view AS
SELECT
n.id AS ``,
n.title AS ``,
n.content AS ``,
n.time AS ``,
n.user AS ``
FROM
notice n;
-- 视图7
-- 管理员信息
DROP VIEW IF EXISTS admin_view;
CREATE VIEW admin_view AS
SELECT
ad.id AS ``,
ad.username AS ``,
ad.name AS ``,
ad.phone AS ``,
ad.email AS ``,
ad.avatar AS ``,
ad.role AS ``
FROM
admin ad;
-- 视图8
-- 用户信息
DROP VIEW IF EXISTS user_view;
CREATE VIEW user_view AS
SELECT
u.id AS ``,
u.username AS ``,
u.name AS ``,
u.phone AS ``,
u.email AS ``,
u.avatar AS ``,
u.sex AS ``,
u.info AS ``,
u.birth AS ``,
u.role AS ``
FROM
user u;
-- 视图9
-- 活动发布人信息
DROP VIEW IF EXISTS activity_publisher_view;
CREATE VIEW activity_publisher_view AS
SELECT
ap.id AS ``,
ap.username AS ``,
ap.name AS ``,
ap.phone AS ``,
ap.email AS ``,
ap.organization AS ``,
ap.address AS ``,
ap.avatar AS ``,
ap.role AS ``
FROM
activity_publisher ap;
-- 权限设置
-- 创建用户
DROP USER IF EXISTS 'admin'@'localhost';
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin_password';
DROP USER IF EXISTS 'user'@'localhost';
CREATE USER 'user'@'localhost' IDENTIFIED BY 'user_password';
DROP USER IF EXISTS 'activity_publisher'@'localhost';
CREATE USER 'activity_publisher'@'localhost' IDENTIFIED BY 'activity_publisher_password';
-- 分配管理员权限
GRANT ALL PRIVILEGES ON mymanager.* TO 'admin'@'localhost';
-- 分配普通用户权限
GRANT SELECT ON mymanager.blog TO 'user'@'localhost';
GRANT SELECT ON mymanager.comment TO 'user'@'localhost';
GRANT SELECT ON mymanager.user TO 'user'@'localhost';
GRANT INSERT ON mymanager.activity_sign TO 'user'@'localhost';
GRANT INSERT ON mymanager.comment TO 'user'@'localhost';
GRANT INSERT ON mymanager.collect TO 'user'@'localhost';
GRANT UPDATE ON mymanager.user TO 'user'@'localhost';
GRANT DELETE ON mymanager.comment TO 'user'@'localhost';
GRANT DELETE ON mymanager.activity_sign TO 'user'@'localhost';
-- 分配活动发布人权限
GRANT SELECT, INSERT, UPDATE, DELETE ON mymanager.activity TO 'activity_publisher'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;

@ -0,0 +1,66 @@
-- 1. 删除活动报名记录
-- 需求:删除用户 ID 为 5 报名的所有活动。
DELETE FROM activity_sign
WHERE user_id = 5;
-- 2. 删除特定用户的评论
-- 需求:删除用户 ID 为 8 所有的评论记录。将ID改为用户名称则该功能已经实现
DELETE FROM comment
WHERE user_id = 8;
-- 3. 删除过期的活动
-- 需求:删除所有结束时间在当前时间之前的活动。
DELETE FROM activity
WHERE end < NOW();
-- 4. 删除无效的博客
-- 需求:删除所有浏览量为 0 且发布日期超过 1 年的博客。
DELETE FROM blog
WHERE read_count = 0 AND date < NOW() - INTERVAL 1 YEAR;
-- 5. 删除发布人ID为2的活动
-- 需求删除发布人ID为2的活动。
DELETE FROM activity
WHERE publisher_id = 2;
-- 6. 删除特定博客分类下的所有博客
-- 需求:删除分类为 "深海探险" 的所有博客。
DELETE FROM blog
WHERE category_id = (SELECT id FROM category WHERE name = '深海探险');
-- 7. 删除评论中的指定内容
-- 需求:删除所有评论内容包含敏感词 "禁止" 的评论。
DELETE FROM comment
WHERE content LIKE '%非常%';
-- 8. 删除用户的数据
-- 需求:删除用户名为 testuser 的用户及其相关数据(包括博客、评论、收藏)。
DELETE FROM blog
WHERE user_id = (SELECT id FROM user WHERE username = 'testuser');
DELETE FROM comment
WHERE user_id = (SELECT id FROM user WHERE username = 'testuser');
DELETE FROM collect
WHERE user_id = (SELECT id FROM user WHERE username = 'testuser');
DELETE FROM user
WHERE username = 'testuser';
-- 9. 删除过期的收藏记录
-- 需求:删除所有收藏的活动或博客,如果它们对应的活动或博客已经被删除。
DELETE FROM collect
WHERE (fid, module) NOT IN (SELECT id, 'activity' FROM activity UNION SELECT id, 'blog' FROM blog);
-- 10. 删除不活跃的用户
-- 需求:删除没有任何活动(报名、评论等)的用户数据。
DELETE FROM user
WHERE id IN (
SELECT id
FROM (
SELECT u.id
FROM user u
LEFT JOIN activity_sign a ON u.id = a.user_id
LEFT JOIN comment c ON u.id = c.user_id
WHERE a.user_id IS NULL OR c.user_id IS NULL
) AS temp_ids
);

@ -0,0 +1,134 @@
-- 比较条件查询
-- 查询需求 1: 查询所有活动的开始时间在 2024-01-01 之后的活动信息
SELECT id, name, start, end, host
FROM activity
WHERE start > '2024-01-01';
-- 查询需求 2: 查询所有用户的生日在 1990 年至 2000 年之间的用户信息。
SELECT id, username, name, birth
FROM user
WHERE birth BETWEEN '1990-01-01' AND '2000-12-31';
-- 集合比较查询
-- 查询需求 3: 查询没有报名任何活动的用户信息。
SELECT id, username, name
FROM user
WHERE id NOT IN (SELECT user_id FROM activity_sign);
-- 查询需求 4: 查询所有已报名但尚未开始的活动的用户信息。
SELECT u.id, u.username, u.name
FROM user u
WHERE u.id IN (
SELECT user_id
FROM activity_sign
WHERE activity_id IN (
SELECT id
FROM activity
WHERE start > NOW()
)
);
-- 范围比较查询
-- 查询需求 5: 查询所有浏览量在 100 到 1000 之间的博客
SELECT id, title, read_count
FROM blog
WHERE read_count BETWEEN 100 AND 1000;
-- 查询需求 6: 查询所有活动的结束时间在当前时间前 30 天至 90 天之间的活动
SELECT id, name, start, end
FROM activity
WHERE end BETWEEN NOW() - INTERVAL 90 DAY AND NOW() - INTERVAL 30 DAY;
-- 字符串相似比较查询
-- 查询需求 7: 查询所有包含 "海洋" 字样的博客标题
SELECT id, title
FROM blog
WHERE title LIKE '%海洋%';
-- 查询需求 8: 查询所有用户名包含 "潜水" 的用户信息
SELECT id, username, name
FROM user
WHERE username LIKE '%潜水%';
-- 多表连接查询
-- 查询需求 9: 查询所有报名了活动的用户及其对应的活动信息
SELECT u.username, u.name, a.name AS activity_name, a.start
FROM user u
JOIN activity_sign s ON u.id = s.user_id
JOIN activity a ON s.activity_id = a.id;
-- 查询需求 10: 查询所有博客及其所属分类名称
SELECT b.title, c.name AS category_name
FROM blog b
JOIN category c ON b.category_id = c.id;
-- 嵌套查询
-- 查询需求 11: 查询所有用户的名字和邮箱,前提是该用户已报名了某个活动
SELECT username, email
FROM user
WHERE id IN (SELECT user_id FROM activity_sign);
-- 查询需求 12: 查询所有已发布的博客信息,前提是该博客所属的分类名称为 "水下摄影"
SELECT title, content, date
FROM blog
WHERE category_id = (SELECT id FROM category WHERE name = '水下摄影');
-- EXISTS 查询
-- 查询需求 13: 查询所有有报名活动的用户信息。
SELECT username, name
FROM user u
WHERE EXISTS (SELECT 1 FROM activity_sign s WHERE s.user_id = u.id);
-- 查询需求 14: 查询所有有发布博客的用户信息。
SELECT username, name
FROM user u
WHERE EXISTS (SELECT 1 FROM blog b WHERE b.user_id = u.id);
-- 排序查询
-- 查询需求 15: 查询浏览量最高的前 5 篇博客。
SELECT id, title, read_count
FROM blog
ORDER BY read_count DESC
LIMIT 5;
-- 查询需求 16: 查询活动表中按活动开始时间升序排列的前 10 个活动。
SELECT id, name, start, end
FROM activity
ORDER BY start ASC
LIMIT 10;
-- 聚合查询
-- 查询需求 17: 查询每个活动的报名人数。
SELECT a.name, COUNT(s.id) AS sign_up_count
FROM activity a
LEFT JOIN activity_sign s ON a.id = s.activity_id
GROUP BY a.id;
-- 查询需求 18: 查询每个分类下的博客数量。
SELECT c.name AS category_name, COUNT(b.id) AS blog_count
FROM category c
LEFT JOIN blog b ON c.id = b.category_id
GROUP BY c.id;
-- 分组查询
-- 查询需求 19: 查询每个用户参与的活动数量
SELECT u.username, COUNT(s.id) AS sign_up_count
FROM user u
LEFT JOIN activity_sign s ON u.id = s.user_id
GROUP BY u.id;
-- 查询需求 20: 查询每个分类下平均的博客浏览量。
SELECT c.name AS category_name, AVG(b.read_count) AS avg_read_count
FROM category c
LEFT JOIN blog b ON c.id = b.category_id
GROUP BY c.id;

@ -0,0 +1,60 @@
-- 1、更新用户的密码
-- 将用户名为 user123 的用户密码修改为新的密码 newpassword123。
UPDATE user
SET password = 'newpassword123'
WHERE username = 'user123';
-- 2. 更新活动的主办方信息
-- 需求:将活动 ID 为 3 的活动主办方更新为 深海探险俱乐部。
UPDATE activity
SET host = '深海探险俱乐部'
WHERE id = 3;
-- 3. 更新博客的浏览量
-- 需求:将博客 ID 为 10 的博客的浏览量增加 100。
UPDATE blog
SET read_count = read_count + 100
WHERE id = 10;
-- 4. 更新用户的头像
-- 需求:将用户名为 jack123 的用户头像修改为新的 URL。
UPDATE user
SET avatar = 'https://example.com/images/jack123_avatar.jpg'
WHERE username = 'jack123';
-- 5. 更新活动的结束时间
-- 需求:将活动 ID 为 5 的活动结束时间修改为 2025-12-31。
UPDATE activity
SET end = '2025-12-31'
WHERE id = 5;
-- 6. 更新博客内容
-- 需求:将博客 ID 为 7 的博客内容更新为新的文章内容。
UPDATE blog
SET content = '这是更新后的博客内容,包含新的视频和照片。'
WHERE id = 7;
-- 7. 更新用户的联系方式
-- 需求:将用户 ID 为 3 的用户的电话修改为新的号码 13800001111。
UPDATE user
SET phone = '13800001111'
WHERE id = 3;
-- 8. 更新活动的封面图
-- 需求:将活动 ID 为 8 的封面图修改为新的封面图片 URL。
UPDATE activity
SET cover = 'https://example.com/images/new_cover.jpg'
WHERE id = 8;
-- 9. 更新评论的内容
-- 需求:将评论 ID 为 2 的评论内容修改为新的评论内容。
UPDATE comment
SET content = '这是更新后的评论内容,提出了更多问题。'
WHERE id = 2;
-- 10. 更新博客的标签
-- 需求:将博客 ID 为 14 的博客标签更新为 ['水下摄影', '海洋探险']。
UPDATE blog
SET tags = '水下摄影, 海洋探险'
WHERE id = 14;
Loading…
Cancel
Save