盤點mysql中容易被我們誤會的地方

来源:http://www.cnblogs.com/yougewe/archive/2016/03/21/5300478.html
-Advertisement-
Play Games

引語:mysql作為資料庫的一大主力軍,到處存在於我們各種系統中,相信大家都不陌生!但是,你知道你能用不代表你知道細節,那我們就來盤點盤點其中一些我們平時不太註意的地方,一來為了有趣,二來為了不讓自己踩坑。 聲明:要想知道細節,那就去閱讀源碼,我實在沒那本事,只能從片面上來說一些事! 1. 不區分大


  引語:mysql作為資料庫的一大主力軍,到處存在於我們各種系統中,相信大家都不陌生!但是,你知道你能用不代表你知道細節,那我們就來盤點盤點其中一些我們平時不太註意的地方,一來為了有趣,二來為了不讓自己踩坑。

  聲明:要想知道細節,那就去閱讀源碼,我實在沒那本事,只能從片面上來說一些事!

  1. 不區分大小寫(欄位名)

    mysql的查詢欄位名不區分大小寫,但是查詢的內容是要區分大小寫的,所以能用下劃線命名的就不要用大小寫來區分命名了,如:

SELECT uid,v_state FROM all_user WHERE username = 'sunyue';
SELECT uid,v_state FROM all_user WHERE USERNAME = 'sunyue';            //與上一個語句結果一樣,欄位不區分大小寫

SELECT uid,v_state FROM all_user WHERE USERname = 'SUNYUE';            //查不到信息,內容要區分大小寫

  2. 模糊匹配([_]匹配任意字元)

    雖說模糊匹配有點正則的意思,但是你並不能像正則一樣自由地在資料庫里進行匹配,做到儘量簡化匹配就好!(附名詞:全文檢索sphinx)

SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su_yue';    //下劃線[_]匹配任意單個字元
SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su%yue';    //%匹配任意多個字元

SELECT uid,v_state FROM all_user WHERE USERNAME NOT LIKE 'su%';        //not like取不包含的信息

  3. 怎樣猜測一個功能

    mysql作為一個關係型資料庫,面向的是普通的開發者,所以一切儘可能做到人性化。所以,如果你不知道某個功能是什麼,那麼,也許你可以猜得出來,因為,如果一個功能讓別人無法猜出個大概,那麼也許,他就是失敗的設計。對於mysql,只要你英語水平稍微好一點點,就能很輕鬆的想到關係查詢應該怎麼寫。所以,猜測的能力,在於你英語的水平,哈哈哈!!!

  4. replace into 語法

    replace into 是一個很粗暴的插入方式,不過在適當的場景使用也是很有必要的,比如一些需要隨時覆蓋式寫入的數據,就應該使用replace, 但是對於一些自增型的表,則應儘量避免使用,因為這樣會是對ID的一種浪費,也許沒必要使用replace.

  5. insert into on dumplicate key update 語法

    這個寫法相對來說就溫柔多了,但是速度肯定是慢一點的,據說只有mysql才有這個特性哦,如果你不想在插入前去判斷一下是否已存在該數據,也許這是一個不錯的選擇!

  6. explain 語法

    這是一個檢查查詢效果的有效方式,其實我本人很少使用這功能,但是,如果一個開發者經常使用這功能,那麼,我相信,他本人肯定是個牛掰的人。通過這個命令,可以判斷出你寫的語句是否是優化的,如果不是,方向是什麼。應該說,你用得多了,自己自然就知道結果了,還是多用用吧!

  7. 索引長度

    myisam的索引長度最大為1000位元組,innodb的索引長度最大為767位元組!註意使用哦,超出範圍,則超出預料!

  8. 庫的複製

    1. 直接數據mysql自帶的資料庫備份恢覆命令;2. 直接拷貝文件到目的伺服器(註意進程占用問題);3. 使用工具進行同步;個人感覺第二種方式最簡單!

  9. 分區

    對於一些可能會很大的表,需要進行分區操作,如果有這方面的需求,需要在最開始就添加至少一個分區,否則後期將無法操作分區。(至少我是這麼認為的)

  10. 慢查詢

    慢查詢,這是一個對性能的監控問題,如果伺服器表現太差,排查問題時,有這種慢查詢的記錄,排查起來將事半功倍!

  11. binlog

    binlog,一般都會用到這功能,對於數據恢復,數據操作記錄等等有很必要功用!

  12. 其他應該要知道的視圖、存儲過程、事件...

    視圖、事件等,這些都是一些高級應用,我發現很多項目根本不存在這種應用,到少我遇到的項目都幾乎不涉及或者涉及了也是別人隨便做做!但是高級功能還是要瞭解的,不管有沒有用!

  13. 可使用的工具         

     phpMyAdmin, 作為遠程安全操作資料庫的方式,還是很不錯的,但是作為本地操作的話,實在有點笨拙;sqlyog, 界面雖古板,但是還是比較方便的;navicat, 比較專業化,不過你得適應他的各種表現形式;命令行,我想應該不會有人直接使用命令行進行操作吧,不過,命令行才是根本呢!

  需要加深的東西很多,如果有時間能力,應該深入源碼!!!

 

  喲呵,拖了這麼久,終於補上一篇了!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第三章 小A的疑問 數據類型和自增列 小A拿著雞腿,回到了房間裡面,咬了一嘴油,說:"我有2個疑問,在Excell裡面,像列PetAge(寵物年齡)這樣的數字,我一般會設置成數值格式,而像PetName,則會預設文本格式,還有,Mysql多出來的那列ID列,好像和Excell的不一樣啊,你看,Mys
  • 最近開始學習hadoop,邊學邊記錄學習中遇到的問題。因為是心得不是教程,所以閱讀的人應具備基本的Linux知識和vim使用,學習過程不寫具體工具的使用,請自行百度。 基於centos7和jdk1.7,hadoop2.4.1的環境搭建(建議64位機子用我提供的2.3.0搭建,我用2.4.1遇到了些問
  • IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字元串值 具體用法如:現有學生表(tbl_student)和分數表(score),查詢學生表的所有欄位和學生相對於的英語成績(english_sco
  • 1. Question description: if you are setting the oracle client to add a local network service, you may see the dialogue that show you the message (orac
  • 線下的測試機器老是報錯,從errorlog里看到大量的4014錯誤 於是谷歌了一下,發現了一篇文章:https://www.mssqltips.com/sqlservertip/3538/fixing-sql-server-fatal-error-4014/ 大家知道現在的網卡內置功能都比較厲害,有
  • mysql添加欄位: 刪除欄位:
  • 在保密你的伺服器和數據,防備當前複雜的攻擊,SQL Server有你需要的一切。但在你能有效使用這些安全功能前,你需要理解你面對的威脅和一些基本的安全概念。這篇文章提供了基礎,因此你可以對SQL Server里的安全功能充分利用,不用在面對特定威脅,不能保護你數據的功能上浪費時間。 通常來說,你通過
  • 1.Question describe when you use account scott/tiger connect to oracle, you will see "the user account is locked", because you did't unlock the accoun
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...