diff --git "a/30 \350\256\270\346\201\251\346\260\221/test.md" "b/30 \350\256\270\346\201\251\346\260\221/test.md" new file mode 100644 index 0000000000000000000000000000000000000000..dbe9f876eea996edb4e167847e9d091cd56716c4 --- /dev/null +++ "b/30 \350\256\270\346\201\251\346\260\221/test.md" @@ -0,0 +1,158 @@ +/* + Navicat Premium Data Transfer + + Source Server : mysql + Source Server Type : MySQL + Source Server Version : 80032 (8.0.32) + Source Host : localhost:3306 + Source Schema : class3 + + Target Server Type : MySQL + Target Server Version : 80032 (8.0.32) + File Encoding : 65001 + + Date: 09/03/2023 19:41:49 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for type +-- ---------------------------- +DROP TABLE IF EXISTS ` type`; +CREATE TABLE ` type` ( + `type_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL, + `type_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NULL DEFAULT NULL, + PRIMARY KEY (`type_id`) USING BTREE, + UNIQUE INDEX `type_name`(`type_name` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of type +-- ---------------------------- +INSERT INTO ` type` VALUES ('L04', '仙侠'); +INSERT INTO ` type` VALUES ('L02', '奇幻'); +INSERT INTO ` type` VALUES ('L03', '武侠'); +INSERT INTO ` type` VALUES ('L01', '玄幻'); +INSERT INTO ` type` VALUES ('L05', '都市'); + +-- ---------------------------- +-- Table structure for author +-- ---------------------------- +DROP TABLE IF EXISTS `author`; +CREATE TABLE `author` ( + `author_id` int NOT NULL, + `author_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL, + `credits` int NULL DEFAULT NULL, + `vip_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL, + PRIMARY KEY (`author_id`) USING BTREE, + UNIQUE INDEX `author_name`(`author_name` ASC) USING BTREE, + INDEX `rrr`(`vip_id` ASC) USING BTREE, + CONSTRAINT `rrr` FOREIGN KEY (`vip_id`) REFERENCES `vip` (`vip_id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of author +-- ---------------------------- +INSERT INTO `author` VALUES (1001, '朱逸群', 600, 'VIP01'); +INSERT INTO `author` VALUES (1002, '范建', 8510, 'VIP04'); +INSERT INTO `author` VALUES (1003, '史珍香', 981, 'VIP02'); +INSERT INTO `author` VALUES (1004, '范统', 2364, 'VIP02'); +INSERT INTO `author` VALUES (1005, '杜子腾', 257, 'VIP01'); +INSERT INTO `author` VALUES (1006, '刘产', 678, 'VIP02'); +INSERT INTO `author` VALUES (1007, '杜琦燕', 438, 'VIP03'); + +-- ---------------------------- +-- Table structure for story s +-- ---------------------------- +DROP TABLE IF EXISTS `story s`; +CREATE TABLE `story s` ( + `story_id` int NOT NULL AUTO_INCREMENT, + `author_id` int NULL DEFAULT NULL, + `type_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NULL DEFAULT NULL, + `story_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NULL DEFAULT NULL, + `views_number` int NULL DEFAULT NULL, + PRIMARY KEY (`story_id`) USING BTREE, + INDEX `author_id`(`author_id` ASC) USING BTREE, + INDEX `type_id`(`type_id` ASC) USING BTREE, + CONSTRAINT `story s_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `author` (`author_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `story s_ibfk_2` FOREIGN KEY (`type_id`) REFERENCES ` type` (`type_id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 1005 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of story s +-- ---------------------------- +INSERT INTO `story s` VALUES (1, 1002, 'L03', '母猪产后与护理师的二三事', 6541); +INSERT INTO `story s` VALUES (2, 1005, 'L04', '拖拉机大战蜘蛛侠', 563); +INSERT INTO `story s` VALUES (3, 1003, 'L01', '这只小龙虾不正经', 8754); +INSERT INTO `story s` VALUES (4, 1006, 'L04', '一个爹爹三个娃', 36354); +INSERT INTO `story s` VALUES (5, 1006, 'L01', '皇上滚开本宫只劫财', 3674); +INSERT INTO `story s` VALUES (6, 1005, 'L05', '给长城贴瓷砖的小太监', 6541); +INSERT INTO `story s` VALUES (7, 1003, 'L03', '不科学御兽', 1257); +INSERT INTO `story s` VALUES (8, 1005, 'L01', '镜面管理局', 3216); +INSERT INTO `story s` VALUES (9, 1004, 'L02', '关于我成为灭魂师之后', 1147); +INSERT INTO `story s` VALUES (10, 1004, 'L05', '公子别秀', 2078); + +-- ---------------------------- +-- Table structure for vip +-- ---------------------------- +DROP TABLE IF EXISTS `vip`; +CREATE TABLE `vip` ( + `vip_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL, + `vip_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL, + PRIMARY KEY (`vip_id`) USING BTREE, + UNIQUE INDEX `vip_name`(`vip_name` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of vip +-- ---------------------------- +INSERT INTO `vip` VALUES ('VIP02', '白银作家'); +INSERT INTO `vip` VALUES ('VIP04', '钻石作家'); +INSERT INTO `vip` VALUES ('VIP01', '青铜作家'); +INSERT INTO `vip` VALUES ('VIP03', '黄金作家'); + +SET FOREIGN_KEY_CHECKS = 1; +SELECT * from `vip`; +-- 1. 根据前面提供的表结构和表数据,创建数据库并分别创建这张四张表;并插入相关数据。(提醒:外键请注意建表顺序和插入数据的顺序) (30分) +-- 2. 将story 表中的story_name字段类型改成varchar(40) 。(2分) +alter table `story s` MODIFY story_name varchar(40); +desc `story s`; +-- 3. 在author表中增加一个性别字段 字段名:author_sex,类型 : char(10),要求默认值为'男'。 (3分) +alter table author ADD author_sex char(10) DEFAULT('男'); +SELECT * from author; +-- 4. 将作家编号为1005、1007的作家性别改为'女' 。(2分) +UPDATE author set author_sex='女' WHERE author_id=1005; +UPDATE author set author_sex='女' WHERE author_id=1007; +-- 5. 作家杜子腾,写了一篇名为《拜登夸我很帅》的都市小说,有854个浏览量,请将这条信息插入到story表。(3分) +INSERT into `story s` (story_name,views_number ) VALUES('拜登夸我很帅',854 ); +select *from `story s`; +-- 6. 《拖拉机大战蜘蛛侠》这篇小说,浏览量涨了100,请更新story表中的相关数据。(2分) +UPDATE `story s` SET views_number=views_number+100 where story_id=2; +-- 7. 请删除story表的中《皇上滚开本宫只劫财》这篇小说相关数据。(2分) +DELETE from `story s` where story_id=5; +-- 8. 查询 浏览量大于 8000的小说的作者编号和小说作品名称。(2分) +select author_id, story_name from `story s` where views_number>8000; +-- 9. 查询积分大于1000 并且会员等级高于vip03的作家所有信息。(3分) +SELECT *from author a left join vip v on a.vip_id=v.vip_id where credits>1000 and vip_id >VIP03; +select *from vip; +-- 10. 查询姓名以杜字开头的作家的姓名,积分和等级编号。(3分) +select author_name,credits, vip_id from author where author_name like '杜%' +-- 11. 查询积分在100、1000之间的作家信息,以积分降序排列。 (3分) +select * from author where credits BETWEEN 100 and 1000 ORDER BY credits desc; +-- 12. 查询出小说的总浏览量,最高浏览量,最小浏览量,平均浏览量,给字段用上中文别名。(3分) +select sum(views_number) sum ,MAX(views_number) max ,MIN(views_number) min from `story s`; +select *from `story s`; +-- 13. 查询各种等级的作家的平均积分和作家数量,并对查询结果使用中文别名。(3分) +SELECT vip_id 等级编号, AVG(credits) avg ,count(author_name) count from author GROUP BY vip_id;; +-- 14. 查询小说数量大于等于2的分类编号和小说数量。(4分) +select type_id ,cout(sumtype_id) from type t left join story s s on t.type_id=s.type_id where views_number>2; +-- 15. 查询所有小说中浏览量最少的书的作品编号、作品名称和类型编号、浏览量。(4分) +select author_id,story_name,type_id,views_number from `story s` where views_number=(select min(views_number) from`story s`); +-- 16. 查询积分比刘产高的作者所有信息。(5分) +select * from author where credits>(SELECT credits FROM author WHERE author_name = '刘产'); +-- 17. 查询出哪些白银作家是没有写小说的,显示这些作家的姓名、等级名称。(8分) +select a.author_name,b.vip_name from author a left join vip b on a.vip_id=b.vip_id where b.vip_name ='白银作家' and author_id in(select author_id from `story s` where author_id is null); +-- 18. 找出写过作品浏览量大于5000的作家的所有作品中浏览量不到1000的作品信息(8分) +-- 19. 查询所有小说的小说编号、小说名称、浏览量、分类名称、作者姓名、作者积分、作者等级名称,结果字段要用中文别名,并按浏览量降序排列,如果浏览量一样的,再按积分降序排列。(10分) \ No newline at end of file