登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 299|回复: 0

产物司理对数据库不必懂太多,这篇总结就够了!

[复制链接]

942

主题

942

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2020-12-24 04:04:19 | 显示全部楼层 |阅读模式 来自 美国

原标题:产物司理对数据库不必懂太多,这篇总结就够了!

编辑导语:中台和背景产物司理对于数据库肯定不生疏,本篇文章中,作者对数据库举行了具体地总结,资助你更好的明白和应用数据库,同时相识一些留意事项。

编辑导语:中台和背景产物司理对于数据库肯定不生疏,本篇文章中,作者对数据库举行了具体地总结,资助你更好的明白和应用数据库,同时相识一些留意事项。

gbk8SR3Ox1AQ1q4q.jpg

先把数据布局搞清晰,步伐的别的部门自现。—— David Jones

先把数据布局搞清晰,步伐的别的部门自现。—— David Jones

对于中、背景产物司理而言,相识数据库不是为了做斜杠青年,而是由于你就在面临数据库。

本文目次:

随着业务横向扩展,数据维度在扩大。随着业务纵深发展,数据量在倍增。随之而来的,是数据布局的不兼容、数据存储不敷用,数据服务性能见拙,统统当初未思量到的,都成了繁殖停滞的伏笔。

产物不相识数据库原理的话,经常会与技能方案之间信息割裂。近期体现为相互扯皮,久远会引入“技能债”,并一度陷入插不上手、插不上嘴的懵逼状态。

举例两个场景:

第一:当你发现数据非常,大概你要调研一个功能的时间,必要拉一批数据做验证。

假如开辟资源不敷,你就要不停等着。而多数大而老的ERP体系确实惨不忍睹,整个团队很累很忙,这大概是你一段时间内不得不面临的常态。——以是你要独立更生。

第二:当你写需求的时间,在页面截图字段后画个圈丢已往,看着没弊端。但是一些值,根本不在页面。

假如你能给出一点线索,就可以让他服从高点。

以是,后端产物在工作中无法像C端产物那样做甩手掌柜:究竟上每每还要产物给开辟一两个发起方案,并告诉他要制止哪些坑,由于产物比开辟多把握了业务信息。

睁开全文

以是避不开数据库、数据表、字段这些靠近技能的题目,那么作为产物要相识数据库到什么水平呢?

到达两点即可:

下载的就是服务器上的数据,广义地说,凡是存储数据的,都算是数据库,包罗欣赏器的缓存。

前端界面看到的内容,假如不是代码写死的,那么就是从数据库调取的。这就是为什么你看到页面会经常出现图片滞后,由于图片调用比力慢。

数据库就似乎是一个堆栈,开辟用代码实现对此中数据的取值,终极给到页面出现出来。

2. 数据库管理三个阶段

20世纪50年代中期从前,人工管理;20世纪50年代后到60年代中,文件体系阶段,数据共享性差。20世纪60年代后期以来,出现了同一管理数据的专门软件体系——DBMS。

3. 数据库模子重要三种

条理式数据库、网络式数据库和关系型数据库,现今最常用的即关系型数据库和非关系型数据库。

4. 关系型数据库

MYsql为范例,以二位报表的情势展示,因此MYSQL和PHP的组合是比力完善(报表多)。比MYsql强盛的关系型数据库另有ORACLE,好比1000W条数据以上级别的数据,一样平常用的比力多的是ORACLE。

MYsql每张表只能有一个主键,但开辟会创建多个字段的索引,目标是为了进步查询速率,至少提拔上百倍查询速率。

5. 非关系型数据库(NoSQL)

NoSQL是作为传统关系型数据库的一个有用增补,处置惩罚对存储要求高,且并发处置惩罚较高的场所。

重要是数据库Mongodb,数据是散漫的,以键值对的情势存储,{ “key1”:”valude1” ,“key2”:” valude2 ” ,“key3”:” valude3”}。

6. 分布式账本数据库

区块连的数据存储方式,也有叫时间轴数据库的,一种分布式的、团体维护的、按照时间次序将变乱数据分列的“时间轴数据库”,现在还不是主流的贸易代价方案。

7. 图片的存储比力特殊

一种是直接把图片转换成二进制文件存储在数据库中,得当存储量少且紧张的图片信息;另一种是存储图片的路径到数据库,用的时间直接调用路径给image等图像控件即可,得当存储量大但不是太紧张的图片。

第二种方法常用、简朴、实用。

三、留意事项和规范 1. 留意事项

  • 建表的时间一样平常会增长冗余字段,好比 unique_code,用于存储备用字段来标定唯一性;
  • 建表的时间可以增长预留字段:当数据量大的时间很难再加新字段,以是预估到数据增张较快的,肯定要预留几个字段空位。便于日后数据表扩展;
  • 当一个表无法再加字段的时间可以增长扩展表 ,后缀_ext ,与原表通过id关联起来;
  • 新增表字段:要思量,到汗青数据初始化。好比汗青数据全部为空或刷为某一个值;
  • 同一规范表名前缀,好比可以界说t_前缀标示范例, f_前缀表现从其他体系获取的。

定名规范总的原则是可读性强,轻易维护,详细的规范如下:

  • 库名,表名,字段名,索引名同一利用小写字母,数字,以下划线分割;
  • 库名,表名,字段名不要凌驾30个字符长度;
  • 库名,表名,字段名不能单独利用DB的关键字,像lock,time,date,return,user等;
  • 数据库的名称为:业务名称_[业务模块]_db,eg:oms_db,oms_history_db;
  • 非唯一索引按照“idx_字段名称[_字段名称]”,唯一索引按照“uk_字段名称[_字段名称]”举行定名;
  • 业务体系利用数据库账号定名为:业务名称_[r|w]。
  • 统计类数据表前缀:s
  • 底子数据表前缀:b
  • 底子范例维护数据表前缀:t
  • 原始数据表前缀:in
  • 订单数据表前缀:o
  • 同队伍列数据范例表前缀:iq
  • 财政数据表前缀:f
  • 单表索引个数不能凌驾30个;
  • 关联字段,业务外键,create_time 字段必须建索引;
  • 在选择性高的字段创建索引,留意组合索引的次序,使用索引的最左原则;
  • 利用复合索引,而不是添加新的索引;
  • 制止冗余索引。

idx_a_b_c(a,b,c)

idx_a(a)

idx_a_b(a,b)

四、应用数据库 1. 安装数据管理体系

以下先容最常用的MYSQL,起首要在PC端安装MYSQL数据库服务器,然后通过公司的数据库地点、暗码毗连上数据库(详细可以找开辟帮忙完成)。

如许你就可以进入到数据库的各个表里看数据,一个公司如有多个体系,每个体系有至少一个属于本身的数据库,也有一个体系的数据分库存放的。

a80I80AIg3Irv5GV.jpg

2. 认识数据库管理体系

数据库的表可以创建许多个,每个表形貌一种实体与属性关系,每个属性就是一个字段。同一个数据库的表可以连表查询,差别数据库的表不能连表,因此在业务发展过程中会出现拆迁库、拆表的举动。

1)数据构成

一个根本的数据由数据范例、字段(也叫变量大概参数)、字段值构成:

CREATE TABLE IF NOT EXISTS `s_rule` ( `rule_id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’, `rule_name` varchar(255) NOT NULL DEFAULT ” COMMENT ‘规则名称’, `rule_type_id` bigint(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘规则范例id,对应t_oms_rule_type表的自增id’,`solution_desc` varchar(255) NOT NULL DEFAULT ” COMMENT ‘处置惩罚方式形貌’。

这里的表名是s_rule,4个字段都不答应为空。

2)字段范例

这里的字段范例是对字段值的束缚,束缚的根本缘故原由是代码在实行调用取值的时间,与数据库一个约定,约定后就不会有不符合规制的数据进入,制止代码辨认停滞导致报错,好比整形、字符串等。

3)主键

MYSQL每张表只能有一个主键,主键即为主关键字(primary key),可以由一个或多个字段构成,而且主关键字的列不能包罗空值。

主键意义重要是用于其他表的外键关联,以及本记载的修改与删除。当两个表必要关联时,主关键字用来在一个表中引用来自于另一个表中的特定记载,一样平常用该表id做主键。

4) 索引

索引是由开辟在计划表之后,再详细创建的,对数据库表中一或多个字段值举行排序的一种布局,利用索引可快速访问数据库表中的特定信息。

数据库索引比如是一本书前面的目次,能加速数据库的查询速率。比方:如许一个查询:select * from table1 where id=44。

假如没有索引,必须遍历整个表,直到ID即是44的这一行被找到为止;有了索引之后(必须是在ID这一列上创建的索引),直接在索引内里找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。

可见,索引是用来定位的。索引分为聚簇索引和非聚簇索引两种,相识即可。主键唯一,但是表的索引可以有多个。

增长索引也有很多倒霉的方面 :

操纵数据库的话,全天下的步伐员都是同一的,都是用SQL语句来操纵数据库。

产物司理一样平常不去建表、改表,以是CREATE TABLE IF NOT EXISTS 、alter table 、-- DROP TABLE 知道就可以。

产物更多是查询、统计,大概写出更新/插入/删除语句,让开辟实行。查询语句中你可以利用一个大概多个表,表之间利用逗号(,)分割,并利用WHERE语句来设定查询条件。

SELECT 下令可以读取一条大概多条记载:

  • 可以利用星号*来取代全部字段,SELECT语句会返回表的全部字段数据;
  • 可以利用 WHERE 语句来包罗任何条件;
  • 可以利用 LIMIT 属性来设定返回的记载数;
  • 可以通过OFFSET指定SELECT语句开始查询的数据偏移量等等。

1)where和having区别:

  • where在分组前过滤,having在分组后过滤;
  • having 字段必须是查询出来的,where 字段必须是数据表存在的;
  • where 不可以利用字段的别名,having 可以。由于实行WHERE代码时,大概尚未确定列值;
  • where 不可以利用合计函数。一样平常需用聚合函数才会用 having。

2)and优先级高于or,一样平常这种混淆的句子发起用使关系清楚,好比A>0 OR B<0 and c=0,相称于A>0 OR( B<0 and c=0)。

3)点击‘美化SQL’按钮,可以将语句断层使条理清楚,好比where name in(‘A’,’B’,’C),美化后:where goods_sn in(‘A’,’B’,’C)。

4)导出的表头换成汉字解释的方式:SELECT a.ds_sn as编码 ,a.pdt_name as 名称 FROM p_pro。

5) is和=偶然是差别的,好比写作is null ,而不写=null。

6)MySQL中,null是未知的,且占用空间的。空值(”)是不占用空间的,留意空值的”之间是没有空格。

在举行count统计某列的记载数的时间,假如接纳的 NULL 值,会被体系主动忽略掉,但是空值是会举行统计到此中的。判定null利用is null大概is not null,但判定空字符利用 =”大概 <>”来举行处置惩罚。

7) 共同函数

  • count:统计记载数
  • avg:盘算字段值的均匀值
  • sum:盘算字段值的总和
  • max:查询字段的最大值
  • min:查询字段的最大值

好比:select count(id) from p_product。

8)排序:order by 字段 desc/ASC,select * from finance_order order by update_time desc limit 3。

9) 包罗某个字符:select * from table where 列名 like ‘a%’(使用含糊查询)。

10) 查询表p_product中的第10、11、12、13行数据:select * from product limit 4 offset 9;或 select * from product limit 9,4。

11) 去重搜刮:SELECT distinct(goods) FROM。

12) GROUP BY 语句举行组合:SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Custome。

13)查询三个字段维度 重复的数据

  • select account,platform_sku,goods_sn, count(1) from t_oms_sku_map
  • where id <1000000
  • group by account,platform_sku,goods_sn
  • having( count(1) > 1)
  • limit 100

14)字段拼接

select concat(‘123′,’456’),mysql中的concat则可以拼接多个字符串。

将一个订单对应的多个产物输入在一起,select order_sn ,group concat (goods_sn)from 订单商品表。

15) in 括号内为或的关系

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

16)连表查询用join

Inner Join最常见,叫做内联接,可以缩写成Join,找的是两张表共同拥有的字段。Left Join叫做左联接,以左表(join符号前的那张表)为主,返回全部的行。假如右表有共同字段,则一并返回,假如没有,则为空。

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

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

pLo5fR8Fn4vULLvL.jpg

17)数据备份

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

Mc77ZFJcNsf47myj.jpg

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

#专栏作家#

唧唧歪歪PM,公众号:唧唧歪歪PM(ID:jjyypm),大家都是产物司理专栏作家,2019年年度作者。《后端产物司理宝典》作者,药学硕士转行互联网产物多年;认识跨境电贸易务,医药范畴;善于大型背景体系,交际APP。

题图来自Unsplash,基于CC0协议返回搜狐,检察更多

责任编辑:





上一篇:原创这个湖南打工妹,靠一块玻璃赚千亿,替中国企业打下环球半壁山河 ...
下一篇:以萨天工新型聪明都会“应用场景全智体系”重磅表态2020AI创新应用峰会! ...
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-20 10:18 , Processed in 0.170005 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表