日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

跟开发对接,要了解哪些数据库知识?

發布時間:2025/3/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跟开发对接,要了解哪些数据库知识? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


“先把數據結構搞清楚,程序的其余部分自現。”—— David Jones

對于中、后臺產品經理而言,了解數據庫不是為了做斜杠青年。而是因為,你就在面對數據庫。

01

作為PM,要了解數據庫到什么程度?

隨著業務橫向擴展,數據維度在擴大。隨著業務縱深發展,數據量在倍增。

隨之而來的,是數據結構的不兼容、數據存儲不夠用,數據服務性能見拙,一切當初未考慮到的,都成了滋生障礙的伏筆。

產品不了解數據庫原理的話,常常會與技術方案之間信息割裂。近期表現為互相扯皮,長遠會引入“技術債“,并一度陷入插不上手、插不上嘴的懵逼狀態。

舉例兩個場景:

1、當你發現數據異常,或者你要調研一個功能的時候,需要拉一批數據做驗證。

如果開發資源不夠,你就要一直等著。而多數大而老的ERP系統確實慘不忍睹,整個團隊很累很忙。這可能是你一段時間內不得不面對的常態。——所以你要自力更生。

2、當你寫需求的時候,在頁面截圖字段后畫個圈丟過去,看著沒毛病。但是一些值,根本不在頁面。

如果你能給出一點線索,就可以讓他效率高點。

所以,后端產品在工作中無法像C端產品那樣做甩手掌柜:事實上往往還要產品給開發一兩個建議方案,并告訴他要避免哪些坑,因為產品比開發多掌握了業務信息。

所以避不開數據庫、數據表、字段這些接近技術的問題。

那么,作為產品要了解數據庫到什么程度呢?

達到兩點即可:

  • 第一:理解數據庫作用原理,使你能更好與開發互相溝通,更好輸出方案。

  • 第二:會用簡單常用的SQL查詢日常問題。實現基本的數據庫應用價值。

02

理解數據庫

1)你在互聯網看到一切皆“下載”

下載的就是服務器上的數據。

廣義地說,凡是存儲數據的,都算是數據庫,包括瀏覽器的緩存。

前端界面看到的內容,如果不是代碼寫死的,那么就是從數據庫調取的。這就是為什么你看到頁面會常常出現圖片滯后,因為圖片調用比較慢。

數據庫就好像是一個倉庫,開發用代碼實現對其中數據的取值,最終給到頁面呈現出來。

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等圖像控件即可。適合存儲量大但不是太重要的圖片。

第二種方法常用,簡單,實用。


03

注意事項和規范

1、注意事項

1)建表的時候一般會增加冗余字段,比如 unique_code,用于存儲備用字段來標定唯一性。

2)建表的時候可以增加預留字段:當數據量大的時候很難再加新字段,所以預估到數據增張較快的,一定要預留幾個字段空位。便于日后數據表擴展。

3)當一個表無法再加字段的時候可以增加擴展表 ,后綴_ext ,與原表通過id關聯起來。

4)新增表字段:要考慮,到歷史數據初始化。比如歷史數據全部為空或刷為某一個值。

5)統一規范表名前綴,比如可以定義t_前綴標示類型, f_前綴表示從其他系統獲取的。

2、命名規范

命名規范總的原則是可讀性強,容易維護,具體的規范如下:

  • 庫名,表名,字段名,索引名統一使用小寫字母,數字,以下劃線分割。

  • 庫名,表名,字段名不要超過30個字符長度。

  • 庫名,表名,字段名不能單獨使用DB的關鍵字,像lock,time,date,return,user等。

  • 數據庫的名稱為:業務名稱_[業務模塊]_db,eg:oms_db,oms_history_db。

  • 非唯一索引按照“idx_字段名稱[_字段名稱]”,唯一索引按照“uk_字段名稱[_字段名稱]”進行命名。

  • 業務系統使用數據庫賬號命名為:業務名稱_[r|w]。

3、表名前綴

  • 統計類數據表前綴:s

  • 基礎數據表前綴:b

  • 基礎類型維護數據表前綴:t

  • 原始數據表前綴:in

  • 訂單數據表前綴:o

  • 同步隊列數據類型表前綴:iq

  • 財務數據表前綴:f

4、索引設計規范

  • 單表索引個數不能超過30個

  • 關聯字段,業務外鍵,create_time 字段必須建索引

  • 在選擇性高的字段創建索引,注意組合索引的順序,利用索引的最左原則

  • 使用復合索引,而不是添加新的索引

  • 避免冗余索引

idx_a_b_c(a,b,c)

idx_a(a)

idx_a_b(a,b)

04

應用數據庫

1、安裝數據管理系統

以下介紹最常用的MYSQL。

首先要在PC端安裝MYSQL數據庫服務器,然后通過公司的數據庫地址、密碼連接上數據庫(具體可以找開發協助完成)。

這樣你就可以進入到數據庫的各個表里看數據。一個公司若有多個系統,每個系統有至少一個屬于自己的數據庫,也有一個系統的數據分庫存放的。

2、熟悉數據庫管理系統

數據庫的表可以創建很多個,每個表描述一種實體與屬性關系。每個屬性就是一個字段。

同一個數據庫的表可以連表查詢。不同數據庫的表不能連表。因此在業務發展過程中會出現拆遷庫、拆表的行為。

1)數據組成

一個基本的數據由數據類型、字段(也叫變量或者參數)、字段值組成。

CREATE TABLE `s_rule` (

?`rule_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主鍵ID’,

?`rule_name` varchar(255) NOT NULL DEFAULT ” COMMENT ‘規則名稱’,

?`rule_type_id` int(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這一列找),就可以得知這一行的位置,也就是找到了這一行。可見,索引是用來定位的。

索引分為聚簇索引和非聚簇索引兩種,了解即可。

主鍵唯一,但是表的索引可以有多個。

增加索引也有許多不利的方面 :

  • 第一,創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。

  • 第二,索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。

  • 第三,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

05

常用查詢語句

1、數據查詢介紹

操作數據庫的話,全世界的程序員都是統一的,都是用SQL語句來操作數據庫。

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

產品更多是查詢、統計,或者寫出更新/插入/刪除語句,讓開發執行。

查詢語句中你可以使用一個或者多個表,表之間使用逗號(,)分割,并使用WHERE語句來設定查詢條件。

SELECT 命令可以讀取一條或者多條記錄。

可以使用星號*來代替全部字段,SELECT語句會返回表的所有字段數據。

可以使用 WHERE 語句來包含任何條件。

可以使用 LIMIT 屬性來設定返回的記錄數。

可以通過OFFSET指定SELECT語句開始查詢的數據偏移量。等等。

2、SQL語句技巧簡介

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

還有其他連表方式既然用網絡的圖片:

17)數據備份。

選中數據,右鍵點擊復制為insert/update,可以直接將篩選的字段備份為更新或插入語句,一旦需要還原的時候可以直接執行這幾個語句。

18)多個獨立的查詢語句之間可以用;隔開,同時執行,會分別輸出。

↘好文推薦:

盤點:2020年PMCAFF最受歡迎的文章!

字節跳動的產品經理是怎么工作的?

優惠券設計 | 從生成規則到優惠金額分攤

點個“在看”吧

總結

以上是生活随笔為你收集整理的跟开发对接,要了解哪些数据库知识?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。