Express&&Mysql的问题
我想请问一下大家,像数据量大时的分类的数据库设计。如:有好几个不同的班级或者好几个不同的系,但他们中存储的都是学生的信息。这种情况,我认为最优解是,给每一个班级都建立一张mysql表,可我只会使用express对数据库进行增删改查,那么建表使用express应该如何操作呢
关于Express&&Mysql的问题我想请问一下大家,像数据两大需要分类的数据库设计!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7727457
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:express连接本地mysql查询数据的流程及遇到的问题
- 除此之外, 这篇博客: mysql 行转列,多行转一行,列转行,一行转多列中的 业务场景,按照上图看的话很难只看同学们的数学成绩或者语文成绩,所以要按照以下格式展示: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
s_name 数学 语文 英语 张三 90 85 92 李四 88 91 99 李四 100 82 88 思路:
第一步可以将每一行根据学科s_sub分成数学,语文,英语三列 , sql语句:case s_sub when '数学' then s_score else 0 end 数学
完整sql:
select s_name, case s_sub when '数学' then s_score else 0 end 数学, case s_sub when '语文' then s_score else 0 end 语文, case s_sub when '英语' then s_score else 0 end 英语 from student_score
结果:
最后,需要按照s_name为维度group by聚合一下select s_name, sum(case s_sub when '数学' then s_score else 0 end) 数学, sum(case s_sub when '语文' then s_score else 0 end) 语文, max(case s_sub when '英语' then s_score else 0 end) 英语 from student_score group by s_name
最终结果:
如果不是int类型而是 varchar 那么上面是行不通的,因为sum里面不能跟字符串,需要用group_concat()函数替代sum,可先看多行转一行之后再看下方sqlselect s_name, GROUP_CONCAT(case s_sub when '数学' then CAST(s_score AS char) else null end) 数学, GROUP_CONCAT(case s_sub when '语文' then CAST(s_score AS char) else null end) 语文, GROUP_CONCAT(case s_sub when '英语' then CAST(s_score AS char) else null end) 英语 from student_score group by s_name
- 以下回答来自chatgpt:
我可以为您提供以下步骤来在Express中建立一个大型学生信息管理系统的MySQL数据库,并对不同班级和系别进行分类设计:
-
首先,安装MySQL并在本地服务器上启动MySQL服务。可以按照参考资料中“MySQL安装指南”的步骤进行安装和启动。
-
创建一个数据库,可以使用MySQL命令行或MySQL Workbench进行操作。
CREATE DATABASE students;
- 创建各班级和系别所需的表。您可以为每个班级和系别创建一个MySQL表,也可以将他们都创建在同一个表中。以下是一个基本的students表的SQL语句。
CREATE TABLE students ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, stud_no INT(11) NOT NULL, class VARCHAR(255), major VARCHAR(255), PRIMARY KEY (id), INDEX (stud_no), INDEX (class), INDEX (major) );
以上SQL语句创建了一个名为students的表,其中包含了以下列:id、name、stud_no、class 和 major。它还创建了一个主键、一个stud_no索引、一个class索引和一个major索引。您可以根据需要添加或删除列和索引,以满足您的特定需求。
- 连接Express应用程序与MySQL数据库。可以使用mysql2 node.js模块来连接MySQL数据库,以下是一个连接示例:
``` const mysql = require('mysql2');
const dbConfig = { host: 'localhost', user: 'yourusername', password: 'yourpassword', database: 'students' };
const connection = mysql.createPool(dbConfig); ```
请务必将“yourusername”和“yourpassword”替换为您用于连接MySQL的实际用户名和密码。
- 将Express应用程序中的路由和控制器与MySQL数据库的表相连接。以下是一个POST请求的示例控制器,它在students表中创建一个新学生记录。
exports.createStudent = (req, res) => { const { name, stud_no, class, major } = req.body; connection.query( 'INSERT INTO students(name, stud_no, class, major) VALUES(?, ?, ?, ?)', [name, stud_no, class, major], (error, results, fields) => { if (error) throw error; res.send('New student has been created successfully.'); } ); }
该控制器从请求体中获取学生信息,并使用以下SQL语句将其插入到students表中。
INSERT INTO students(name, stud_no, class, major) VALUES(?, ?, ?, ?)
可以根据您的需要更改或扩展该控制器,以实现特定的查询和操作。
- 最后,将您的Express应用程序部署到服务器上,以便您可以在浏览器中访问它。
这些步骤应该能够帮助您在Express中建立一个大型学生信息管理系统的MySQL数据库,并对不同班级和系别进行分类设计。如果您遇到任何问题,可以查看参考资料或通过其他资源获得帮助。
-
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路