模型提供了多种方法来查询数据:

find 查询单条数据

select 查询多条数据

count 查询总条数

countSelect 分页查询数据

max 查询字段的最大值

avg 查询字段的平均值

min 查询字段的最小值

sum 对字段值进行求和

getField 查询指定字段的值

1)find 查询单条语句

model.find(options)

options {Object} 操作选项,会通过 parseOptions 方法解析

return {Promise} 返回单条数据

查询单条数据,返回的数据类型为对象。如果未查询到相关数据,返回值为 {}。

module.exports=class extends think.Controller{

async listAction(){

let model =this.model('user');

let data=await model.where({name: 'thinkjs'}).find();

//data returns {name: 'thinkjs', email: 'admin@thinkjs.org,...'}

if(think.isEmpty(data)){

//内容为空时的处理

}

}

}

可通过think.isEmpty 方法判断返回值是否为空。

2)select查询多条语句

model.select(options)

options{Object} 操作选项

return{Promise} 返回多条数据

查询多条数据,返回的数据类型为数组。如未查询到相关数据,返回值为[ ].

module.exports=class extends think.Controller {

async listAction(){

let model=this.model('user');

let data=await model.limit(2).select();

//data returns [{name:'thinkjs',email: 'admin@thinkjs.org'},...]

if(think.isEmpty(data)){

}

}

}

可通过think.isEmpty方法判断返回值是否为空。

3)count 返回总条数

model.count(field)

field{String} 字段名,如果不指定那么值为 *

return{Promise} 返回总条数

获取总条数。

module.exports = class extends think.Model{

//获取字段值之和

getScoreCount(){

//SELECT COUT (score) AS think_count FROM 'test_d' LIMIT 1

return this.count('score');

}

}

model.sum(field)

field{String} 字段名

return{Promise} 返回总条数

对字段值进行求和。

module.exports = class extends think.Model{

//获取字段值之和

getScoreCount(){

//SELECT SUM(score) AS think_sum FROM 'test_d' LIMIT 1

return this.sum('score');

}

}

model.min(field)

field{String} 字段名

return{Promise}

求字段的最小值。

module.exports = class extends think.Model{

//获取字段最小值

getScoreMin(){

//SELECT MIN (score) AS think_min FROM 'test_d' LIMIT 1

return this.min('score');

}

}

model.max(field)

field{String} 字段名

return{Promise}

求字段的最大值。

module.exports = class extends think.Model{

//获取字段最大值

getScoreMax(){

//SELECT MAX (score) AS think_max FROM 'test_d' LIMIT 1

return this.max('score');

}

}

model.avg(field)

field{String} 字段名

return{Promise}

求字段的平均值。

module.exports = class extends think.Model{

//获取平均分

getScoreCount(){

//SELECT AVG (score) AS think_avg FROM 'test_d' LIMIT 1

return this.avg('score');

}

}

4) getField 查询指定字段的值

model.getField(field,num)

field{String} 字段名,多个字段用逗号隔开

num {Boolean |Number} 需要的条数

return{Promise}

获取特定字段的值,可以设置where/group等条件

获取单个字段的所有列表

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id');

//data=[1,2,3,4,5]

}

}

指定个数获取单个字段的列表

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id',3);

//data=[1,2,3]

}

}

获取单个字段的一个值

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id',true);

//data=1

}

}

获取多个字段的所有列表

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id,d_name');

//data={c_id: [1,2,3,4,5], d_name:[ 'a', 'b', 'c' ,'d' ,'e']}

}

}

获取指定个数的多个字段的所有列表

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id,d_name,3');

//data={c_id: [1,2,3], d_name:[ 'a', 'b', 'c' ]}

}

}

获取多个字段的单一值

module.exports = class extends think.Controller{

async listAction(){

const data=await this.model('user').getField('c_id,d_name',true);

//data={c_id: 1, d_name: 'a'}

}

}

5)countSelect 分页查询数据

model.countSelect(options,pageFlag)

options{Number|Object}操作选项,会通过parseOptions方法解析

pageFlag{Boolean}当页数不合法时处理,true为修正到第一页,false为修正到最后一页,默认不修正

return{Promise}

分页查询,一般需要结合page方法一起使用。

module.exports = class extends think.Controller{

async listAction(){

let model =this.model('user');

let data=await model.page(this.get('page')).countSelect();

}

}

返回值结构如下:

{

pageSize: 10,              //每页显示的条数, think-model@1.1.8 之前该字段为 pagesize

currentPage: 1,           //当前页

count: 100,                 //总条数

totalPages: 10,           //总页数

data: [{                       //当前页下的数据列表

name: "thinkjs",

email: "admin@thinkjs.org"

}, ...]

}

有时候总条数是放在其他表存储的,不需要再查当前表获取总条数了,这个时候可以通过将第一个参数 options 设置为总条数来查询

module.exports = class extends think.Controller {

async listAction(){

const model = this.model('user');

const total = 256;

// 指定总条数查询

const data = await model.page(this.get('page')).countSelect(total);

}

}

thinkjs查询mysql_Thinkjs关系数据库学习——查询数据相关推荐

  1. SQL查询的艺术学习笔记--数据插入操作

    use seldata --insert 使用 --insert 基本语法 /* insert into table_anem [column1,colunm2,...columnN] values  ...

  2. mysql 查询重写_mysql 学习 - 查询重写规则

    条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式. 移除不必要的括号 有时候表达式里有许多无用的括号, ...

  3. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  4. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  5. 学习SQL数据查询,这一篇就够了!

    [任务概述] 建立数据库的目的主要是为了对数据库进行操作,以便能够从中提取有用的信息,而数据查询则是数据库操作的核心. 扩展阅读:<学习SQL数据更新,这一篇就够了!> 文章目录 一.SQ ...

  6. 第三章——关系数据库标准语言SQL——数据查询

    数据查询 SQL提供了SELECT语句进行数据查询,该语句具有灵活的使用方式和丰富的功能.其一般格式为: SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达 ...

  7. 关系数据库SQL数据查询(超全的查询案例)

    数据查询 一.单表查询 1.查询仅涉及一个表,选择表中的若干列 用到的数据-->点这里下载数据 查询指定列 [例1] 查询全体学生的学号与姓名.SELECT Sno,SnameFROM Stud ...

  8. Mysql的学习4____数据的单标查询,连接查询,自连接查询,子查询

    DQL(Data Query Language):数据库查询语言 1.进行简单的单表查询,复杂的多表查询,嵌套查询: /* SELECT [ALL | DISTINCT] {* | table.* | ...

  9. 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

    文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...

  10. oracle两表交集查询,Oracle对两个数据表交集的查询

    正在看的ORACLE教程是:Oracle对两个数据表交集的查询. Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想 ...

最新文章

  1. CVPR2020 Oral | 华为开源只有加法的神经网络,实习生领衔,效果不输传统CNN
  2. 了解Javascript中的执行上下文和执行堆栈
  3. [JavaWeb-MySQL]DDL_操作数据库,表
  4. Chapter1-3_Speech_Recognition(CTC, RNN-T and more)
  5. mysql hang分析_mysql hang
  6. Windows下的开发环境
  7. 太极root权限_太极iOS 8.4完美越狱曝安全隐患:Root权限易获取
  8. 2022年最新google drive 谷歌云盘下载文件限额解决方法
  9. Java主流框架技术及少量前端框架使用与总结
  10. 编写函数:字符串的小写转大写(Append Code)
  11. 能源预测:回顾与展望(IEEE论文)
  12. caj格式的文件如何转换成Word文档?
  13. 抽卡游戏的随机机制(转载)
  14. 免费ssl申请且如何应用到宝塔
  15. 数据分析-前置条件(采集、存储、治理)
  16. Linux Deploy在安卓手机安装LINUX系统
  17. dann的alpha torch_win10安装NVIDIA驱动 + cuda +cundann+pytorch
  18. 最详细AMD Ryzen CPU,VMware 16安装macOS 11.x BigSur记录(第二篇)
  19. FPGA的BRAM和distributed RAM学习
  20. 音乐人的 NFT 指南

热门文章

  1. classpath java配置_Java环境变量中classpath是必须配置吗?
  2. PHP MD5 SHA1 比较 漏洞绕过
  3. 2015年热恋的肉肉们
  4. 深度解析MySQL启动时报“The server quit without updating PID file”错误的原因
  5. Gym 100801D Distribution in Metagonia (数学思维题)
  6. 一个完整的接口技术解决方案(一)
  7. SpringMVC、SpringBoot拦截器的实现和原理
  8. synchronized的实现原理用法详解
  9. RabbitMQ消息确认机制之Confirm模式总结
  10. dubbo的线程模型、派发策略、线程池策略