数据以表格形式存储,通过设定的字段对每一行数据进行划分。
express连接数据库的流程
//1.导入
const mysql = require('mysql')
//2.CretaePool生成连接对象
const db = mysql.createPool({
// 数据库的Ip地址
host: '127.0.0.1',
// 数据库权限用户验证
user: 'root',
password: "admin123",
// 指定操作库
database: 'users'
})
3.db.query发送sq语句,回调中result返回内容如下表连接成功
db.query('select 1', (err, result) => {
if (err) { console.log(err); return }
console.log(result)// 返回[ RowDataPacket { '1': 1 } ]为连接成功
})
sql语句操作
// 1.查询
db.query('select * from users where status =0', (err, result) => {
if (err) { console.log(err); return }
// 返回一个数组包含每一行所有字段信息。
console.log(result)
})
// 2.// 插入数据操作
const user = { username: '亚索', password: 123 }
// insert into 表名,(字段) value(?:表占位符接收对应字段值)
const sqlStr = 'insert into users (username,password) value (?,?)'
//db.query(执行语句,[占位符接收的值,如果值.length=1可不使用数组包裹],完成回调)
db.query(sqlStr, [user.name, user.password], (err, results) => {
if (err) { console.log(err); return }
// 检测是否插入:affectedRows 检测影响行数,如果为1则表插入成功
if (results.affectedRows === 1) {
console.log('插入成功')
}
})
// 简写:定义的对象属性名对应字段名,值对应字段值。
/*const user = { username: 'zed', password: 123 }
const sqlStr = 'insert into users set ?'
db.query(sqlStr, user, (err, results) => {
if (err) { console.log(err); return }
if (results.affectedRows === 1) {
console.log('插入成功')
}
})
*/
3. // 更新数据
const user = { username: "快乐风男", password: 123456, id: 5 }
// 使用占位符接受修改的值
const str = 'update users set username=?,password=? where id =?'
db.query(str, [user.username, user.password, user.id], (err, res) => {
if (err) { console.log(err); return }
if (res.affectedRows === 1) {
select()
}
})*/
// 简写
/*const user = { username: "风男", password: 123456, id: 5 }
const str = 'update users set? where id=?'
// 【user】自动进行对对象名与值的提取
db.query(str, [user, user.id], (err, res) => {
if (err) { console.log(err); return }
if (res.affectedRows === 1) {
select()
}
})*/
4. 删除
// delete不推荐使用:删了就真删了。
/*const str = 'delete from users where id = ?'
db.query(str, 10, (err, res) => {
if (err) { console.log(err); return }
if (res.affectedRows === 1) {
select()
}
})*/
// 标记删除:通过更新状态值来表示用户被删除,这条数据依旧存在
const str = 'update users set status=? where id = ?'
db.query(str, [1, 2], (err, res) => {
if (err) { console.log(err); return }
if (res.affectedRows === 1) {
select()
}
})
-- 按照 id 对结果进行降序的排序 desc 表示降序排序 asc 表示升序排序(默认情况下,就是升序排序的)
select * from users order by id desc
-- 对 users 表中的数据,先按照 status 进行降序排序,再按照 username 字母的顺序,进行升序的排序
select * from users order by status desc, username asc
-- 使用 count(*) 来统计 users 表中,状态为 0 用户的总数量
select count(*) from users where status=0
-- 使用 AS 关键字给列起别名
select count(*) as total from users where status=0
select username as uname, password as upwd from users