thinkjs查询mysql_Thinkjs关系数据库学习——查询数据
模型提供了多种方法来查询数据:
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关系数据库学习——查询数据相关推荐
- SQL查询的艺术学习笔记--数据插入操作
use seldata --insert 使用 --insert 基本语法 /* insert into table_anem [column1,colunm2,...columnN] values ...
- mysql 查询重写_mysql 学习 - 查询重写规则
条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式. 移除不必要的括号 有时候表达式里有许多无用的括号, ...
- server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...
4.1.查询的类型 declare @value as int set @value = 50 select 'age:'as age,2008 years,@valueas va --这种查询时跟 ...
- mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...
MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...
- 学习SQL数据查询,这一篇就够了!
[任务概述] 建立数据库的目的主要是为了对数据库进行操作,以便能够从中提取有用的信息,而数据查询则是数据库操作的核心. 扩展阅读:<学习SQL数据更新,这一篇就够了!> 文章目录 一.SQ ...
- 第三章——关系数据库标准语言SQL——数据查询
数据查询 SQL提供了SELECT语句进行数据查询,该语句具有灵活的使用方式和丰富的功能.其一般格式为: SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达 ...
- 关系数据库SQL数据查询(超全的查询案例)
数据查询 一.单表查询 1.查询仅涉及一个表,选择表中的若干列 用到的数据-->点这里下载数据 查询指定列 [例1] 查询全体学生的学号与姓名.SELECT Sno,SnameFROM Stud ...
- Mysql的学习4____数据的单标查询,连接查询,自连接查询,子查询
DQL(Data Query Language):数据库查询语言 1.进行简单的单表查询,复杂的多表查询,嵌套查询: /* SELECT [ALL | DISTINCT] {* | table.* | ...
- 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...
- oracle两表交集查询,Oracle对两个数据表交集的查询
正在看的ORACLE教程是:Oracle对两个数据表交集的查询. Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想 ...
最新文章
- CVPR2020 Oral | 华为开源只有加法的神经网络,实习生领衔,效果不输传统CNN
- 了解Javascript中的执行上下文和执行堆栈
- [JavaWeb-MySQL]DDL_操作数据库,表
- Chapter1-3_Speech_Recognition(CTC, RNN-T and more)
- mysql hang分析_mysql hang
- Windows下的开发环境
- 太极root权限_太极iOS 8.4完美越狱曝安全隐患:Root权限易获取
- 2022年最新google drive 谷歌云盘下载文件限额解决方法
- Java主流框架技术及少量前端框架使用与总结
- 编写函数:字符串的小写转大写(Append Code)
- 能源预测:回顾与展望(IEEE论文)
- caj格式的文件如何转换成Word文档?
- 抽卡游戏的随机机制(转载)
- 免费ssl申请且如何应用到宝塔
- 数据分析-前置条件(采集、存储、治理)
- Linux Deploy在安卓手机安装LINUX系统
- dann的alpha torch_win10安装NVIDIA驱动 + cuda +cundann+pytorch
- 最详细AMD Ryzen CPU,VMware 16安装macOS 11.x BigSur记录(第二篇)
- FPGA的BRAM和distributed RAM学习
- 音乐人的 NFT 指南
热门文章
- classpath java配置_Java环境变量中classpath是必须配置吗?
- PHP MD5 SHA1 比较 漏洞绕过
- 2015年热恋的肉肉们
- 深度解析MySQL启动时报“The server quit without updating PID file”错误的原因
- Gym 100801D	Distribution in Metagonia (数学思维题)
- 一个完整的接口技术解决方案(一)
- SpringMVC、SpringBoot拦截器的实现和原理
- synchronized的实现原理用法详解
- RabbitMQ消息确认机制之Confirm模式总结
- dubbo的线程模型、派发策略、线程池策略