# 4.sequelize 操作表增删改查

# 1.增删改查对应的函数

sql 函数
select findAll,findOne,findByPk,findAndCountAll
update update
insert create
delete delete

# 2.查询

# 2.1 查询单条数据
const user = await ctx.model.User.findOne({
  attributes: ['id', 'name'],
  where: { id },
  order: ['showCount', 'DESC'],
})
// 字段重命名,将name重命名为myName,返回结果的字段里就是myName
attributes: ['id', ['name','myName']],

// 或者以下

const user = await ctx.model.User.findByPk(1)
# 2.2 查询多条数据
const { app } = ctx
const { gt } = app.Sequelize.Op
const user = await ctx.model.User.findAll({
  where: {
    id: {
      [gt]: 6, // id>6
    },
  },
  limit: 10,
  offset: 0,
})
# 2.3 分组查询,分组查询通常与聚合函数一起使用,聚合函数包括
聚合函数 功能
COUNT 用于统计记录条数
SUM 用于计算字段的值的总和
AVG 用于计算字段的值的平均值
MAX 用于查找查询字段的最大值
MIN 用于查找查询字段的最小值
//求userbiao中id字段值的和,输出sumId
const { ctx, app } = this
const { fn, col } = app.Sequelize
// fn指的是函数,col指的是字段
const res = await ctx.model.Egguser.findAll({
  attributes: [[fn('SUM', col('id')), 'sumId']],
})
ctx.body = {
  status: 200,
  data: res,
}
// sql 语句

SELECT SUM(`id`) AS `sumId` FROM `egguser` AS `egguser`;

# 3. 新增

// id自增的时候,不需要传入
const res = await ctx.model.Egguser.create({name,password)

# 4. 修改

// 修改之前判断数据是否存在,存在再修改
const user = await ctx.model.User.findByPk(id)
await user.update({ name, password }, { where: { id } })

# 5. 删除

// 删除之前判断数据是否存在,存在再删除
const user = await ctx.model.User.findByPk(id)
await user.destroy()