db.users.find()select * from users db.users.find({"age" : 27})select * from users where age = 27 db.users.find({"username" : "joe", "age" : 27})select * from users where "username" = "joe" and ag…
MongoDB的一个特色就是具有丰富的查询接口,比如地理位置查询. 在地理位置查询上,MongoDB有着比传统关系型数据库的优势,下面举个例子. 当前移动互联网应用,按用户离目标门店距离排序上的场景很多. 比如: 一张门店表shop_list,表结构字段包括shop_id,shop_name,lng,lat (门店id,门店名称,以及门店的经纬度等). 现收集到当前用户的所处位置的经纬度是,经度116.30759,纬度40.05748.获取距离用户1000m以内的100家门店,按照距离从近到远排…
常见的查询索引 _id索引         _id 索引是绝大多数集合默认建立的索引.对于每一个插入的数据.MongoDB 会自己主动生成一条唯一的 _id 字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 > db.jerome_2.collection.insert({x:2}) WriteResult({ "nInserted" : 1 }) > db.jerome_2.collection.getIndexes() [     {…
假如说我们有一张表 T ,表里只有一个字段 ID,当我们执行下边这条SQL语句时: mysql> select * fron T where ID=10; 在我们眼中能看到的只是输入一条 SQL语句,返回一条查询结果,却不曾知道这条SQL在MySQL的内部经历了什么,下面我们来一步一步的分析一下:如下是MySQL的基本架构图,从图中可以清楚的看到SQL在MySQL中各个功能模块执行的过程: 大体来说,MySQL可以分为Server层和存储引擎两部分. Server层:包括连接器.分析器.查询缓存…
先来个最基本的总结阐述,希望各位小伙伴认真的读一下,哈哈: 1)客户端(运行程序)先通过连接器连接到MySql服务器. 2)连接器通过数据库权限身份验证后,会先查询数据库缓存是否存在(之前执行过相同条件的SQL查询),如果有会直接返回缓存中的数据.如果没有则会进入分析器. 3)进入分析器后会对查询语句进行词法语法的分析,判断该查询语句SQL是否存在语法错误,如果存在查询语法词法错误,会直接返回给客户端错误,如果正确则会进入优化器. 4)优化器会对查询语句进行优化处理:例如:如果一条语句用到了多个…
select * from 表名     查询此表所有数据  select * from 表名 where 字段名 > 判断条件      查询某表中的某字段符合条件的数据 select * from 表名 where 字段名 = 判断条件      查询某表中的某字段等于条件的数据 select * from 表名 where 字段名 like '%灵'        查询某表中的某字段以灵结尾的数据 select * from 表名 where 字段名 not  like '%灵'     …
1. _id索引     _id索引是绝大多数集合默认建立的索引     对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 > db.jerome_2.collection.insert({x:2}) WriteResult({ "nInserted" : 1 }) > db.jerome_2.collection.getIndexes() [     {         &qu…
闲言少叙 查出价格低于200的商品信息----包含商品名称,货物编号,价格,添加信息等 db.goods.find( {}}, {,,,} ) 商品分类不为3的商品 db.goods.find( {}}, {,,,} ) 价格低于或等于400的商品 db.goods.find( {}}, {,,,} ) 查处价格大于等于100,小于等于500的商品 db.goods.find( {$and: [{}},{}}] }, {,,,} ) 查询不属于栏目3和栏目11的产品用$and db.goods.…
db.getCollection('costitems').find({"created":{"$gte":ISODate("2019-01-02T00:00:00Z"),"$lte":ISODate("2019-03-03T00:00:00Z")} ,financialSourceType:"xxxx",approvalState:"xxxx"})…
最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 MySQL大体来说可以分为Server层和存储引擎层两部分. Server层包括:连接器,查询缓存,分析器,优化器,执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期,时间,数学和加密函数等),所有跨存储引擎的功能在这一层实现,比如实现存储过程,触发器,视图等. 存储引擎层:负责数据的…
一条SQL查询语句是如何执行的? 前言 ​ 大家好,我是WZY,今天我们学习下MySQL的基础框架,看一件事千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL 的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10: ​ 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的…
我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时: mysql> select * from T where ID=10: 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程. 所以今天我想和你一起把MySQL拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程…
Mysql查询语句执行过程   Mysql分为server层和存储引擎两部分,或许可以再加一层连接层   连接层(器) Mysql使用的是典型的C/S架构.连接器通过典型的TCP握手完成连接. 需要注的是, 如果用户名和密码都正确,那么该连接所拥有的权限仅仅是连接成功建立时的所读取到的权限 这就意味着:当连接已经建立后,我们在对该用户的权限进行修改,这些修改要直到该用户再次建立连接时才会生效.   这听起来是个不好的设计,因为一旦建立连接,管理员是无法临时收回权限的. 索性,MySQL也想到了这…
这是专栏的第一篇文章,我想来跟你聊聊MySQL的基础架构.我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时: mysql> select * from T where ID=10: 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程. 所以今天我想和你一起把MySQ…
一.准备工作: 1.安装mysql3.7,创建一个test数据库,创建student表,创建列:(列名看代码),创建几条数据 (以上工作直接用navicat for mysql工具完成) 二.代码: 1 import sys 2 import tkinter as tk 3 import mysql.connector as sql 4 5 #--------------------查询函数--------------------------- 6 def sql_connect(): 7 li…
先熟悉一下浅而易懂SQL执行的流程图SQL查询过程七步曲 1.查询SQL发送请求 客户端将查询sql按照mysql通信协议传输到服务端.服务端接受到请求后,服务端单起一个线程执行sql 2.判断是否为select查询语句 执行前mysql会通过命令分发器判断其是否是一条select语句(判断sql语句前6个字符是否为select): 3.查询缓存先行 MySQL在开启查询缓存的情况下,首先会先在查询缓存中查找该SQL是否完全匹配,如果完全匹配,验证当前用户是否具备查询权限,如果权限验证通过,直接…
总结一下常见查询语句的优化方式 1        COUNT 1.       COUNT的作用 ·        COUNT(table.filed)统计的该字段非空值的记录行数 ·        COUNT(*)或者是COUNT(not nullable field) 统计的是全表的行数 如果要是统计全表记录数,COUNT(*)效率会比COUNT(not nullable field)要高一点 2.       MYISAM的COUNT 一般执行COUNT操作时需要扫描大量的记录,但是在My…
网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上. 我们知道MySQL的性能优化方法,一般有建立索引.规避复杂联合查询.设置冗余字段.建立中间表.查询缓存等,也知道用EXPLAIN来查看执行计划. 但对MySQL复杂查询语句执行过程和内部机制,MySQL Optimizer本身所做优化以及查询语句调整对性能所产生的影响及其原因知之甚少. 本文试图对其中的一些关键概念如执行过程.索引使用等做比较深入的探讨,知其然,知其所以然, 这样可以避免在原本通…
Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项] select 语句3 union[union选项] ……   作用: 所谓的联合查询,就是将多个查询结果进行纵向上的拼接,也就是select语句2的查询结果放在select语句1查询结果的后面.依次类推! 既然是纵向上的拼接,所以联合查询有一个最最基本的语法,就是各个select语句查询出来的结…
Mysql的各个查询语句 一.where子句   语法:select *|字段列表 from 表名 where 表达式.where子句后面往往配合MySQL运算符一起使用(做条件判断) 作用:通过限定的表达式的条件对数据进行过滤,得到我们想要的结果.     1.MYSQL运算符: MySQL支持以下的运算符: 关系运算符 <  > <=  >= =   !=(<>) 注意:这里的等于是一个等号 between and 做数值范围限定,相当于数学上的闭区间! 比如: b…
前言 我们在学习一种技术的时候,首先要鸟瞰其全貌,千万不要一开始就陷入到细节中去,这样有助于我们站在高维度其理解问题 —— 丁奇. 学习MySQL也是一样,所以我们可以从一条查询语句的执行开始看起. ; 通常情况下,我们在使用MySQL的时候,只是从客户端输入一行指令,然后获取一个返回结果.但是对于一个开发人员来说,只知道这些是远远不够的,我们还需要知道这句指令背后的执行流程,便于排查问题. MySQL逻辑架构 这里还是引用丁奇老师的MySQL系统结构图:   mysql的逻辑架构图 MySQL…
MongoDB查询语句 --查询近三个月的客户使用量  aggregate:使用聚合  match:过滤  group分组   -- mysql中select org_code as 近三个月使用商户 from pomelo_backend_production.landi_configurations where created_at between '2018-03-22 00:00:00' and '2018-06-22 00:00:00'GROUP BY org_code; --mong…
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. 不同与关系型数据库的是, MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. 1.主要特点 MoginDB 是一个面向文档存储的数据库, 操作起来比较简…
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫做数据查询语言(DQL)   select的语法格式 SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>- [WHERE <表达式> [GROUP BY <group by definition> [HAVING <…
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的一张MySQL基础架构图: MySQL中一条查询语句的生命周期大概可以分为 客户端通过连接器连接服务器 在解析器中解析SQL语句 优化器进行优化 执行器执行生成的执行计划 返回结果给客户端 一般而言,执行器执行阶段是最为重要的阶段,也就是说,最耗费性能的阶段.所以我们的优化,其实就是在优化执行器的执…
1 子查询定义 在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select).子查询的结果传递给调用它的表表达式继续处理. 2 子查询分类     2.1 按返回结果集分类 子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询.        表子查询:返回的结果集是一个行的集合,N行N列(N>=1).表子查询经常用于父查询的FROM子句中.        行子查询:返…
看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦. 左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" : 27}) select * from users where age = 27 db.users.find({"username" : "joe", "age" :…
在日常的web应用开发过程中,一般会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇随笔我们就来一起看看MySQL查询知识相关的树是什么样的. MySQL查询知识树: 一.查询的方式 二.查询的原理 三.查询的应用场景 四.查询的效率比较 五.查询的优化 一.查询的方式 MySQL的查询可以分为交叉连接.内连接.外连接.自然连接.   下述对于连接查询的学习,会用到以下两张表: create table t_commodity_ty…
如何判断在字符串字段中是否包含某个字符串 mysql:   url:http://www.springload.cn/springload/detail/399 mysql> SELECT * FROM users WHERE find_in_set('2', limits);   sqlserver: url:http://bbs.csdn.net/topics/110118170   select * from [tbServerWeb]. [dbo].[tb_gameStaff] wher…
mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录. 查询的开销指标: 执行时间 检查的行数 返回的行数 建立索引的几个准则: 1.合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度. 2.索引越多,更新数据的速度越慢. 3.尽量在采用MyIsam作为引擎的时…