在nodejs中操作数据库--express项目

首先:安装第三方的mysql数据库、连接到mysql数据库(建立连接)、执行sql语句操作数据库(可以执行SQL语句操作数据库)

 npm init -y  ---建立项目管理包

  npm install mysql

 配置mysql模块___我使用的是XAMPP自带的mysql

 导入mysql数据库:require('mysql')

建立与mysql的数据库连接:mysql.creatPool({host:''数据库的ip地址 user:''登录数据库的账号,password登录数据库的密码 database:指定要操作的数据库 port端口3306})

测试mysql数据库是否可以正常工作

db.query('SQL语句',(err,results)=>{

    if(err) return console.log(err.message)

    console.log(results)--------此结果可以正常打印输出就表示数据库连接正常

})

 select 1不需要任何字段,只是用于判断是否连接成功

//"mysql:host=localhost;dbname=world","root","");//NEW创建对象 PDO参数:数据库名称 服务器 用户名 密码
const mysql=require('mysql')


//建立与mysql的数据库连接
const db=mysql.createPool({
    host:'localhost',
    user:'root',
    password:'',
    database:'test',
    port:'3306'
})
//测试mysql能否正常使用
db.query('select 1',(err,results)=>{
    if(err) return console.log(err.message)
    console.log(results)
})

查询base表中的信息 err是错误对象_db.query(sqlStr,(err,results)=>{

 

const mysql=require('mysql')


//建立与mysql的数据库连接
const db=mysql.createPool({
    host:'localhost',
    user:'root',
    password:'',
    database:'test',
    port:'3306'
})

const sqlStr='select * from base'//sql语句

db.query(sqlStr,(err,results)=>{
    if(err) return console.log(err.message)
    console.log(results)
})

 查询的结果是数组;数组里面的是对象。每一个对象都是RowDataPacket类型,里面包含的内容是我们数据表中的字段名称;可以拿到表中的所有数据----执行select(查询)语句;输出的结果是数组


 插入数据:定义要插入的数据----定义sql语句(通过?对数据进行占位)——使用db.query(sqlStr,[对前面的?占位符指定具体的值](err,results)方法进行数据的传入

待执行的SQL语句中,待执行的SQL语句,其中的英文?表示占位符,使用数组的形式依次为?占位符指定具体的值——执行回调函数 results对象上的属性影响的行数==1表示插入成功

查询语句results输出的数组,插入语句,执行的结果是一个对象,对象中有个属性affectedRows===1

const a={name:'黎明',age:'9'}
const sqlStr1='insert into base(name,age)values(?,?)'
db.query(sqlStr1,[a.name,a.age],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('插入成功')
    } 
})

 id具有唯一性,前面我进行了数据的删除,id为其他的已经被占用了,所以无法被使用,


 插入语句的属性如果有很多;便捷方式

向表中新增数据是,如果每个数据对象的每个属性和数据表的字段一一对应,则可以通过一个占位符进行直接是使用 使用的是insert into set ---会将每一个属性、转成对应的字段,每一个属性对应的值转换为字段的值

const a={name:'四月',age:'90'}
const sqlStr1='insert into base set ?'
db.query(sqlStr1,a,(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('插入成功')
    } 
})

 


 更新数据--与插入类似——执行的结果是对象,可以用属性进行访问--where条件必须写

const a={id:9,name:'四月',age:'90'}
const sqlStr2='update base set name=?,age=? where id=?' //?表示占位---加限定条件,不然整张表都可能变
db.query(sqlStr2,[a.name,a.age,a.id],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('更新成功')
    } 
})

 更新的简便方法:使用set--填入的是对象

//更新便捷方式
const a={id:9,name:'百点',age:'91'}
const sqlStr2='update base set ? where id=?' //?表示占位---加限定条件,不然整张表都可能变
db.query(sqlStr2,[a,a.id],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('更新成功')
    } 
})

 


 删除数据--最好使用id这个唯一标识进行删除--db.query()执行sql语句的同时,为占位符指定具体的值,注意sql语句只有一个占位符,则可以省略数组。直接把值进行填入。

//删除数据
const sqlStr2='delete from base  where id=?' //?表示占位---加限定条件,不然整张表都可能变
db.query(sqlStr2,9,(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('删除成功')
    } 
})


标记删除:直接删除是不安全,保险起见,使用标记删除,来模拟删除的动作,标记删除是在表中设置类似与status这样的状态字段,来标记当前的这条数据是否被删除,当用户进行delete语句,实际上没有执行delete操作,而是执行了update语句,将这段语句标记成删除

//标记删除
const sqlStr3='update base set status=? where id=?' //?表示占位---加限定条件,不然整张表都可能变
db.query(sqlStr3,[1,11],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows===1){
        console.log('标记删除(实际上是更新)成功')
    } 
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值