mysql

91 阅读4分钟

sql语句

  • 查询表数据(select)
-- 使用数据库my_db_01
use my_db_01;
-- 查询users数据表的所有数据
-- select * from users;
-- 条件查询 获取 username 和password的数据
-- 注意多个之间用英文逗号进行分割
select username, password from users
  • 插入(insert into)
-- 注意 列和值要一一对应 多个列和值之间 使用英文符号分割
-- 向users表中插入一条username为'Tony start', password 为'098123' 的用户数据
insert into users (username, password) value ('Tony start', '098123');

-- 查询插入后数据表
select * from users
  • 修改(update)
-- updata 用于修改表中的数据
-- update 指定要更新那个表的数据
-- 用set 指定列对应的新值
-- 用where 指定更新的条件
-- update 表名称 set 列名称 = 新值 where 列名称 = 某值
-- 把用户表中 username 为 xh 的值改为 cxk 
update users set username = 'cxk' where username = 'xh'; 
-- 把users 表中id为4 的用户密码 更新为 888888 用户名改为 lyf
update users set password ='888888', username='lyf' where id =4; 

-- 查询插入后数据表
select * from users
  • 删除(delete)
-- delete 语句用于删除表中的行 
-- 从指定的表中 根据 where 条件 删除对应的数据行
-- delete from users where 列名称 = 值
-- 从user中删除id为4的用户
delete from users where id = 4 ;
  • where的使用
-- 演示where语句的使用
-- 查询users表中id > 2 的数据
select * from users where id > 2;
-- 查询users表中username 不等于 admin的
select * from users where username != 'admin';
-- 使用and来显示所有状态为0且id小于3的用户
select * from users where status = 0 and id < 3;
-- 使用 or 来显示所有status为 1 或者 username 为 zs 的用户 
select * from users where status = 1 or username = 'zs'
  • order by 语句
-- 用于根据指定的列对结果集进行排序
-- 默认按照升序对记录进行排列 可使用 DESC 关键字进行倒序排列
-- 使用order by字句 根据status排序 升序  
select * from users order by status
-- 使用order by字句 根据ID 排序 降序 
select * from users order by id desc;
-- 多重排序 先根据status字段进行 降序排序 再按照username 字母顺序 升序排列
select * from users order by status desc, username ASC
  • COUNT(*)
-- COUNT(*)函数用于返回查询结果的总数据条数
-- select count(*) from 表名称
select count(*) from users;
-- 查询status 为 0 的总数据条数 
select count(*) from users where status = 0;
-- 使用as为查询出来的列名称设置别名
select count(*) as total from users where status = 0;

在项目中操作mysql

  • 安装
npm i mysql
  • 配置mysql模块
// 导入mysql模块
const mysql = require('mysql')

//建立与mysql数据库的连接关系
const db = mysql.createPool({
  host: "127.0.0.1", //数据库的ip地址
  user: "root", //登录数据库用户名
  password: "admin123", //登录数据库密码
  database: "my_db_01", //指定要操作那个数据库
});

// 检测mysql模块是否正常工作
db.query("select 1", (err, results) => {
  if (err) return console.log(err.message);
  console.log(results);
});
  • 查询表中所有的数据
//查询 users表中所有的数据
db.query("select * from users", (err, results) => {
   if(err) return console.log(err.message)
  //如果是查询语句返回的是一个数组 results
   console.log(results) 
})

  • 向表中插入数据
//插入数据  
//定义要插入的值 
const user = {username: 'boos', password: 'boss123'}
//定义查询语句 值可以使用?占位
const sqlStr = 'insert into users (username, password) values (?,?)'
//调用 db.query 
db.query(sqlStr, [user.username, user.password], (err,results)=>{
  if (err) return console.log(err.message);
  //如果是插入语句 result 是一个对象 affectedRows为 1表示插入成功
  if(results.affectedRows === 1){
    console.log('数据插入成功')
  }
})


//插入数据的便捷方式
//要插入导数据表中的数据对象
const user = {username: 'mood',password: 'mood123'}
//sql语句 (自动插入对象与数据表对应的值 ?表示占位符)
const SQLStr = 'insert into users set ?'
//直接将数据对象作为占位符的值
db.query(SQLStr, user, (err, result) => {
  //插入失败
  if (err) return console.log(err.message);
  //插入成功
  if (result.affectedRows) {
    console.log("数据插入成功");
  }
});

  • 更新数据
//更新数据
//要更新的数据对象
const user = {id: 9, username: 'soul', password: 'soul123'}
//sql语句
const sqlStr = 'update users set username=?, password=? where id=?'
//使用数组为?占位符赋值
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
  //err
  if (err) return console.log(err.message);
  //success
  if (results.affectedRows === 1) {
    console.log("更新数据成功");
  }
  
  
//更新数据便捷写法
const user = { id: 9, username: "moul", password: "moul123" };
//sql语句
const sqlStr = "update users set ? where id=?";
//使用数组为?占位符赋值
db.query(sqlStr, [user, user.id], (err, results) => {
  //err
  if (err) return console.log(err.message);
  //success
  if (results.affectedRows === 1) {
    console.log("更新数据成功");
  }
});
  • 删除数据
//删除数据
//sql语句
const sqlStr = 'delete from users where id=?'
db.query(sqlStr, 11, (err,result)=>{
  if (err) return console.log(err.message);
  //当执行删除语句result为一个对象
  if (result.affectedRows === 1) {
    console.log("数据删除成功");
  }
})

//标记删除 将要删除的id项status值改为1

const sqlStr = 'update users set status=? where id=?' 

db.query(sqlStr, [1, 20], (err,result)=>{
  if(err) return console.log(err.message)
  if(result.affectedRows){
    console.log('数据也被标记删除')
  }
})
  • 身份认证
  • 服务器端渲染推荐使用 Session 认证机制
  • 前后端分离项目推荐使用JWT认证机制

Express 中使用 Session 认证

  1. 安装Express-session中间件
npm install express-session