首先:安装第三方的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语句中,待执行的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('插入成功')
- }
- })


- 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('更新成功')
- }
- })


- //更新便捷方式
- 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('标记删除(实际上是更新)成功')
- }
- })

