1. 準(zhǔn)備工作
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比巢湖網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式巢湖網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋巢湖地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
在開始之前,請確保已經(jīng)安裝好了MySQL數(shù)據(jù)庫并保證它能正常運(yùn)行,而且需要安裝好PyMySQL庫。
2. 連接數(shù)據(jù)庫
這里,首先嘗試連接一下數(shù)據(jù)庫。假設(shè)當(dāng)前的MySQL運(yùn)行在本地,用戶名為root,密碼為123456,運(yùn)行端口為3306。這里利用PyMySQL先連接MySQL,然后創(chuàng)建一個新的數(shù)據(jù)庫,名字叫作spiders,代碼如下:
import pymysql
db = pymysql.connect(host='localhost',user='root', password='123456', port=3306)
cursor = db.cursor()
cursor.execute('SELECT VERSION()')
data = cursor.fetchone()
print('Database version:', data)
cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
db.close()
運(yùn)行結(jié)果如下:
Database version: ('5.6.22',)
這里通過PyMySQL的connect()方法聲明一個MySQL連接對象db,此時需要傳入MySQL運(yùn)行的host(即IP)。由于MySQL在本地運(yùn)行,所以傳入的是localhost。如果MySQL在遠(yuǎn)程運(yùn)行,則傳入其公網(wǎng)IP地址。后續(xù)的參數(shù)user即用戶名,password即密碼,port即端口(默認(rèn)為3306)。
連接成功后,需要再調(diào)用cursor()方法獲得MySQL的操作游標(biāo),利用游標(biāo)來執(zhí)行SQL語句。這里我們執(zhí)行了兩句SQL,直接用execute()方法執(zhí)行即可。第一句SQL用于獲得MySQL的當(dāng)前版本,然后調(diào)用fetchone()方法獲得第一條數(shù)據(jù),也就得到了版本號。第二句SQL執(zhí)行創(chuàng)建數(shù)據(jù)庫的操作,數(shù)據(jù)庫名叫作spiders,默認(rèn)編碼為UTF-8。由于該語句不是查詢語句,所以直接執(zhí)行后就成功創(chuàng)建了數(shù)據(jù)庫spiders。接著,再利用這個數(shù)據(jù)庫進(jìn)行后續(xù)的操作。
3. 創(chuàng)建表
一般來說,創(chuàng)建數(shù)據(jù)庫的操作只需要執(zhí)行一次就好了。當(dāng)然,我們也可以手動創(chuàng)建數(shù)據(jù)庫。以后,我們的操作都在spiders數(shù)據(jù)庫上執(zhí)行。
創(chuàng)建數(shù)據(jù)庫后,在連接時需要額外指定一個參數(shù)db。
一般來說mysql里面還是不要存儲圖片,你可以把圖片的url地址存儲在mysql里面,這樣mysql里面就只需要存儲文本了
(一)MyISAM
它不支持事務(wù),也不支持外鍵,尤其是訪問速度快,對事務(wù)完整性沒有要求或者以SELECT、INSERT為主的應(yīng)用基本都可以使用這個引擎來創(chuàng)建表。
每個MyISAM在磁盤上存儲成3個文件,其中文件名和表名都相同,但是擴(kuò)展名分別為:
.frm(存儲表定義)
MYD(MYData,存儲數(shù)據(jù))
MYI(MYIndex,存儲索引)
(二)InnoDB
InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全。但是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數(shù)據(jù)和索引。
(三)MEMORY
memory使用存在內(nèi)存中的內(nèi)容來創(chuàng)建表。每個MEMORY表實(shí)際對應(yīng)一個磁盤文件,格式是.frm。MEMORY類型的表訪問非???,因?yàn)樗綌?shù)據(jù)是放在內(nèi)存中的,并且默認(rèn)使用HASH索引,但是一旦服務(wù)器關(guān)閉,表中的數(shù)據(jù)就會丟失,但表還會繼續(xù)存在。
默認(rèn)情況下,memory數(shù)據(jù)表使用散列索引,利用這種索引進(jìn)行“相等比較”非??欤菍Α胺秶容^”的速度就慢多了。因此,散列索引值適合使用在"="和"="的操作符中,不適合使用在""或""操作符中,也同樣不適合用在order?by字句里。如果確實(shí)要使用""或""或betwen操作符,可以使用btree索引來加快速度。
存儲在MEMORY數(shù)據(jù)表里的數(shù)據(jù)行使用的是長度不變的格式,因此加快處理速度,這意味著不能使用BLOB和TEXT這樣的長度可變的數(shù)據(jù)類型。VARCHAR是一種長度可變的類型,但因?yàn)樗贛ySQL內(nèi)部當(dāng)作長度固定不變的CHAR類型,所以可以使用。
四)MERGE
merge存儲引擎是一組MyISAM表的組合,這些MyISAM表結(jié)構(gòu)必須完全相同,MERGE表中并沒有數(shù)據(jù),對MERGE類型的表可以進(jìn)行查詢、更新、刪除的操作,這些操作實(shí)際上是對內(nèi)部的MyISAM表進(jìn)行操作。對于對MERGE表進(jìn)行的插入操作,是根據(jù)INSERT_METHOD子句定義的插入的表,可以有3個不同的值,first和last值使得插入操作被相應(yīng)的作用在第一個或最后一個表上,不定義這個子句或者為NO,表示不能對這個MERGE表進(jìn)行插入操作??梢詫ERGE表進(jìn)行drop操作,這個操作只是刪除MERGE表的定義,對內(nèi)部的表沒有任何影響。MERGE在磁盤上保留2個以MERGE表名開頭文件:.frm文件存儲表的定義;.MRG文件包含組合表的信息,包括MERGE表由哪些表組成,插入數(shù)據(jù)時的依據(jù)??梢酝ㄟ^修改.MRG文件來修改MERGE表,但是修改后要通過flush?table刷新。
文章標(biāo)題:MySQL要怎么存儲種類,mysql可以存什么
分享路徑:http://chinadenli.net/article18/hegidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站制作、服務(wù)器托管、面包屑導(dǎo)航、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)