一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Mongodb(一)

 正合叔 2019-10-31

正文共: 8098字 6圖
預(yù)計(jì)閱讀時(shí)間: 21分鐘

每日分享

The world is moving so fast that the person who says it can't be done is generally interrupted by someone doing it.

世界變化的如此之快,以至于那些光說不做的人,通常被動(dòng)手去做的人所淘汰。

小閆語錄

少些抱怨,少些碎碎念,將這些時(shí)間用在去解決問題上,你會(huì)發(fā)現(xiàn)問題也許已經(jīng)解決了。打嘴炮很爽,但是舒服的事情往往都是無意義的消遣。直接動(dòng)手去干,也許很難,但是你敢于開始就已經(jīng)成功了一半。不要眼高手低,還是去做,來點(diǎn)實(shí)際的比較好。

Mongodb(一)

1.數(shù)據(jù)庫相關(guān)知識(shí)點(diǎn)回顧

1.數(shù)據(jù)庫分為關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。

2.SQL數(shù)據(jù)庫中包含Oracle(閉源、收費(fèi))、MySQL(開源、免費(fèi))和SQL Server。

3.三范式:表字段的原子性(不可拆分);滿足第一范式的基礎(chǔ)上,有主鍵依賴;滿足第一二范式的基礎(chǔ)上,非主屬性之間沒有依賴關(guān)系。

比如考試三科成績(jī)的總分,這個(gè)字段就是可拆分的,其實(shí)是冗余字段。

4.淘寶使用的也是MySQL,但不是直接使用,而是將其改寫才使用。因?yàn)殡娚叹W(wǎng)站的高并發(fā)量,涉及到大量讀寫,沒有數(shù)據(jù)庫適用。

5.NoSQL數(shù)據(jù)庫(非關(guān)系型數(shù)據(jù)庫):MongoDB、redis。

6.redis是使用c語言編寫的、內(nèi)存型的、支持網(wǎng)絡(luò)、持久化、key-value形式的非關(guān)系型數(shù)據(jù)庫。redis是單線程的。持久化是指自動(dòng)的將數(shù)據(jù)保存到磁盤中。

7.mysql是c++寫的。

進(jìn)入一個(gè)新的公司盡快熟悉說明文檔、數(shù)據(jù)庫表之類的東西。

8.NoSQL有兩種解釋,一種是Not Only SQL,代表的是不僅僅是數(shù)據(jù)庫;另一種是非關(guān)系型數(shù)據(jù)庫。

9.NoSQL指的是非關(guān)系型的數(shù)據(jù)庫,是相對(duì)于關(guān)系型數(shù)據(jù)庫的統(tǒng)稱,主要是解決大規(guī)模數(shù)據(jù)存儲(chǔ)的挑戰(zhàn)。

10.reids存儲(chǔ)是鍵值型的數(shù)據(jù),MongoDB則是文檔型的數(shù)據(jù)。

11.SQL注重于關(guān)系,NoSQL則是注重存儲(chǔ)。NoSQL處理不了特別復(fù)雜的關(guān)系表。

12.MongoDB是可擴(kuò)展的高性能、開源、面向文檔(分布式文件存儲(chǔ))的NoSQL型的數(shù)據(jù)庫。

13.MongoDB的讀寫性能在介于redis和mysql之間。redis的性能最高。

redis是內(nèi)存型,而MongoDB平時(shí)存在磁盤,使用時(shí)會(huì)加載到內(nèi)存中,MySQL則是磁盤。

14.MySQL的擴(kuò)展性差,大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難。MongoDB易擴(kuò)展,大數(shù)據(jù)量高性能,靈活的數(shù)據(jù)模型,高可用。

15.關(guān)系型數(shù)據(jù)庫在當(dāng)前時(shí)代的缺點(diǎn):數(shù)據(jù)格式單一;高并發(fā)讀寫性能低;可擴(kuò)展性低。

2.MongoDB

1.MongoDB中的三要素:數(shù)據(jù)庫、集合(可以簡(jiǎn)單的理解為表)、文檔(可以簡(jiǎn)單的理解為行)

2.MongoDB中的數(shù)據(jù)存儲(chǔ)是Bson的形式存儲(chǔ)的,Bson是二進(jìn)制的json,所以看上去記錄的形式類似于json數(shù)據(jù)。

3.MongoDB擴(kuò)展性非常好。因?yàn)樵贛ongoDB中文檔結(jié)構(gòu)可以不同,隨意對(duì)文檔結(jié)構(gòu)進(jìn)行擴(kuò)展,不像MySQL中每個(gè)字段都是固定好的,你需要往里填數(shù)據(jù)。

4.為什么要使用NoSQL?

答:易擴(kuò)展;讀寫速度快;高性能和高可擴(kuò)展;非結(jié)構(gòu)化與不可預(yù)知數(shù)據(jù)(數(shù)據(jù)模型靈活)。

5.為什么使用MongoDB?

答:高可擴(kuò)展性;高性能存儲(chǔ);使用簡(jiǎn)單;部署簡(jiǎn)單。

2.1MongoDB主要應(yīng)用場(chǎng)景

1.網(wǎng)站數(shù)據(jù):網(wǎng)站實(shí)時(shí)操作比如插入,更新和查詢。

2.緩存:性能高。

3.大量、低價(jià)值數(shù)據(jù)的存儲(chǔ):日志監(jiān)控?cái)?shù)據(jù)、爬蟲數(shù)據(jù)。

4.集群

5.json格式的數(shù)據(jù):MongoDB采用的Bson(binary json)數(shù)據(jù)格式。

面試題

一個(gè)并發(fā)量高的網(wǎng)站,其數(shù)據(jù)需要實(shí)時(shí)更新,假如緩存數(shù)據(jù)和磁盤數(shù)據(jù)不一致,我們?cè)趺唇鉀Q這個(gè)問題?

答:我們對(duì)于訪問量高的頁面,可以將MySQL數(shù)據(jù)中的數(shù)據(jù)讀取出來放到redis或者M(jìn)ongoDB中,使得下次訪問,直接從緩存中讀取即可,提高效率。為了解決緩存數(shù)據(jù)和磁盤數(shù)據(jù)不一致,我們可以使用定時(shí)任務(wù)或者異步,但是都存在一定的缺點(diǎn)。最好的解決方法是:我們?cè)谛薷南嚓P(guān)數(shù)據(jù)的接口中添加業(yè)務(wù)邏輯,就是將數(shù)據(jù)修改后馬上刪除緩存中的相關(guān)數(shù)據(jù),使其在訪問的時(shí)候就直接讀取磁盤的內(nèi)容。

2.2MongoDB安裝注意點(diǎn)

1.版本選擇時(shí),盡量選取偶數(shù)版,偶數(shù)版為穩(wěn)定版(release),基本沒有bug。

偶數(shù)指版本號(hào)為偶數(shù)。

2.位數(shù)選擇64位,32位存在存儲(chǔ)上限。

3.安裝完只有要記得配置環(huán)境變量,使其可以在任意目錄下開啟使用MongoDB數(shù)據(jù)庫。

4.阻塞進(jìn)程就是如果關(guān)閉當(dāng)前終端,那么進(jìn)程就會(huì)關(guān)閉。守護(hù)進(jìn)程就是可以在后臺(tái)運(yùn)行。

5. 27017是MongoDB的默認(rèn)端口。redis默認(rèn)端口是 6379。MySQL默認(rèn)端口是 3306。

2.3基本命令

開啟MongoDB服務(wù)器:

  1. sudo mongod

數(shù)據(jù)默認(rèn)存儲(chǔ)在 /data/db

以守護(hù)式在后臺(tái)開啟一個(gè)子進(jìn)程:

  1. sudo mongod --logpath=path --dbpath=path --logappend --fork

--dbpath: 指定數(shù)據(jù)庫的存放路徑。

--logpath: 指定日志的存放路徑。

--append: 或--logappend 設(shè)置日志的寫入形式為追加模式。不會(huì)覆蓋。

--fork: 或 -fork后臺(tái)開啟新的進(jìn)程運(yùn)行mongodb服務(wù)。

使用指定的目錄存放數(shù)據(jù):

  1. sudo mongod --dbpath=/User/data/db

指定加載配置文件:

  1. sudo mongod -f logfile

查看是否開啟成功:

  1. ps aux | grep mongod

進(jìn)入MongoDB的客戶端:

  1. mongo

退出客戶端:

  1. exit

ctrl + c也可以退出

終端中遠(yuǎn)程關(guān)閉服務(wù)器

  1. use admin

  2. db.shutdownServer() # 在客戶端關(guān)閉MongoDB服務(wù)器

2.4權(quán)限管理

剛安裝完畢的MongoDB默認(rèn)不適用權(quán)限認(rèn)證方式啟動(dòng),然而公網(wǎng)運(yùn)行系統(tǒng)要設(shè)置權(quán)限以保證數(shù)據(jù)安全。

2.4.1開啟權(quán)限認(rèn)證的方式

權(quán)限認(rèn)證默認(rèn)是關(guān)閉的。

1.在啟動(dòng)數(shù)據(jù)庫的時(shí)候添加 --auth參數(shù)。以權(quán)限認(rèn)證的方式啟動(dòng)。

  1. sudo mongod --auth

2.在配置文件中添加 auth=true,然后加載配置文件啟動(dòng)。

2.4.2權(quán)限認(rèn)證創(chuàng)建用戶登錄的基本步驟

1.首先在普通模式下啟動(dòng),創(chuàng)建用戶,指定權(quán)限。

  1. sudo mongod

  2. use admin

所有的用戶都必須使用管理員賬戶創(chuàng)建

2.選擇數(shù)據(jù)庫后使用相應(yīng)方法創(chuàng)建用戶及權(quán)限:

  1. db.createUser(

  2. user:'用戶名',

  3. pwd:'密碼',

  4. roles:[{role:'權(quán)限',db:'數(shù)據(jù)庫'}]

  5. )

roles為權(quán)限設(shè)置的文檔,文檔中db為指定的數(shù)據(jù)庫,role為權(quán)限(常用的權(quán)限為root、read、readWrite),其中readWrite為小駝峰的寫法。

注意:MongoDB中可以往一個(gè)不存在的數(shù)據(jù)庫和集合中進(jìn)行操作,如果插入數(shù)據(jù)成功,之后就會(huì)自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫。

3.關(guān)閉MongoDB服務(wù)器,以認(rèn)證模式啟動(dòng)。

  1. sudo mongod --auth

4.mongo進(jìn)入終端,切換到admin數(shù)據(jù)庫下,認(rèn)證:

  1. db.auth('用戶名','密碼')

返回值為1,表示認(rèn)證成功。

只能對(duì)指定權(quán)限的數(shù)據(jù)庫進(jìn)行相關(guān)操作。

2.4.3其他命令

查看已經(jīng)創(chuàng)建的用戶權(quán)限:

  1. show users

  2. use admin

  3. db.system.users.find()

數(shù)據(jù)庫權(quán)限認(rèn)證:(認(rèn)證的時(shí)候必須是該用戶在哪個(gè)數(shù)據(jù)庫下創(chuàng)建的,在哪個(gè)數(shù)據(jù)庫進(jìn)行認(rèn)證。

  1. use dbname

  2. db.auth(user,pwd)

刪除某一用戶及權(quán)限:

  1. db.dropUser(用戶名)

在該用戶所在的數(shù)據(jù)庫下執(zhí)行刪除命令。

2.5數(shù)據(jù)庫的基本操作

2.5.1數(shù)據(jù)庫相關(guān)操作

查看當(dāng)前使用數(shù)據(jù)庫:

  1. db

查看磁盤上存在的數(shù)據(jù)庫:

  1. show dbs

切換到指定的數(shù)據(jù)庫:

  1. use dbname

1.數(shù)據(jù)庫不存在也可以進(jìn)行切換。

2.使用use之后并沒有創(chuàng)建數(shù)據(jù)庫。

3.數(shù)據(jù)庫是在手動(dòng)創(chuàng)建集合或者使用集合的時(shí)候創(chuàng)建的。

刪除當(dāng)前的數(shù)據(jù)庫:

  1. db.dropDatabase()

使用該命令時(shí)必須已經(jīng)選擇了當(dāng)前要?jiǎng)h除的數(shù)據(jù)庫。

2.5.2集合相關(guān)操作

查看當(dāng)前數(shù)據(jù)庫中的集合列表(選擇數(shù)據(jù)庫之后使用):

  1. show collections

創(chuàng)建集合:

  1. db.createCollection(name)

刪除集合:

  1. db.collection.drop()

2.6固定集合

固定集合類似于循環(huán)隊(duì)列,當(dāng)沒有存儲(chǔ)空間的時(shí)候,最老的數(shù)據(jù)將會(huì)被新數(shù)據(jù)覆蓋。

MongoDB中集合的存儲(chǔ)空間默認(rèn)最大為16M,也可以使用固定集合指定大小。

創(chuàng)建固定集合:

  1. db.createCollection('集合名稱',{capped:true,size:大小})

size的單位是字節(jié)。最小有限制為255字節(jié),如果設(shè)置的大小小于255,那么會(huì)設(shè)置為255,但是這一數(shù)值根據(jù)版本有可能不同。

適用場(chǎng)景:日志。

后面的會(huì)將最前面的覆蓋掉。

特點(diǎn):插入速度快,按照順序查詢速度快,新數(shù)據(jù)會(huì)替換舊數(shù)據(jù),不能使用remove刪除數(shù)據(jù)。

2.6.1固定集合相關(guān)操作

判斷一個(gè)集合是否為固定大小集合:

  1. db.colname.isCapped()

將一個(gè)普通集合轉(zhuǎn)換為固定大小集合,無法將固定集合轉(zhuǎn)換為普通集合:

  1. db.runCommand({'convertToCapped':'colname',size:n})

2.7MongoDB的數(shù)據(jù)類型

ObjectID: 文檔ID/數(shù)據(jù)的ID,數(shù)據(jù)的主鍵。

4字節(jié)時(shí)間戳;3字節(jié)機(jī)器id;2字節(jié)進(jìn)程id;3字節(jié)增量值。

此字段如果不指定,系統(tǒng)會(huì)自動(dòng)進(jìn)行填寫,我們也可以進(jìn)行自定義。

String: 字符串,最常用,必須是有效的UTF-8

Boolean: 存儲(chǔ)一個(gè)布爾值,true或false

Integer: 整數(shù)可以是32位或64位,這取決于服務(wù)器

Double: 浮點(diǎn)數(shù)

Arrays: 數(shù)組/列表。

python中的列表,js中的數(shù)組。

Object: mongodb中的一條數(shù)據(jù)/文檔,即文檔嵌套文檔。

Null: 存儲(chǔ)null值

Timestamp: 時(shí)間戳,表示從1970-1-1到現(xiàn)在的總秒數(shù)

Date: 存儲(chǔ)當(dāng)前日期或時(shí)間的UNIX時(shí)間格式

3.MongoDB的增刪改查

查詢操作:

  1. db.colname.find(query)

根據(jù)查詢條件進(jìn)行查詢,并返回查詢結(jié)果。

如果不指定query,那么就是所有集合的文檔結(jié)構(gòu)。

單條數(shù)據(jù)插入:

  1. db.colname.insert(data)

data為要插入的數(shù)據(jù),格式類似json,或者Python字典,可以直接輸入一個(gè)字典格式的數(shù)據(jù),也可以存一個(gè)變量再插入這個(gè)變量。

多條數(shù)據(jù)插入:

  1. db.colname.insert([data_list])

  2. # 多條數(shù)據(jù)插入

  3. db.t2.insert([{name:'wang'},{name:'zhang'}])

data_list為列表,列表中的每一項(xiàng)都是文檔格式(python 字典)

3.1更新操作

語法:

  1. db.colname.update({query},{update})

query為查詢條件,update為更新數(shù)據(jù)

1.全文檔覆蓋更新

  1. db.colname.update({query},{key,vlaue})

將通過query條件查詢出來的文檔替換為第二個(gè)參數(shù)指定的數(shù)據(jù)

2.指定鍵值更新

  1. db.colname.update({query},{$set:{key:value}})

將通過query條件查詢出來的文檔的指定屬性設(shè)置為指定的值,而不會(huì)覆蓋原有的其他數(shù)據(jù),如果更新值存在則更新,不存在則添加

3.批量鍵值更新

  1. db.colname.update(query,{$set:{key:value}},{multi:true})

multi決定是否是批量更新還是只更新一條數(shù)據(jù),并且只有在對(duì)數(shù)據(jù)字段值操作(使用$)的時(shí)候才能使用

multi如果不指定默認(rèn)為false

4.不指定查詢條件進(jìn)行修改

  1. db.colname.update({ },{update},{multi:true})

3.2刪除操作

1.指定刪除:

  1. db.colname.remove(query,{justOne:boolean})

justOne對(duì)應(yīng)的值決定刪除單條數(shù)據(jù)還是多條數(shù)據(jù)。

2.刪除全部數(shù)據(jù):

  1. db.colname.remove({}) # 刪除集合的所有數(shù)據(jù)

  2. db.colname.drop() # 刪除集合

3.3保存操作

  1. db.colname.save(data)

save = insert + update

以_id為判斷依據(jù),存在該id對(duì)應(yīng)的數(shù)據(jù)則更新數(shù)據(jù),不存在則插入數(shù)據(jù)

3.4查詢操作

多數(shù)據(jù)查詢:

  1. db.colname.find(query)

1.帶query則是條件查詢

2.不帶query是顯示集合中的所有數(shù)據(jù)

單條數(shù)據(jù)查詢:

  1. db.colname.findOne(query)

查詢單條數(shù)據(jù)的時(shí)候,返回結(jié)果自動(dòng)美化

查詢數(shù)據(jù)美化:

  1. db.colname.find().pretty()

比較運(yùn)算符

符號(hào)說明英文
$lt小于less than
$lte小于等于less than equal
$gt大于great than
$gte大于等于great than equal
$ne不等于not equal

比較運(yùn)算符在查詢中格式:

  1. db.colname.find({key:{$lt:n}})

多條件查詢, 操作:

  1. db.colname.find({key:value,key1:value1})

  2. db.colname.find({$and:[{key:value},{key1:value1}]})

多條件查詢, 操作:

  1. db.colname.find{$or:[{key:value},{key1:value1}]}

在指定范圍中:

  1. db.colname.find({key:{$in:[n1,n2,n3]}})

不再指定范圍中:

  1. db.colname.find({key:{$nin:[n1,n2,n3]}})

使用正則表達(dá)式:

  1. {key:/正則表達(dá)式/}

  2. {key:{$regex:’正則表達(dá)式’}}

注意:正則表達(dá)式只能應(yīng)用到字符串類型的數(shù)據(jù)中。

字符串中“123”是將1,2,3分別存儲(chǔ)在內(nèi)存空間的,而整型123是整體指向一塊存儲(chǔ)空間。

3.5自定義查詢

1.為什么有自定義查詢?

答:有時(shí)候查詢條件很復(fù)雜,前面的查詢方法實(shí)現(xiàn)起來都不方便,于是我們可以使用自定義查詢搞定復(fù)雜操作。

2.什么是自定義查詢?

答:自定義查詢是使用js語句實(shí)現(xiàn)的查詢

  1. db.colname.find({

  2. $where:function(){

  3. return this.key > 3

  4. }

  5. })

1.以這種方式查詢,實(shí)際上是對(duì)find()的結(jié)果應(yīng)用一遍自定義的js的匿名函數(shù)。this的作用同Python的self,this指的是每一條文檔。

2.自定義查詢可以定義復(fù)雜的判斷條件。

3.6查詢結(jié)果的進(jìn)一步操作

跳過2條數(shù)據(jù)之后的查詢結(jié)果:

  1. db.colname.find().skip(2)

限制查詢2條數(shù)據(jù):

  1. db.colname.find().limit(2)

限制和跳過兩個(gè)條件混合使用的時(shí)候會(huì)同步使用,沒有先后順序。

  1. db.colname.find().limit(2).skip(2)

  2. 同:

  3. db.colname.find().skip(2).limit(2)

投影操作:投影就是顯示還是不顯示。

  1. db.colname.find({},{_id:0}) # 不顯示id

  2. db.colname.find({},{_id:1}) # 顯示id

id默認(rèn)是不顯示。

排序操作:

  1. db.colname.find().sort({key:1})

sort內(nèi)不指定條件會(huì)報(bào)錯(cuò)。

設(shè)定數(shù)據(jù)格式為字典格式,鍵為排序依據(jù)的字段,值決定升序還是降序。1表示升序,-1表示降序

統(tǒng)計(jì)操作:

  1. db.colname.find(query).count()

  2. db.colname.count(query)

消除重復(fù)操作:

  1. db.colname.distinct('字段名',{條件})

字段名中使用字符串。

4.MongoDB的索引

4.1面試題

索引的原理?

答: 二叉樹/B+樹/紅黑樹。

4.2 索引

索引可以提升查詢速度,提升數(shù)據(jù)庫查詢的性能,但是犧牲了數(shù)據(jù)庫的插入和更新速度。頻繁插入修改的數(shù)據(jù)不適合建立索引。

最大的缺點(diǎn)就是在插入數(shù)據(jù)的時(shí)候,之前的索引就會(huì)變化。

查看語句的執(zhí)行情況:

  1. db.colname.find(query).explain(‘executionStats’)

創(chuàng)建索引的方法:

  1. db.集合名.ensureIndex({屬性:1})

創(chuàng)建索引使用的文檔中鍵為設(shè)置索引的字段,值為1表示索引按照升序存儲(chǔ),值為-1則表示索引按照降序存儲(chǔ)。

當(dāng)有大量數(shù)據(jù)時(shí),創(chuàng)建索引會(huì)非常緩慢,因此可以后臺(tái)創(chuàng)建索引,在創(chuàng)建索引的時(shí)候添加{background:true}

  1. db.colname.ensureIndex({key:1},{background:true})

聯(lián)合索引:

  1. db.colname.ensureIndex({key1:1,key2:1}

  2. # 創(chuàng)建聯(lián)合索引之后,可以使用key1或者key1,key2的查詢進(jìn)行查找

查看已經(jīng)存在的索引:

  1. db.colname.getIndexes()

創(chuàng)建唯一索引:

  1. db.colname.ensureIndex({‘key’:1},{“unique”:true})

注意:當(dāng)創(chuàng)建一個(gè)key為唯一索引時(shí),新插入的數(shù)據(jù)如果key的值與已存在的數(shù)據(jù)相同,則會(huì)報(bào)錯(cuò)。當(dāng)對(duì)已存在數(shù)據(jù)的集合創(chuàng)建唯一索引時(shí),可能會(huì)因?yàn)橹貜?fù),導(dǎo)致創(chuàng)建不成功,使用dropDups可以刪除重復(fù)文檔,但是我們一般不建議使用:

  1. db.colname.ensureIndex({‘key’:1},{“unique”:true,”dropDups”:true})

刪除索引:

  1. db.colname.dropIndex({‘key’:1})

5.備份和恢復(fù)

1.為什么進(jìn)行數(shù)據(jù)備份?

答:數(shù)據(jù)備份指的是將數(shù)據(jù)備份到指定的目錄,并在需要的時(shí)候進(jìn)行恢復(fù),一般用于災(zāi)難處理。

2.進(jìn)行備份(在終端中使用命令):

  1. mongodump -h host -d dbname -o directionary

3.如何進(jìn)行數(shù)據(jù)恢復(fù):

  1. mongorestore -h host -d dbname --dir directionary

5.1數(shù)據(jù)的導(dǎo)出和導(dǎo)入

導(dǎo)出成json文件:

  1. mongoexport -d dbname -c colname -o stu.json

導(dǎo)出成csv文件:

  1. mongoexport -d dbname -c colname --type csv -f filed1,filed2,… -o filename.csv

為什么進(jìn)行數(shù)據(jù)的導(dǎo)出遇導(dǎo)入?

答:數(shù)據(jù)庫中的數(shù)據(jù)在與其他平臺(tái)和應(yīng)用進(jìn)行交互時(shí)需要按照指定格式導(dǎo)出交給后續(xù)步驟進(jìn)行處理。

6.python與MongoDB的交互

導(dǎo)入

  1. from pymongo import MongoClient

創(chuàng)建連接的數(shù)據(jù)庫對(duì)象

  1. client= MongoClient(host,port)

連接池默認(rèn)是100個(gè)。

指定連接的數(shù)據(jù)庫/集合/文檔

  1. stu = client['Ethanyan']['stu']

python中find查詢返回的是cursor對(duì)象,需要對(duì)游標(biāo)對(duì)象進(jìn)行遍歷,得到查詢結(jié)果

  1. # 遍歷游標(biāo)對(duì)象

  2. for i in stu.find():

  3. print(i)

7.面試題

關(guān)系型和非關(guān)系型數(shù)據(jù)庫?

答:關(guān)系型指二維表格的形式存儲(chǔ)數(shù)據(jù),列叫做字段、行叫做記錄,表和表之間有關(guān)系,主鍵、外鍵、引用。非關(guān)系型數(shù)據(jù)庫是文檔形式存儲(chǔ)數(shù)據(jù),沒有表的概念,有集合(表)和文檔(記錄),存儲(chǔ)基于硬盤存儲(chǔ)數(shù)據(jù),吧硬盤中的數(shù)據(jù)放入內(nèi)存中進(jìn)行讀寫操作。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    丝袜诱惑一区二区三区| 精品国产av一区二区三区不卡蜜| 91日韩欧美在线视频| 内射精品欧美一区二区三区久久久 | 亚洲一区二区三区中文久久| 日韩色婷婷综合在线观看| 欧美黑人精品一区二区在线| 亚洲专区一区中文字幕| 国产三级不卡在线观看视频| 国产成人精品国产成人亚洲| 狠狠干狠狠操在线播放| 欧美中文字幕日韩精品| 亚洲欧美日韩色图七区| 美国黑人一级黄色大片| 国产一级精品色特级色国产| 在线观看免费视频你懂的| 国产伦精品一一区二区三区高清版 | 99久久国产精品亚洲| 欧美一区二区口爆吞精| 丰满人妻少妇精品一区二区三区| 国内外激情免费在线视频| 国产午夜精品在线免费看| 一个人的久久精彩视频| 久久99国产精品果冻传媒| 欧美日韩三区在线观看| 欧美精品日韩精品一区| 精品老司机视频在线观看| 国产精品久久男人的天堂| 视频一区日韩经典中文字幕| 久久精品国产99精品亚洲| 久久热在线视频免费观看| 初尝人妻少妇中文字幕在线| 中日韩免费一区二区三区| 丰满少妇高潮一区二区| 99热中文字幕在线精品| 国产精品亚洲精品亚洲| 欧美一级日韩中文字幕| 国产乱久久亚洲国产精品| 午夜福利视频偷拍91| 国产级别精品一区二区视频| 中文字幕有码视频熟女|