共计 3516 个字符,预计需要花费 9 分钟才能阅读完成。
明天完结的挺早,因为明天的内容还能够不是很难,明天全程是学了一些对于 mysql 数据库和 sql 查问语句的内容包含在 node 终端外面怎么来连贯数据库。通过明天的一个学习,我感觉离那个境地越来越近了,就是那个本人实现一个网站,有服务器、有响应,就跟当初这些上线的网站一样一样的,越来越近了。
1.
这些内容其实上学期间就学过了,当初次要是拿来温习一下。
首先咱们先理解一下数据库的基本概念,用来组织、存储,治理数据的仓库。
咱们传统型数据库(mysql、sql、Oracle)的一个数据结构为:数据库》数据表》数据行》字段
库、表、行、字段之间的一些关系:
①每个我的项目都有独立的数据库文件
②不同的数据要放在不同的表中,比方一个用户信息就应该放到 user 表中
③每个表要寄存哪些信息是由字段来决定的
④表中的行代表一条具体的数据
1.1
装置配置 mysql,其实还是有一些步骤的,倡议 baidu 就不多赘述了这里。
而后装好后用 workbench 去创立一个数据库再去创立一个表这个时候就有一些数据类型参考了,常见的 int 整数型,varchar 字符串型、tinyint 是布尔值
包含还有一些非凡标识,pk 代表主键具备惟一标识,nn 是 not null 不能为空值,uq 是值惟一,ai 是值会自增
1.2
下面是通过用那个工具去写一些数据进去,然而咱们是程序员那必定是要用代码来实现的,sql 结构化查询语言来了,专门搞数据库的语言。
无非就是四个增删改查,我说一下一些留神点,而后就可以看代码就行了。
首先是增这里的列名和值必须要一一对应就没有了
-- 通过 * 把 users 表中所有的数据查问进去
-- select * from users
-- 从 users 表中把 username 和 password 对应的数据查问进去
-- select username, password from users
-- 向 users 表中,插入新数据,username 的值为 tony stark password 的值为 098123
-- insert into users (username, password) values ('tony stark', '098123')
-- select * from users
-- 将 id 为 4 的用户明码,更新成 888888
-- update users set password='888888' where id=4
-- select * from users
-- 更新 id 为 2 的用户,把用户明码更新为 admin123 同时,把用户的状态更新为 1
-- update users set password='admin123', status=1 where id=2
-- select * from users
-- 删除 users 表中,id 为 4 的用户
-- delete from users where id=4
-- select * from users
-- and 运算符
-- select * from users where id = 1 and username = '2'
-- select * from users where id = 1 or username = '2'
-- oder by
-- select * from users order by id desc
-- count
select count(*) as total from users where status = 0
1.3
看到 mysql 模块
怎么在我的项目中来操作一个 mysql
首先要装置通过 npm 而后要配置来连贯那个数据库,再去执行一些语句,次要实现的性能还是一个增删查改
留神
查:返回的是一个数组
增:sql 语句中用?先来作为占位符先不填充数据,前面的也是这样,返回的是一个对象,外面有一个属性 affectedRows 也就是被影响的行,要等于一这个操作能力被算作失效,
而后因为咱们的 id 具备惟一标识性,所以如果你删了 4,又去减少一个那么他的 id 是 5 不是 4,增有便捷版操作
改:也有便捷版,也返回的是一个对象,留神他的便捷版的 where 条件不可能省略
删:举荐以 id 这个惟一标识符作为条件来删除,而后咱们 delete 就是真的从数据库删除了,其实是有点危险的,因为万一用户反悔了想复原回来,这个时候就没方法了,所以咱们个别是用标记删除,也就是通过 update 来改相似于 status 的值来达到一个模仿删除的操作,并没有真正从数据库删除
// 1. 后面如果通过 npm 装置了 mysql 第三方包后,就须要配置一下 mysql 模块了
// 首先是导入
const mysql = require('mysql')
// 通过 mysql.createPool 来配置
const db = mysql.createPool({
host : '127.0.0.1', // 数据库的 ip 地址
user : 'root' , // 登录数据库的账号
password : 'admin123', // 登录数据库明码
database : 'my_db_01' // 指定要操作哪个数据库
})
// 2. 测试 mysql
// select 1 没有任何作用只是能够测试是否连贯胜利
db.query('select 1' ,(err, results) => {if (err) return err.message
return console.log(results);
})
// 3. 查问数据
db.query('select * from users', (err, results) => {if (err) return err.message
return console.log(results);
})
// 4. 插入数据
/* let obj = {
username : '流星',
password : '653213'
} */
// 4.1 留神 sql 语句中可用?来占位
/* let insertStr = 'insert into users(username, password) values (?,?)'
// 4.2 应用数组的模式能够顺次去填补?外面的值
db.query(insertStr, [obj.username, obj.password] ,(err, results) => {if (err) return err.message
// 4.3 用到 rsults 的一个属性 示意影响的行数,只有当为一才示意真正的插入胜利了
if (results.affectedRows == 1) return console.log('数据增加胜利');
}) */
// 4.2 插入数据便捷版
/* let obj = {
username : 'jj',
password : '653213'
}
let insertStr = 'insert into users set ?'
// 4.2 应用数组的模式能够顺次去填补?外面的值
db.query(insertStr, obj ,(err, results) => {if (err) return err.message
// 4.3 用到 rsults 的一个属性 示意影响的行数,只有当为一才示意真正的插入胜利了
if (results.affectedRows == 1) return console.log('数据增加胜利');
}) */
// 5. 改数据
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set username = ? , password = ? where id = ?'
db.query(updateStr, [user.username, user.password, user.id], (err, results) => {if (err) {return err.message} else if (results.affectedRows == 1) {return console.log('更新数据胜利');
}
}) */
// 5.1 便捷版
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set ? where id = ?'
db.query(updateStr, [user, user.id], (err, results) => {if (err) {return err.message} else if (results.affectedRows == 1) {return console.log('更新数据胜利');
}
}) */
// 6. 删除数据
let deleteStr = 'delete from users where id = ?'
db.query(deleteStr, 9, (err, results) => {if (err) {return err.message} else if (results.affectedRows == 1) {return console.log('删除数据胜利');
}
})