后端产品经理笔记之查询数据库

栏目: 数据库 · 发布时间: 6年前

内容简介:本文从实际工作中梳理出7个方面的总结:数据库、常用sql语句、数据传输、文档语法、逻辑规则、交互方案、扩展技能。随着数据量增大,业务扩展,服务器吃紧,加上开发跑路比较频繁,常常导致后端网站很‘烂’,这可能是你一段时间内不得不面对的常态。

本文从实际工作中梳理出7个方面的总结:数据库、常用 sql 语句、数据传输、文档语法、逻辑规则、交互方案、扩展技能。

后端产品经理笔记之查询数据库

随着数据量增大,业务扩展,服务器吃紧,加上开发跑路比较频繁,常常导致后端网站很‘烂’,这可能是你一段时间内不得不面对的常态。

这就决定了后端产品思维更要接近技术,绕不开百万级数据、业务逻辑、数据规则。在工作中无法像前端产品那样做甩手掌柜:反正我要的告诉你了,怎么实现我不管。而事实上往往还要产品给开发一两个建议方案,并告诉他要避免哪些坑,尽管这些都是前任的锅。

一、数据库

1. 理解数据库

1、前端看到的内容,如果不是代码写死的,那么就是从数据库读取的(本地缓存的数据也算)。

2、早期比较流行的数据库模型有三种:层次式数据库、网络式数据库和关系型数据库。现今最常用的即关系型数据库和非关系型数据库。

3、关系型数据库:MYsql为典范,以二位报表的形式展示,因此 MYSQLPHP 的组合是比较完美(报表多)。

4、比MYsql强大的关系型数据库还有ORACLE。比如1000W条数据以上级别的数据,一般用的比较多的是ORACLE。

5、MYsql每张表只能有一个主键。但开发会创建多个字段的索引。目的是为了提高查询速度。至少提升上百倍查询速度。

6、非关系型数据库(NoSQL):

NoSQL是作为传统关系型数据库的一个有效补充,处理对存储要求高,且并发处理较高的场合。

主要是数据库Mongodb。数据是散漫的,以键值对的形式存储。

7、分布式账本数据库:区块连的数据存储方式。也有叫时间轴数据库的。略知即可。

8、图片的存储比较特别:

一种是:直接把图片转换成二进制文件存储在数据库中。适合存储量少且重要的图片信息。

另一种是:存储图片的路径到数据库,用的时候直接调用路径给image等图像控件即可。适合存储量大但不是太重要的图片。

第二种方法常用,简单,实用。

2. 实战注意

1、建表的时候一般会增加冗余字段,比如unique_code,用于存储备用字段来去重。

2、建表的时候可以增加预留字段:当数据量大的时候很难再加新字段,所以预估到数据增张较快的,一定要预留几个字段空位。便于日后数据表扩展。

3、当一个表无法再加字段的时候可以增加扩展表 ,后缀_ext ,与原表通过id关联起来。

4、新增表字段:要考虑,到数据初始化比如历史数据全部为空或刷为某一个值。

5、统一规范表名前缀,比如可以定义t_前缀标示类型, f_  前缀表示从其他系统获取的。

二、SQL语句

1. 基本函数

1、产品经理一般不去建表、改表,所以create table <表名> 、alter table <表名>、drop table <表名>知道就可以。

产品更多是查询、统计,或者写出更新/插入/删除语句让开发执行。

2、 select语句是使用最多的,配合函数:

count():统计记录数

avg():计算字段值的平均值

sum():计算字段值的总和

max():查询字段的最大值

min():查询字段的最大值

比如:select count(id) from p_product;

3、排序:order by 字段 desc/ASC

select * from finance_order order by update_time desc limit 3;

4、不包含某个字符

select * from table where ziduan not in(select ziduan from table where name = ‘C’)

5、包含某个字符

select * from table where 列名 like ‘a%’  利用模糊查询

6、查询表p_product中的第10、11、12、13行数据

select * from product limit 4 offset 9;

或 select * from product limit 9,4;

7、in 括号内为或的关系

select name from product where   goods in (‘103702505′,’103702805’) and (shelf_time >  ‘2014-09-15 16:53:21’ or title like ‘_tylish%’);

8、去重搜索:

SELECT distinct(goods) FROM

9、 GROUP BY 语句进行组合。

SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Custome

10、前10条记录

select top 10 * form table1 where

11、连表查询用join

Inner Join最常见,叫做内联接,可以缩写成Join,找的是两张表共同拥有的字段。

Left Join叫做左联接,以左表(join符号前的那张表)为主,返回所有的行。如果右表有共同字段,则一并返回,如果没有,则为空。

A Full Join B = A Left Join B + A Right Join B – A Inner Join B

还有其他连表方式既然用网络的图片:

后端产品经理笔记之查询数据库

12、查表 f_oms中字段order_number值相同的且数据量大于1个的

select order_number,count(*) from f_oms group by order_number having count(*)>1

13、从 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE ‘[!ALN]%’

2. 技巧

1、and优先级高于or,一般这种混合的句子建议用()使关系清晰。

比如A>0 OR B<0 and c=0,相当于A>0 OR( B<0 and c=0)

2、点击‘美化SQL’按钮,可以将语句断层使层次清晰。比如where goods_sn in(‘A’,’B’,’C),美化后会变成:

where   goods_sn in (

'A',

'B',

'C

)

就可以用截取 工具 截取ABC,还原到excel表格的样式。

3、为防止数据导出因位数过长而使字符串变为科学计数法,导出的文件格式选择XLS格式的文档。

4、数据备份。

​选中数据,右键点击复制为insert/update,可以直接将筛选的字段备份为更新或插入语句,一旦需要还原的时候可以直接执行这几个语句。

后端产品经理笔记之查询数据库

5、提升查询速度,SQL语句快于MYSQL自带的筛选选项,并且自带的只显示前一千条。所以优先使用语句查询。

6、多个独立的查询语句之间可以用;隔开,同时执行,会分别输出。

后端产品经理笔记之查询数据库

7、导出的表头换成汉字注释的方式:

SELECT a.ds_sn as ‘编码’,a.pdt_name as ‘名称’ FROM p_pro

8、is和=有时是不同的,比如写作is null ,而不写=null

比<>!=规范。有时候不兼容。

本文由 @环滁皆山也 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Haskell函数式编程基础

Haskell函数式编程基础

Simon Thompson / 科学出版社 / 2013-7-1 / 129.00

《Haskell函数式编程基础(第3版)》是一本非常优秀的Haskell函数式程序设计的入门书,各章依次介绍函数式程序设计的基本概念、编译器和解释器、函数的各种定义方式、简单程序的构造、多态和高阶函数、诸如数组和列表的结构化数据、列表上的原始递归和推理、输入输出的控制处理、类型分类与检测方法、代数数据类型、抽象数据类型、惰性计算等内容。书中包含大量的实例和习题,注重程序测试、程序证明和问题求解,易......一起来看看 《Haskell函数式编程基础》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具