node进阶第三天(Sql数据库基本使用,node操作数据库)

本文介绍了使用数据库存储数据的原因,对比文本文件存储的优势,并详细讲解了如何通过Node.js连接和操作MySQL数据库,包括安装配置、基本SQL操作及示例。

1.为什么要使用数据库存储数据?

因为以文本文件的方式存储数据有3个明显的缺点

1.之前存储在文本文件data.json的方式不安全,直接存储在文本文件中,无法进行加密操作,安全性低

2.数据存取不方便,维护和拓展麻烦

3.存储分散,管理不便

4.数据库相比文本文件

  • 支持 结构化查询语言(Sql)的数据库,叫做 Sql数据库
  • Sql是一种查询语言,能够很方便的对数据进行CRUD(增删改查)

2-安装配置mysqlnavicat

安装单独的mysql服务

navicat傻瓜式安装、一键激活(建议安装navicat时候选择默认安装路径,方便一键激活)

3-数据库可视化工具navicat的基本使用

链接

在这里插入图片描述

新建数据库

在这里插入图片描述

新建设置

在这里插入图片描述

新建表与保存表

在这里插入图片描述

设计表

在这里插入图片描述

设计表说明

设计表-设置字段类型

**金钥匙-主键:是用来标识数据表中每一行数据的唯一性的,类似于身份证号码,通常给id设置主键并给id设置自动递增 使得每个id的值不一样 **

勾选了Int 类型的 Id为 自动增长,则每次写入数据的时候,可以不提供id,数据库会自动写入一个Id

注意细节

在这里插入图片描述

给某个字段设置默认属性时,如果设置的值不是数字,则需要添加""引号

3-使用Sql语句对数据库执行基本操作

查询

在这里插入图片描述

新增

在这里插入图片描述

修改

在这里插入图片描述

删除

在这里插入图片描述

常用函数

在这里插入图片描述

4-使用node操作数据库

安装mysql模块 npm install mysql -S

连接数据库
// 导入MySQL模块
var mysql = require('mysql');

// 创建一个数据库连接
const connection = mysql.createPool({
  host: 'localhost', // 主机
  user: 'root', // 用户名
  password: 'root', // 密码
  database: 'mybase58' // 你想操作的数据库的名称
})

// 连接数据库或打开数据库
connection.connect();
查询
app.get('/', (req, res) => {
  // 查询
  let sql = 'select * from users'
  // 调用query方法可以实现指定的Sql语句,执行完之后,会调用指定的回调函数,同时给回调函数传入三个参数
  // err:操作失败的错误信息
  // results:操作成功的msyql服务器的返回结果,查询返回结果集,在这里,返回的数据格式是数组
  // fields:查询特有的返回数据,主要用于描述数据表及字段的相关信息,对于前台业务的影响不大---别理它,只有查询会有
  // connection.query(sql语句,(err,results,fields)=>{})
  conn.query(sql, (err, results, fields) => {
    if (err) {
      console.log(err)
    }
    else {
      console.log(results)
      console.log(typeof results)
      console.log('-------------------------------------')
      console.log(fields)

      res.json(results)
    }
  })
增加
// 模拟客户端
  let obj = {
    name: 'hanmeimei',
    age: 15,
    gender: '女',
    address: '黑马105'
  }
  
  let sql = `insert into users(name,age,gender,address) values('${obj.name}','${obj.age}','${obj.gender}','${obj.address}')`
  ----------------------------------------------
  参数化查询,可以以参数的形式定义用户数据
  let sql = 'insert into users(name,age,gender,address) values(?,?,?,?)'
  
  *下面这种写法,会根据你所传入的数据对象自动的生成sql语句
  // 它会根据对象的属性自动的生成sql语句
  // 对象中拥有的属性名就是你要插入的字段名称  insert into users(username,age,gender,address)
  let sql = 'insert into users set ?'
  
  // 参数值有这么几个细节:
  // 1. 值的数量必须和参数的数量一致
  // 2. 顺序需要一致,它们是一一对应的
  // 3. 如果有多个参数,则需要使用[]数组的形式来设置
  // 4. 你也可以直接传入一个对象,传入对象的时候不用加[]
  connection.query(sql, [参数值], (err, results, filed) => { })

修改
let obj = {
    id: 7,
    name: 'nancy',
    age: 24,
    gender: '女',
    address: '华盛顿'
  }

  let sql = `update users set name = '${obj.name}',age= '${obj.age}',gender = '${obj.gender}',address = '${obj.address}' where id =
   '${obj.id}'`
  ----------------------------------------
  // 它会根据你所传入的对象的属性生成对应的Sql语句
  let sql = 'update users set ? where id = ?'

  connection.query(sql, [obj, obj.id], (err, results, filed) => {})
删除
let age = 16

let sql = `delete from users where age = ${age}`
-----------------------------
let id = 10
let sql = `delete from users where id = ?`
connection.query(sql, [9], (err, results, filed) => {})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值