后端產(chǎn)品經(jīng)理筆記之查詢數(shù)據(jù)庫
本文從實際工作中梳理出7個方面的總結(jié):數(shù)據(jù)庫、常用sql語句、數(shù)據(jù)傳輸、文檔語法、邏輯規(guī)則、交互方案、擴展技能。
隨著數(shù)據(jù)量增大,業(yè)務(wù)擴展,服務(wù)器吃緊,加上開發(fā)跑路比較頻繁,常常導(dǎo)致后端網(wǎng)站很‘爛’,這可能是你一段時間內(nèi)不得不面對的常態(tài)。
這就決定了后端產(chǎn)品思維更要接近技術(shù),繞不開百萬級數(shù)據(jù)、業(yè)務(wù)邏輯、數(shù)據(jù)規(guī)則。在工作中無法像前端產(chǎn)品那樣做甩手掌柜:反正我要的告訴你了,怎么實現(xiàn)我不管。而事實上往往還要產(chǎn)品給開發(fā)一兩個建議方案,并告訴他要避免哪些坑,盡管這些都是前任的鍋。
一、數(shù)據(jù)庫
1. 理解數(shù)據(jù)庫
1、前端看到的內(nèi)容,如果不是代碼寫死的,那么就是從數(shù)據(jù)庫讀取的(本地緩存的數(shù)據(jù)也算)。
2、早期比較流行的數(shù)據(jù)庫模型有三種:層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。現(xiàn)今最常用的即關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。
3、關(guān)系型數(shù)據(jù)庫:MYsql為典范,以二位報表的形式展示,因此MYSQL和PHP的組合是比較完美(報表多)。
4、比MYsql強大的關(guān)系型數(shù)據(jù)庫還有ORACLE。比如1000W條數(shù)據(jù)以上級別的數(shù)據(jù),一般用的比較多的是ORACLE。
5、MYsql每張表只能有一個主鍵。但開發(fā)會創(chuàng)建多個字段的索引。目的是為了提高查詢速度。至少提升上百倍查詢速度。
6、非關(guān)系型數(shù)據(jù)庫(NoSQL):
NoSQL是作為傳統(tǒng)關(guān)系型數(shù)據(jù)庫的一個有效補充,處理對存儲要求高,且并發(fā)處理較高的場合。
主要是數(shù)據(jù)庫Mongodb。數(shù)據(jù)是散漫的,以鍵值對的形式存儲。
7、分布式賬本數(shù)據(jù)庫:區(qū)塊連的數(shù)據(jù)存儲方式。也有叫時間軸數(shù)據(jù)庫的。略知即可。
8、圖片的存儲比較特別:
一種是:直接把圖片轉(zhuǎn)換成二進(jìn)制文件存儲在數(shù)據(jù)庫中。適合存儲量少且重要的圖片信息。
另一種是:存儲圖片的路徑到數(shù)據(jù)庫,用的時候直接調(diào)用路徑給image等圖像控件即可。適合存儲量大但不是太重要的圖片。
第二種方法常用,簡單,實用。
2. 實戰(zhàn)注意
1、建表的時候一般會增加冗余字段,比如unique_code,用于存儲備用字段來去重。
2、建表的時候可以增加預(yù)留字段:當(dāng)數(shù)據(jù)量大的時候很難再加新字段,所以預(yù)估到數(shù)據(jù)增張較快的,一定要預(yù)留幾個字段空位。便于日后數(shù)據(jù)表擴展。
3、當(dāng)一個表無法再加字段的時候可以增加擴展表 ,后綴_ext ,與原表通過id關(guān)聯(lián)起來。
4、新增表字段:要考慮,到數(shù)據(jù)初始化比如歷史數(shù)據(jù)全部為空或刷為某一個值。
5、統(tǒng)一規(guī)范表名前綴,比如可以定義t_前綴標(biāo)示類型, f_? 前綴表示從其他系統(tǒng)獲取的。
二、SQL語句
1. 基本函數(shù)
1、產(chǎn)品經(jīng)理一般不去建表、改表,所以create table <表名> 、alter table <表名>、drop table <表名>知道就可以。
產(chǎn)品更多是查詢、統(tǒng)計,或者寫出更新/插入/刪除語句讓開發(fā)執(zhí)行。
2、 select語句是使用最多的,配合函數(shù):
count():統(tǒng)計記錄數(shù)
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行數(shù)據(jù)
select * from product limit 4 offset 9;
或?select * from product limit 9,4;
7、in 括號內(nèi)為或的關(guān)系
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 語句進(jìn)行組合。
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Custome
10、前10條記錄
select top 10 * form table1 where
11、連表查詢用join
Inner Join最常見,叫做內(nèi)聯(lián)接,可以縮寫成Join,找的是兩張表共同擁有的字段。
Left Join叫做左聯(lián)接,以左表(join符號前的那張表)為主,返回所有的行。如果右表有共同字段,則一并返回,如果沒有,則為空。
A Full Join B = A Left Join B + A Right Join B – A Inner Join B
還有其他連表方式既然用網(wǎng)絡(luò)的圖片:
12、查表 f_oms中字段order_number值相同的且數(shù)據(jù)量大于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優(yōu)先級高于or,一般這種混合的句子建議用()使關(guān)系清晰。
比如A>0 OR B<0 and c=0,相當(dāng)于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、為防止數(shù)據(jù)導(dǎo)出因位數(shù)過長而使字符串變?yōu)榭茖W(xué)計數(shù)法,導(dǎo)出的文件格式選擇XLS格式的文檔。
4、數(shù)據(jù)備份。
?選中數(shù)據(jù),右鍵點擊復(fù)制為insert/update,可以直接將篩選的字段備份為更新或插入語句,一旦需要還原的時候可以直接執(zhí)行這幾個語句。
5、提升查詢速度,SQL語句快于MYSQL自帶的篩選選項,并且自帶的只顯示前一千條。所以優(yōu)先使用語句查詢。
6、多個獨立的查詢語句之間可以用;隔開,同時執(zhí)行,會分別輸出。
7、導(dǎo)出的表頭換成漢字注釋的方式:
SELECT a.ds_sn as ‘編碼’,a.pdt_name as ‘名稱’ FROM p_pro
8、is和=有時是不同的,比如寫作is null ,而不寫=null
比<>!=規(guī)范。有時候不兼容。
本文由 @環(huán)滁皆山也 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
專欄作家
唧唧歪歪PM,公眾號:唧唧歪歪PM(ID:jjyypm),人人都是產(chǎn)品經(jīng)理專欄作家,2019年年度作者?!逗蠖水a(chǎn)品經(jīng)理寶典》作者,藥學(xué)碩士轉(zhuǎn)行互聯(lián)網(wǎng)產(chǎn)品多年;熟悉跨境電商業(yè)務(wù),醫(yī)藥領(lǐng)域;擅長大型后臺體系,社交APP。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
問個問題,如果要從數(shù)據(jù)庫拿數(shù)據(jù),后臺配置需要配置哪些字段才能連接數(shù)據(jù)庫?
大佬,0基礎(chǔ)學(xué)mysql難嗎?
文科學(xué)渣
大佬,研發(fā)出身?
看介紹 是學(xué)藥的
這不就是很簡單的數(shù)據(jù)庫基礎(chǔ)么…
我要是跟你聊本專業(yè)最基礎(chǔ)的GC-MS、NMR 不知道你覺得簡單嗎
術(shù)業(yè)有專攻,你這篇文章是我的專業(yè)基礎(chǔ),所以我才覺得簡單。如果專業(yè)不同,你要聊你的專業(yè),可能我就所知甚少了??墒钦f什么就說什么,扯別的有什么意思呢,討論對象不同,結(jié)論自然不同啊。 ??
就這點東西也難理解嗎?作為一個數(shù)據(jù)庫的產(chǎn)品經(jīng)理表示 需要懂mysql oracle mycat的底層架構(gòu) 包括ssd san rac 單實例以及中間件等 還有資源池 物理集群的概念
更別說其他 搭建實例,新增應(yīng)用集群,分片擴容,資源的動態(tài)平衡了
你在哪里干活的
只有自己作為祖師爺原創(chuàng)的才難理解 已經(jīng)存在等著他人去學(xué)習(xí)的東西 都不稀缺。如果你梳理一下 就像執(zhí)業(yè)藥師考試題一樣做個總結(jié) 也有價值 藥學(xué)綜述論文 我老師也發(fā)了9.多影響因子的文字
總是有人需要的嘛 開始什么都不知道
作為一個做了4年后臺業(yè)務(wù)的產(chǎn)品,表示這些的東西依然很有價值。大多數(shù)初級產(chǎn)品對后臺的涉獵僅流于形式,更深入了解一些技術(shù)知識會對個人成長很有幫助。希望看!到作者的更多精彩內(nèi)容
寫了兩年JAVA后臺轉(zhuǎn)的產(chǎn)品,不是很確定這位仁兄“后臺產(chǎn)品經(jīng)理”和“前端產(chǎn)品經(jīng)理”的定義是什么。通篇都是研發(fā)該干的活兒啊~盡管每個公司的組織架構(gòu)和職能或許不同,但是我還是認(rèn)為這里描述的內(nèi)容已經(jīng)完全超過了產(chǎn)品經(jīng)理的崗位職能。
本質(zhì)上都是產(chǎn)品,做的東西都包含前端頁面展示及后端的數(shù)據(jù)邏輯處理等;
不同點:
面向的用戶群不同,前端產(chǎn)品面向的用戶是互聯(lián)網(wǎng)群體,后端面向的用戶是企業(yè)內(nèi)部人員,運營、銷售等;
側(cè)重點不同,前后端都涉及用戶體驗和邏輯關(guān)系,但是相對而言,前端更注重用戶體驗等,后端注重數(shù)據(jù)處理、邏輯關(guān)系。
相關(guān)的sql查詢什么的,看具體工作內(nèi)容了,部分后臺產(chǎn)品,理清數(shù)據(jù)間的邏輯就行,不需要寫sql,不過要懂接口這些。
目前做到是后端服務(wù)系統(tǒng),就是公司內(nèi)部員工使用的各種管理系統(tǒng)。
個人覺得邏輯層次復(fù)雜,數(shù)據(jù)量大的時候,后臺服務(wù)系統(tǒng)或是C端應(yīng)用,對產(chǎn)品來說都不能像油花飄在水面那樣輕飄了。
因為這時候開發(fā)看其他開發(fā)的代碼也蒙B,需要產(chǎn)品給梳理和指引。開發(fā)的很忙,常常以產(chǎn)品的時間換開發(fā)的時間。比如產(chǎn)品給寫好sql開發(fā)執(zhí)行。以前做app的時候也是不關(guān)心這些的,現(xiàn)在要引導(dǎo)開發(fā)。
小弟才疏學(xué)淺,但是據(jù)我工作的環(huán)境的語境來看,我們通常意義上定義的“前端”和“后端”可能更多的指的是前端頁面展示的程序員和后端的數(shù)據(jù)邏輯處理程序員。只能說樓主好人,表設(shè)計和整理的工作都扛下來了,你們可能缺一個叫開發(fā)組長的角色……
也是技術(shù)轉(zhuǎn)的產(chǎn)品,一樣覺得本篇文章的東西超出產(chǎn)品經(jīng)理的范圍了,更應(yīng)該是開發(fā)該干的事情 ,
但是有次我在前端設(shè)計了關(guān)于訂單之類的數(shù)據(jù)展示列表,但是技術(shù)說什么實現(xiàn)不了,后臺查詢不到。某一列的數(shù)據(jù)就是給我顯示的空,但是從我前端設(shè)計來說這些字段都在數(shù)據(jù)庫中有,但是開發(fā)就說關(guān)聯(lián)不到這個字段,讓我改設(shè)計。但我覺得這在關(guān)系數(shù)據(jù)庫中都可以根據(jù)訂單id之類的關(guān)聯(lián)到這個字段。然后還爭論了半天我也沒有理解為什么關(guān)聯(lián)不到,還說讓我比如怎么設(shè)計就可以關(guān)聯(lián)到。我覺得這是開發(fā)的問題而不是產(chǎn)品設(shè)計的問題,但開發(fā)就說是產(chǎn)品設(shè)計的問題。就是關(guān)聯(lián)不到
你前期的設(shè)計決定了表結(jié)構(gòu)設(shè)計,別先著急甩鍋,把事情辦下來才是你接下來應(yīng)該考慮的事情。
蠻詳細(xì)的,后端產(chǎn)品會用得多