【NodeJS】数据库管理

数据库管理

零. MySql数据库相关

  • 操作关系型数据库的标准化、结构化的查询语言: SQL(structured query language)

  • MySQL属于一种关系型的数据库管理系统

  • 结构化查询语言的分类:

    1. 数据定义语言:创建、修改、删除数据库中的各种对象

      create—创建数据库

      alter—修改数据库

      drop—删除数据库

    2. 数据操纵语言:查询、修改

      select—查询

      insert—插入到表或视图

      update—修改

      Delete—删除表数据

    3. 数据控制语言:授予权限—grant、回收权限—revoke

  • mysql可以通过Navicat软件使用,也可以通过终端使用。下面是终端使用的相关代码

1. mysql相关指令
  • 登录

    默认为输入mysql -uroot -p,然后输入密码即可。

在这里插入图片描述

2. 数据库相关指令
  • 创建数据库

    create database 数据库名

    create database if not exists 数据库的名字-------如果没有则创建

在这里插入图片描述

  • 查看已有数据库

    show databases;

在这里插入图片描述

  • 打开数据库

    use 数据库名;

在这里插入图片描述

  • 删除数据库

    drop database 数据库名称;

在这里插入图片描述

3. 数据表相关指令
  • 创建表

    create table 表名(

    字段名 数据类型[(长度)] [default 默认值 各种约束],

    字段名 数据类型[(长度)] [default 默认值 各种约束],

    )[表其他属性的定义];

    如:

    create table person(

    ​ id int,

    ​ name varchar(10),

    ​ sex enum(“男”,“女”) default ‘女’

    );

在这里插入图片描述

  • 查看表

    desc 表名

在这里插入图片描述

  • 向表中插入数据

    insert into 表名 values(值1,值2,….)

  • 修改表

    alter table 表名

    add [column] 字段名 字段的定义 [first|after 字段名] --添加新字段

    |alter [column] 字段名 {set default 默认值|drop default} --设置默认值或删除默认值

    |change [column] 旧的字段名 新的字段名 字段的定义 --修改字段的名称或字段的定义

    |modify [column] 字段名 字段的新定义 --修改字段的定义

    |drop [column] 字段名 --删除字段

    |rename to 新表名

  • 删除表

    drop table [if
    exists] 表名1,表名2,…

  • 查询表

    select * from 表名; 查询表中所有字段

    select 字段名1,字段名2… from 表名 ; 查询表中的几个字段

    select name from person where age<18; 查询person表中age小于18的name

    排序:ORDER BY 字段 [ASC|DESC] []中的为设置升序还是降序

    分组: group by 字段1,字段2…

一. nodejs数据库操作

  • 数据库其实就是存放数据的仓库
  • 数据库存储的优点:方便管理数据(增,删,改)、方便查找、数据安全
  • 常用数据库管理系统:MySQL、Oracle、SQLserver
1. 数据库操作—查
  • select * from 表名
const mysql = require('mysql');

// 创建一个数据库链接
var connection = mysql.createConnection({
    host: 'localhost',  // 数据库服务器地址
    user: 'root',       // 用户名
    password: '0000',   // 密码
    database: 'text'    // 数据库名
});

// 打开链接
// connection.connect();

// 执行sql语句 
connection.query('select * from user', (error, results, fields)=>{
    if (error) throw error;
    console.log('The solution is: ', results[0].solution);
});

// 关闭链接
// connection.end();

error----错误信息

results----结果集

fields----字段的信息

注意:每次查询都是异步操作

​ 打开和关闭链接可以不写,会自动打开和关闭

2. 数据库操作—增
  • insert into 表名(字段名1,字段名2…) values (值1,值2…)
const mysql = require('mysql');

// 创建一个数据库链接
var connection = mysql.createConnection({
    host: 'localhost',  // 数据库服务器地址
    user: 'root',       // 用户名
    password: '0000',   // 密码
    database: 'text'    // 数据库名
});

// 打开链接
// connection.connect();

// 执行sql语句增
let name = 'zgsan';
let miaoshu = '6666';

connection.query(`insert into user(username,description) values ('${name}','${miaoshu}')`, (error, results, fields) => {
    if (error) throw error;
    console.log('已更改: ', results.affectedRow);   
    console.log('插入数据的id为>>>', results.insertID);  
});

// 关闭链接
// connection.end();

results.affectedRow----受影响的行数

results.insertID----所插入数据的id

3. 数据库操作—改
  • update 表名 set 字段名=值 where 条件
connection.query(`update user set username='jackaaa',description='wuwuwu' where id = 1`, (error, results, fields) => {
    if (error) throw error;
    console.log('已更改: ', results.affectedRows);   // 受影响的行数
});

只是SQL语句不一样

4. 数据库操作—删
  • delete from 表名 where 条件
connection.query(`delete from user where id = 1`, (error, results, fields) => {
    if (error) throw error;
    console.log('已更改: ', results.affectedRows);   // 受影响的行数
});

delete from user where id = 1 删除user表里id为1的数据

只是SQL语句不一样

三. 数据库练习

// 导包
const express = require('express');
const mysql = require('mysql');
const multer = require('multer');

// 创建服务器
const app = express();

// 公开访问
app.use(express.static('uploads'));

// 创建一个链接
var connection = mysql.createConnection({
    host: 'localhost',  // 数据库服务器地址
    user: 'root',       // 用户名
    password: '0000',   // 密码
    database: 'cqmanager'    // 数据库名
});

// 创建一个文件夹
var upload = multer({ dest: 'uploads/' })

/**
 * 写路由
 */
// 新增英雄
app.post('/hero/add', upload.single('heroIcon'), (req, res)=>{
    /**
     * 接收前端的参数
     * req.file.filename---可以获取回到图像名字
     * req.body---可以获取到文参数
     * */ 
    let heroIcon = 'http://127.0.0.1:8088/' + req.file.filename;
    let {heroName,heroSkill} = req.body;
    
    // 把传递过来的数据保存到数据库中
    connection.query(`insert into hero(heroName,heroSkill,heroIcon) values ('${heroName}','${heroSkill}','${heroIcon}')`, (error, results, fields) => {
        if(error == null){
            res.send({
                code:200,
                msg:'新增成功'
            });
        }else{
            res.send({
                code:500,
                msg:'新增失败'
            })
        }
    });
});

// 查询所有英雄
app.get('/hero/all', upload.single('heroIcon'), (req, res) => {
    
    connection.query('select id,heroName,heroSkill,heroIcon from hero where isDelete = "0"', (error, results, fields)=>{
        if (error == null) {
            res.send({
                code: 200,
                date: results
            });
        } else {
            res.send({
                code: 500,
                msg: '查询失败'
            })
        }
    });
});


app.listen(8088,()=>{
    console.log('服务器开启了')
})
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值