前端同学大多习惯使用MongoDb数据库但是MySQL才是正儿八经开发环境中用的多的数据库,那么应该怎么样使用node.js配合MySql写一个完整的后端项目呢?
数据库部分
安装数据库
安装数据库有两种方法一种是采用命令行安装,一种是直接在官网下载,这个看个人喜好就行,我是以macOS命令行安装为例:
代码语言:javascript复制//下载工具是homebrew
//mySql8.x在使用上还有很多不兼容的地方,所以推荐下载5.7
$ brew install mysql@5.7
//下载好之后需要连接
$ brew link --force mysql@5.7
// 启动服务
$ brew services start mysql@5.7
// 输出到环境变量
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
//添加登陆密码,如果自己使用,可以不设置密码
$ mysql_secure_installation
//如果没有设置登陆密码就不加 -p
$ mysql -uroot -p
官网下载安装包的话指路 => https://dev.mysql.com/downloads/mysql/
点击红框哪里选择对应的版本,下载好了以后无情下一步即可 (有问题直接百度搜索 电脑版本 安装MySql@5.7就行)
数据库装好了
安装好以后就可以学习Sql语句啦!
介绍几个基本操作
USE 数据库名;
: 选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
SHOW DATABASES;
: 列出 MySQL 数据库管理系统的数据库列表。
图片里的四个都是自带的
SHOW TABLES;
: 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
SHOW COLUMNS FROM 数据表
: 显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
SHOW INDEX FROM 数据表;
: 显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
sql语句 SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
SQL 的数据定义语言 (DDL)
部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
CREATE DATABASE 数据库名
- 创建新数据库
CREATE TABLE 表名
- 创建新表
ALTER TABLE 操作语句
- 变更(改变)数据库表
DROP TABLE 表名
- 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
查询和更新指令构成了 SQL 的 DML 部分:
INSERT INTO - 向数据库表中插入数据
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
更多有关语句指路➡️️ or
node.js部分
express官网 连通数据库并不复杂,但是网上没找到很靠谱的教程,所以在这里简单说一下
代码语言:javascript复制.
├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.pug
├── index.pug
└── layout.pug
7 directories, 9 files
作者:yutingbai_
链接:https://juejin.cn/post/6844904066720464909
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 首先要下载mySql中间件`npm install mysql`,在npm里搜一下就能搜到用法 - 然后文件根目录下新建一个config文件夹,文件夹里新建一个db.js作为数据库的配置文件
代码语言:javascript复制const mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '****',
database: '数据库名称'
});
module.exports = {
connection
};
作者:yutingbai_
链接:https://juejin.cn/post/6844904066720464909
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 在app.js引入这个文件
代码语言:javascript复制
var { connection } = require('./config/db')
connection.connect((err)=>{
if(err){
console.log("数据库连接失败")
}
console.log("数据库连接成功")
});
作者:yutingbai_
链接:https://juejin.cn/post/6844904066720464909
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
运行项目,就成了,网上很多教程采用请求一次断开一次的写法,那样很耗费性能,不推荐。 ## 接口编写 响应模块化开发,在编写后端接口时也应该分模块
代码语言:javascript复制.
├── app.js
├── bin
│ └── www
├── common
│ └── constant.js
├── config
│ ├── db.js
│ └── sql.js
├── controllers
│ ├── messagelist.js
│ ├── msgsocket.js
│ └── postmessage.js
├── modules
│ ├── msgsocket.js
│ ├── postmessages.js
│ └── selectmessages.js
├── package-lock.json
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── auth.js
│ ├── index.js
│ └── message.js
└── views
├── error.ejs
└── index.ejs
作者:yutingbai_
链接:https://juejin.cn/post/6844904066720464909
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
config下新建sql.js目录,存放sql语句
代码语言:javascript复制//采用函数的形式编写sql语句,在调用时传参
const allmessages = (userID) => {
return `select * from msg t1 join msg_user t2 on t1.id = t2.msgid and t2.reciever = '${userID}' ORDER BY t2.createTime DESC ,t2.updateTime DESC;`
}
作者:yutingbai_
链接:https://juejin.cn/post/6844904066720464909
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。