6月24日
1、数据库需求
1、某个学院打算编写一套软件,这个软件对学生管理工作起作用,软件中需要包含的功能有学生基础信息、学生宿舍信息,学生学习成绩,学生选修科目等信息。 请根据软件功能写出表的结构信息。
合理化解决问题
1、记录需求 2、把需求的名词、动词全部列出来 3、把无关的内容排除掉 4、合并同类需求 5、找出隐藏的需求 6、把模糊的内容明确化
绘制图的软件网址:ProcessOn思维导图流程图-在线画思维导图流程图_在线作图实时协作
绘制ER图
初步ER图:
创建数据库,推荐配置:
一键式数据库代码:
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for depart -- ---------------------------- DROP TABLE IF EXISTS `depart`; CREATE TABLE `depart` ( `depart_id` int(11) NOT NULL COMMENT '院系id', `depart_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '院系名称', `depart_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '院办电话', `depart_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '院办地址', PRIMARY KEY (`depart_id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_icelandic_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of depart -- ---------------------------- INSERT INTO `depart` VALUES (10000, '计算机学院', '66668888', '计算机专业楼'); INSERT INTO `depart` VALUES (10001, '物理学院', '66668889', '物理专业楼'); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `stu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id号', `stu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '学生姓名', `stu_no` int(11) NOT NULL COMMENT '学生学号', `depart_id` int(11) NOT NULL COMMENT '院系id', `stu_card_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '身份证号', `stu_subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci NOT NULL COMMENT '专业信息', PRIMARY KEY (`stu_id`) USING BTREE, INDEX `student_depart_id`(`depart_id`) USING BTREE, CONSTRAINT `student_depart_id` FOREIGN KEY (`depart_id`) REFERENCES `depart` (`depart_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_icelandic_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (6, '张三', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (8, '张三', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (9, '李四', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (10, '王五', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (11, '小陈', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (12, '小红', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (13, '小明', 210101001, 10000, '41010119990101103005', '计科'); INSERT INTO `student` VALUES (14, '小明', 210101001, 10000, '41010119990101103005', '计科'); SET FOREIGN_KEY_CHECKS = 1;
其中注意不同表的外键的联系,如图所示:
学生student表:
部门depart表:
以下是学生表的外键student_depart_id图:
简单温习一下sql语句,简单基础:
-- INSERT -- INSERT INTO 表名 (列名,列名,...) VALUES(值1,值2...) INSERT INTO student (stu_name,stu_no,depart_id,stu_card_no,stu_subject) VALUES ('小明',210101001,10000,'41010119990101103005','计科'); -- DELETE -- DELETE FROM 表名 where 条件语句 (按照id进行删除) -- 条件运算符 = != <> > < DELETE FROM student where stu_id = 7; -- UPDATE -- UPDATE 表名 set 列=值,列=值, where 条件语句 -- 把数据库表中id是8的同学的名字改成张三 UPDATE student set stu_name='张三' where stu_id = 8; -- SELECT SELECT * FROM student;-- 查询所有学生信息 -- 基础查询语句 SELECT * FROM 表名 limit 参数1:从第几行数据后查,参数2:查询多少行 SELECT * FROM student LIMIT 0,5; SELECT * FROM student LIMIT 5,5; -- SELECT * FROM 表名 WHERE 查询条件 -- WHERE 查询条件 多个条件 使用 and 和 or 进行连接 and(&&) 和 or(||) 有优先级 SELECT * FROM student WHERE stu_name = '王五' && depart_id = 10000 LIMIT 0,3; -- 统计运算符 -- sum() count() avg() mav() min() SELECT count(1) from student;-- 统计总行数,使用count(*)也可以 SELECT sum(stu_no) FROM student;-- 学号总额 SELECT avg(stu_no) FROM student;-- 学号平均数