Sequlize查询接口

本文详细介绍了如何使用Sequlize进行SQL查询,包括Select操作中的属性别名和聚合函数,Where条件的设置,以及Order排序的用法。通过示例展示了在Sequelize中如何实现这些常见SQL查询功能。
摘要由CSDN通过智能技术生成

准备好model


以下使用中, sequlize为 数据库连接后得到的对象, model为sequlize定义的 对应表的模型.

Sql –Select –sequelize

  • 一般情况
model.findAll(
 attribute: ['name', 'age']
);
// 相当于sql中 select name,age from tableName

// 说明
/* 
在sequlize中,使用attribute以数组的形式来表明要选择的 数据库表的属性,
如果不设置,默认 表 中 所有字段 都选上.
*/
  • 为属性取别名
model.findAll(
 attribute: ['name', ['age', 'user_name']]
);
// 相当于sql中 select name,age as user_name from tableName

// 说明
/*attribute数组中某个属性要取别名, 可以 将该属性 替换成 一个数组, 数组格式为: ['原先的属性名称', '要设置的别名']*/
  • 使用聚合函数
 model.findAll(
 attribute: ['name', [sequlize.fn('COUNT', sequlize.col('colName')), 'alias']]
);
// 相当于sql中 select name,COUNT(colName) as aliasName from tableName

// 说明
/*
sequlize.fn('函数的名字', '函数的其它参数')
因此在 上述语句中,有一下功能:
 1. 使用COUNT函数,参数为 COUNT的参数为colName
 2. 使用数组为该聚合属性 设置别名 alias,便于获取该属性值
*/
  • 便利的设置
    以下不理解inlucde中 查询结果中 字段gf会被 他的统计字段替换???
// include

 // 如果要选取表中所有属性,仅仅是要增加新的属性.
    model.findAll({
        attribute: ['name', 'age', 'school', [sequelize.fn('COUNT', sequelize.col('gf')), 'life']]
    });

    // 替换成sequelize便捷操作
     model.findAll({
        attribute: {include: [
        [sequelize.fn('COUNT', sequelize.col('gf')), 'life']]
    });

// 相当于 select name,age,school,COUNT(gf) as life from tableName

// 说明
/*
include 会将所有的表的属性选上,并包括数组中的新的属性
因此在 上述语句中,有一下功能:
  1. 选择所有表的字段
  2. 将聚合新字段加入搜索结果中
*/
// extend

// 如果要选取表中所有属性,仅仅是要排其中某个属性.
    model.findAll({
        attribute: ['name', 'age']]
    });

    // 替换成sequelize便捷操作
     model.findAll({
        attribute: {exclude: ['school']
    });

// 去除school,相当于 select name,age from tableName

// 说明
/*
exclude 会将所有的表的属性选上,并包括数组中的新的属性
因此在 上述语句中,有以下功能:
  1. 选择所有表的字段
  2. 将school字段排除
*/

Sql –Where –sequelize

sql中的where 对应 sequelize查询对象中的where.

  • 一般使用
model.findAll({
  where: {
    name: '@sunhao'
 }      
});

// 相当于 select * from tableName where name=`@sunhao`

// 说明
/*
where 应该赋值为对象.
普通的键值对,被作为相等条件处理.
*/


  • 其他的操作符

sequlize支持有很多操作符号,一下为我常用的(初学者):
$and: {a: 5} // AND (a = 5)
$or: [{a: 5}, {a: 6}] // (a = 5 OR a = 6)
$gt: 6, // > 6 greater than
$gte: 6, // >= 6 greater than equla
$lt: 10, // < 10 less than
$lte: 10, // <= 10 less than eqaul
$ne: 20, // != 20 not equal
$not: true, // IS NOT TRUE
$between: [6, 10], // BETWEEN 6 AND 10
$notBetween: [11, 15], // NOT BETWEEN 11 AND 15
$in: [1, 2], // IN [1, 2]
$notIn: [1, 2], // NOT IN [1, 2]
$like: ‘%hat’, // LIKE ‘%hat’
$notLike: ‘%hat’ // NOT LIKE ‘%hat’

sql -order -sequelize

根据字段排序

model.findAll({
  order: [
  ['age', 'DESC'],
 ['name'
  ]
});

// 或者 对单个属性(默认递增)
model.findAll({
  order: 'age'
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值