學(xué)MySQL思考哪些問(wèn)題

這篇文章主要介紹“學(xué)MySQL思考哪些問(wèn)題”,在日常操作中,相信很多人在學(xué)MySQL思考哪些問(wèn)題問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”學(xué)MySQL思考哪些問(wèn)題”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為豐縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),豐縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

每個(gè)表中都要有一個(gè)主鍵嗎?

并不是每一個(gè)表中都需要主鍵,一般的,如果多個(gè)表之間進(jìn)行連接操作時(shí),需要用到主鍵。因此并不需要為每個(gè)表建立主鍵,而且有些情況最好不使用主鍵。

CHAR與VARCHAR之間的特點(diǎn)與選擇

CHAR和VARCHAR的區(qū)別:CHAR是固定長(zhǎng)度字符,VARCHAR是可變長(zhǎng)度字符,CHAR會(huì)自動(dòng)刪除插入數(shù)據(jù)的尾部 空格,VARCHAR不會(huì)刪除尾部空格。

CHAR是固定長(zhǎng)度,所以它的處理速度比VARCHAR的速度要快,但是它的缺點(diǎn)就是浪費(fèi) 存儲(chǔ)空間。所以對(duì)存儲(chǔ)不大,但在速度上有要求的可以使用CHAR類型,反之可以使用 VARCHAR類型來(lái)實(shí)現(xiàn)。

存儲(chǔ)引擎對(duì)于選擇CHAR和VARCHAR的影響:

  • 對(duì)于MyISAM存儲(chǔ)引擎:最好使用固定長(zhǎng)度的數(shù)據(jù)列代替可變長(zhǎng)度的數(shù)據(jù)列。這樣可以使 整個(gè)表靜態(tài)化,從而使數(shù)據(jù)檢索更快,用空間換時(shí)間。

  • 對(duì)于InnoDB存儲(chǔ)引擎:使用可變長(zhǎng)度的數(shù)據(jù)列,因?yàn)镮nnoDB數(shù)據(jù)表的存儲(chǔ)格式不分固定 長(zhǎng)度和可變長(zhǎng)度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照 實(shí)際的長(zhǎng)度存儲(chǔ),比較節(jié)省空間,所以對(duì)磁盤I/O和數(shù)據(jù)存儲(chǔ)總量比較好。

DISTINCT可以應(yīng)用于所有的列嗎?

查詢結(jié)果中,如果需要對(duì)列進(jìn)行降序排序,可以使用DESC,這個(gè)關(guān)鍵字只能對(duì)其前面的列 進(jìn)行降序排列。例如,要對(duì)多列都進(jìn)行降序排序,必須要在每一列的列名后面加DESC關(guān)鍵字。而DISTINCT不同,DISTINCT不能部分使用。換句話說(shuō),DISTINCT關(guān)鍵字應(yīng)用于所有列而不 僅是它后面的第一個(gè)指定列。例如,查詢3個(gè)字段s_id,f_name,f_price,如果不同記錄的這3個(gè)字段的組合值都不同,則所有記錄都會(huì)被查詢出來(lái)。

盡量使用短索引   

對(duì)字符串類型的字段進(jìn)行索引,如果可能應(yīng)該指定一個(gè)前綴長(zhǎng)度。例如,如果有一個(gè) CHAR(255)的列,如果在前10個(gè)或30個(gè)字符內(nèi),多數(shù)值是惟一的,則不需要對(duì)整個(gè)列進(jìn)行索引。短索引不僅可以提高查詢速度而且可以節(jié)省磁盤空間、減少I/O操作。

 MySQL存儲(chǔ)過(guò)程和函數(shù)有什么區(qū)別?

在本質(zhì)上它們都是存儲(chǔ)程序。函數(shù)只能通過(guò)return語(yǔ)句返回單個(gè)值或者表對(duì)象;而存儲(chǔ)過(guò)程 不允許執(zhí)行return,但是可以通過(guò)out參數(shù)返回多個(gè)值。函數(shù)限制比較多,不能用臨時(shí)表,只能用表變量,還有一些函數(shù)都不可用等等;而存儲(chǔ)過(guò)程的限制相對(duì)就比較少。函數(shù)可以嵌入在SQL 語(yǔ)句中使用,可以在SELECT語(yǔ)句中作為查詢語(yǔ)句的一個(gè)部分調(diào)用;而存儲(chǔ)過(guò)程一般是作為一個(gè)獨(dú)立的部分來(lái)執(zhí)行。

存儲(chǔ)過(guò)程中可以調(diào)用其他存儲(chǔ)過(guò)程嗎?

存儲(chǔ)過(guò)程包含用戶定義的SQL語(yǔ)句集合,可以使用CALL語(yǔ)句調(diào)用存儲(chǔ)過(guò)程,當(dāng)然在存儲(chǔ) 過(guò)程中也可以使用CALL語(yǔ)句調(diào)用其他存儲(chǔ)過(guò)程,但是不能使用DROP語(yǔ)句刪除其他存儲(chǔ)過(guò)程。

使用觸發(fā)器時(shí)須特別注意

在使用觸發(fā)器的時(shí)候需要注意,對(duì)于相同的表,相同的事件只能創(chuàng)建一個(gè)觸發(fā)器,比如對(duì) 表account創(chuàng)建了一個(gè)BEFORE INSERT觸發(fā)器,那么如果對(duì)表account再次創(chuàng)建一個(gè)BEFORE INSERT觸發(fā)器,MySQL將會(huì)報(bào)錯(cuò),此時(shí),只可以在表account上創(chuàng)建AFTER INSERT或者 BEFORE UPDATE類型的觸發(fā)器。靈活的運(yùn)用觸發(fā)器將為操作省去很多麻煩。

到此,關(guān)于“學(xué)MySQL思考哪些問(wèn)題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

網(wǎng)頁(yè)名稱:學(xué)MySQL思考哪些問(wèn)題
轉(zhuǎn)載來(lái)源:http://muchs.cn/article14/pihdge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)小程序開發(fā)、企業(yè)網(wǎng)站制作、、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)