node+mysql+express基础

node.js安装

官网下载地址: http://nodejs.cn/download/
按照需求下载,如需下载其他版本:
点击所有下载选项,修改url路由上的版本信息
在这里插入图片描述
安装: 一键安装,记住你的安装地址
配置环境变量:
1、直接搜索环境变量,点开编辑系统环境变量(系统属性-高级-环境变量)
2、系统变量–path–选中后点击编辑–新建–将安装地址复制进去–最后三个确认都要确认完
验证是否安装成功:
键盘win+R输入cmd命令行打开窗口,输入node -v查看nodejs版本,输入npm -v查看npm版本,显示版本号代表安装成功

node.js写接口

1、创建一个空文件夹demo
2、右键用vscode打开,点击终端新建一个终端
3、初始化项目 npm init,按需求填入信息或者一路回车

npm init

3、下载 express 框架、body-parser 解析post请求、

npm install express --save
npm install body-parser --save

4、新建app.js文件夹

var express = require('express')
var app = express();

// post请求的中间件(插件,专门用来解析表单 POST 请求体)
let bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// post请求
app.post('/post', function (req, res) {
  const data = req.body // 获取入参
  // 对入参做操作......
  const sendData = {
  	"status": 200,
    "msg": "操作成功",
    "data": ''
  }
  res.send(sendData)
})

// get请求
app.get('/get', function (req, res) {
  const data = req.query// 获取入参
  // 对入参做操作......
  const sendData = {
  	"status": 200,
    "msg": "操作成功",
    "data": ''
  }
  res.send(sendData)
})

app.listen(9999,function(){
    console.log('服务器启动了');
})

mysql安装

  1. 下载MySQL压缩包 https://dev.mysql.com/downloads/installer/
  2. 配置mysql:
    1)解压zip文件
    2)将解压后的压缩包文件放入路径(不要有中文路径)(这里我放在了D:下)
    3)创建配置文件:在mysql安装目录下,创建一个my.ini配置文件,然后在里面添加以下内容(mysql安装目录要改成自己的)
[mysqld]

# 设置3306端口

port=3306

# 设置mysql的安装目录

basedir=D:\mysql-8.0.32-winx64

# 设置mysql数据库的数据的存放目录

datadir=D:\mysql-8.0.32-winx64\data

# 允许最大连接数

max_connections=200

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统

max_connect_errors=10

# 服务端使用的字符集默认为UTF8

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证

default_authentication_plugin=mysql_native_password

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口

port=3306

default-character-set=utf8

[mysqld]
#查询缓存
explicit_defaults_for_timestamp=true

[mysqld]
# 设置导入导出
secure-file-priv=D:\mysql-8.0.32-winx64\file

4)配置环境变量:在path中添加 D:\mysql-8.0.32-winx64\bin

  1. 初始化mysql数据库:
    在mysql的bin目录下打开cmd,输入:mysqld --initialize-insecure
  2. 安装mysql:
    mysqld -install
    执行完后将会出现Service successfully installed.的提示
  3. 启动mysql:
    net start mysql
    执行完后显示服务启动成功,到此服务器就配置就成功了

mysql常用命令

1、连接数据库:
mysql -u username -p password

2、显示所有库名:
show database;

3、选择库名:
use 库名;

4、查看所有表:
show tables;

5、创建一个库:
create database 库名 charset utf8;

6、删除一个库:
drop database 库名;

7、创建一个表:
create table user(
id int(11),
name varchar(25)
);

8、查看表结构:
desc 表名;

9、修改表名:
rename table stu to newstu;

10、删除表:
drop table 表名;

11、向表中插入数据
insert into newstu
(id,name)
values
(1,‘zhangsan’),
(2,‘lisi’),
(3,‘wangwu’);

11-2、导入数据
insert into test.goods
select id,name,count from shop.goods;

12、查看表中全部数据
select * from newstu;

13、清空表中全部数据
truncate newstu;

14、解决表乱码
首先看下命令窗口使用的是什么格式,一般为gbk;
set names gbk;

15、存储笔记存储日志信息
tee D:\1010.sql

16、修改表的数据
update newstu
set name=‘laoliu’
where id=3;

17、删除表的数据
delete from newstu
where id=3;

18、三大类型
数字型:
字符串型:
日期类型:
date–1000-01-01-9999-12-31
time—838:59:59-838:59:59
datetime–1000-01-01 00:00:00-9999-12-31 23:59:59
year—1901-2155
timestamp
时间列随时取出当前时间:
ts timestamp default CURRENT_TIMESTAMP
建表:
sns社交网站
会员表 member
主键id,用户名,性别,体重(KG),生日,工资,上次登录时间,个人简介
create table member(
id int unsigned auto_increment primary key,
username char(20) not null default ‘’,
gender char(1) not null default ‘’,
weight tinyint unsigned not null default 0,
birth date not null default ‘0000-00-00’,
salary decimal(8,2) not null default 0.00,
lastlogin int unsigend not null default 0,
intro varchar not null default ‘’
);

19、修改表
新增列:
alter table 表名 add username char(20) not null default ‘’;
alter table 表名 add gender char(1) after username not null default ‘’;
alter table 表名 add id int not null default 0 first;
删除列:
alter table 表名 drop username;
修改列类型:
alter table 表名 modify gender char(4) not null default ‘’;
修改列:
alter table 表名 change username newname char(10) not null default ‘’;

20、查询表
where 条件查询
group by 分组
having 筛选
order by 排序
limit 限制结果条数
基本查询练习:
查询主键为32的商品详情:
select * from goods where goods_id=32;
查出不属于栏目3的所有商品
select * from goods where cat_id!=3;(<>)
查询栏目4和栏目11的商品
select * from goods where cat_id=4 or cat_id=11;
select * from goods where cat_id in (4,11);
查询价格在100到500之间的商品
select * from goods where price between 100 and 500;
总结:in为集合内,between and为范围内,not in非集合

查询以诺基亚开头的手机
select * from goods where goods_name like ‘诺基亚%’;
总结:_匹配单个任意字符,%匹配任意
as重命名
面试题修改部分数据为底整数
update goods
set count=(count/10)*10
where count between 30 and 50;

查询计算函数:
max,min、sum、svg、count
select max(price) from goods;
select count(1) from goods;

分组计算:
select goods_id,sum(goods_number) from goods
group by goods_id;

重命名后having可以查出来
查询市场价大于销售价并且差值大于200的商品
select goods_name,(marketprice-price) as diffprice
from goods
where 1
having diffprice>200;

查出不及格数大于等于2门的人的平均成绩
select name,avg(score),sum(score<60) as gks
from result
group by name
having gks>=2;

21、排序 order by
放在group by/where/having后面
降序desc / 升序asc

22、分页 limit
limit a偏移量,b取出条目数

23、子查询
虚拟表
存在exists / 不存在not exists

24、查空 is not null / is null

25、两表全连接查询
select a.name,b.name from a,b where a.id=b.id; // 无null

26、左连接
a left join b on 条件
select a.name,b.name from a left join b on a.id=b.id; // a全查,b没有对应的id的话补null

27、右连接
b right join a on 条件(跟上面相同作用)

28、内连接
a inner join b in 条件 // 不满足条件的全去掉

node.js 分模块 mysql数据库查询封装

  1. 新建一个文件夹,打开终端,初始化一下(一路回车即可)
npm init
  1. 安装mysql、express、body-parser
npm i mysql express body-parser
  1. 在根目录下新建
    1)app.js入口文件
    2)config文件夹,用来写数据库配置和封装数据库查询的
    3)router文件夹,用来将项目的接口分类
    在这里插入图片描述
  2. app.js
// app.js
const express = require('express')
const app = express();

// 导入路由
const loginRouter = require('./router/login')
const tableRouter = require('./router/table')

// post请求 中间件(插件,专门用来解析表单 POST 请求体)
let bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

//引入路由
app.use('/api', loginRouter);// /api/xxxxx
app.use('/api', tableRouter);

var server = app.listen(9999, () => {
    console.log('服务器启动了');
})
  1. config – db.config.js
// db.config.js
// 创建mysql连接
module.exports = {
  host: '127.0.0.1', // 服务器地址
  user: 'root', // mysql用户名称
  password: '111111', // mysql用户密码
  port: 3306, // 端口
  database: 'demo1', // 数据库名称
}
  1. config – db.js
// db.js
// 封装 mysql 的语句执行方法
const mysql = require('mysql');
const dbConfig = require('./db.config');

module.exports = {
    query: function(sql, params, callback) {
        //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
        const connection = mysql.createConnection(dbConfig)
        connection.connect(function(err) {
            if (err) {
                throw err
            }
            //开始数据操作
            connection.query(sql, params, function(err, results, fields) {
                if (err) {
                    connection.end(function(err) {
                        if (err) {
                            console.log('关闭数据库连接失败!')
                            throw err
                        }
                    })
                    throw err
                }
                //将查询出来的数据返回给回调函数
                callback && callback(
                                results ? JSON.parse(JSON.stringify(results)) : null,
                                fields ? JSON.parse(JSON.stringify(fields)) : null
                            )
                    //停止链接数据库,必须在查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
                connection.end(function(err) {
                    if (err) {
                        console.log('关闭数据库连接失败!')
                        throw err
                    }
                })
            })
        })
    },
}
  1. route r-- login.js
// login.js
const express = require('express')
const db = require('../config/db')
const loginRouter = express.Router()

// 登录post接口
loginRouter.post('/login', function (req, res) {
  const data = req.body // 获取入参
  let selectSQL = "select userName,password from user where userName = '"+data.username+"' and password = '"+data.password+"'";
  // 查询数据库
  db.query(selectSQL, (err, data) => {
    if (err) return console.log("查询失败");
    if (data == '') {
		res.send({
	        "status": -1,
	        "msg": "账号密码错误",
	        "data": ''
	      })
    } else {
		res.send({
	        "status": 200,
	        "msg": "登录成功!",
	        "data": ''
	      })
    }
  })
})
 
module.exports = loginRouter
  1. route r-- table.js
// table.js
const express = require('express')
const db = require('../config/db')
const tableRouter = express.Router()

// 查询商品列表post接口
tableRouter.post('/getList', function (req, res) {
  const data = req.body // 获取入参
  let selectSQL = `select * from t_table where title like "%${data.title}%" or content like "%${data.title}%"`;
  // 查询数据库
  db.query(selectSQL, (err, data) => {
    if (err) return console.log("查询失败");
    res.send({
      "status": 200,
      "msg": "操作成功",
      "data": data
    })
  })
})

// 查询权限字典get接口
tableRouter.get('/getList', function (req, res) {
  let selectSQL = `select * from t_role`;
  // 查询数据库
  db.query(selectSQL, (err, data) => {
    if (err) return console.log("查询失败");
    console.log("查询成功!");
    res.send({
      "status": 200,
      "msg": "操作成功",
      "data": data
    })
  })
})

module.exports = tableRouter
  1. 启动服务
node app.js
  1. 到浏览器访问,可以正常显示接口结果,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值