MySQL數(shù)據(jù)庫基礎(chǔ)

一、數(shù)據(jù)類型
  • 整數(shù)類型
    • TINYINT
    • SMALLINT
    • MEDIUMINT
    • INT
    • BIGINT
    • 屬性:UNSIGNED
    • 長度:可以為整數(shù)類型指定寬度邻梆,例如:INT(11)守伸、對大多數(shù)應(yīng)用是沒有意義的,它不會限制值的合法范圍确虱,只會影響顯示字符的個數(shù)


  • 實數(shù)類型
    • FLOAT
    • DOUBLE
    • DECIMAL
    • DECIMAL可存儲比BIGINT還大的整數(shù)含友;可以用于存儲精確的小數(shù)
    • FLOAT和DOUBLE類型支持使用標準的浮點進行近視計算
  • 字符串類型
    • VARCHAR
    • CHAR
    • TEXT
    • BLOB
    • VARCHAR類型用于存儲可變長字符串,它比定長類型更節(jié)省空間
    • VARCHAR使用1或2個額外字節(jié)記錄字符串的長度校辩,列長度小于255字節(jié)窘问,使用1個字節(jié)表示,否則用2個
    • VARCHAR長度宜咒,如果存儲內(nèi)容超出指定長度惠赫,會被截斷
    • CHAR是定長的,根據(jù)定義的字符串長度分配足夠的空間
    • CHAR會根據(jù)需要采用空格進行填充以方便比較
    • CHAR適合 存儲很短的字符串故黑,或者所有值都接近同一個長度
    • CHAR長度儿咱,超出設(shè)定的長度,會被截斷
    • 對于經(jīng)常變更的數(shù)據(jù)场晶,CHAR比VARCHAR更好混埠,CHAR不容易產(chǎn)生碎片
    • 對于非常短的列,CHAR比VARCHAR在存儲空間上更有效率
    • 只分配真正的空間诗轻,更長的列會消耗更多的內(nèi)存
    • 盡量避免使用BLOB/TEXT類型钳宪,查詢會使用臨時表,導(dǎo)致嚴重的性能開銷
  • 枚舉
    • 有時可以使用枚舉代替常用的字符串類型
    • 把不重復(fù)的集合存儲成一個預(yù)定義的集合
    • 非常緊湊,把列表值壓縮到一個或兩個字節(jié)
    • 內(nèi)部存儲的是整數(shù)
    • 盡量避免使用數(shù)字作為ENUM枚舉的常量吏颖,易混亂
    • 排序是按照內(nèi)部存儲的整數(shù)進行排序
    • 枚舉表會使表大小大大減小
  • 日期和時間類型
    • 盡量使用TIMESTAMP搔体,比DATETIME空間效率高
    • 用整數(shù)保存時間戳的格式通常不方便處理
    • 如果需要存儲微妙,可以使用bigint存儲
  • 列屬性
    • auto_increment
    • default
    • not null
    • zerofill
二半醉、MySQL基礎(chǔ)操作
  • 常見操作
    • MySQL的連接和關(guān)閉Lmysql -u -p -h -P
    • 其他:\G(打印結(jié)果垂直顯示)疚俱、\c(取消當前mysql的命令)、\q(退出mysql)缩多、\s(顯示mysql服務(wù)器狀態(tài))呆奕、\h(幫助信息)、\d(改變執(zhí)行服務(wù))
三瞧壮、MySQL數(shù)據(jù)表引擎
  • InnoDB表引擎(優(yōu)先選擇)
    • 默認事務(wù)型引擎登馒,最重要最廣泛的存儲引擎,性能非常優(yōu)秀
    • 數(shù)據(jù)存儲在共享表空間咆槽,可以通過配置分開
    • 對主鍵查詢的性能高于其他類型的存儲引擎
    • 內(nèi)部做了很多優(yōu)化陈轿,從磁盤讀取數(shù)據(jù)時自動在內(nèi)存構(gòu)建hash索引,插入數(shù)據(jù)時自動構(gòu)建插入緩沖區(qū)
    • 通過一些機制和工具支持真正的熱備份
    • 支持崩潰后的安全恢復(fù)
    • 支持行級鎖
    • 支持外鍵
  • MyISAM表引擎
    • 5.1版本前秦忿,MyISAM是默認的存儲引擎
    • 擁有全文索引麦射、壓縮、空間函數(shù)
    • 不支持事務(wù)和行級鎖灯谣,不支持崩潰后的安全恢復(fù)
    • 表存儲在兩個文件潜秋,MYD(數(shù)據(jù))和MYI(索引)
    • 設(shè)計簡單,某些場景下性能很好
  • 其他表引擎
    • Archive
    • Blackhole
    • CSV
    • Memory
四胎许、MySQL鎖機制
  • 概念:表鎖是日常開發(fā)當中常見的問題峻呛,當多個查詢同一時刻進行數(shù)據(jù)修改時,就會產(chǎn)生并發(fā)控制的問題
  • 共享鎖和排它鎖辜窑,也就是讀鎖和寫鎖
  • 讀鎖:共享的钩述,不堵塞,多個用戶可以同時讀一個資源穆碎,互不干擾
  • 寫鎖:排他的牙勘,一個寫鎖會阻塞其他的寫鎖和讀鎖,這樣可以只允許一個人進行寫入所禀,防止其他用戶讀取正在寫入的資源
  • 鎖粒度
    • 表鎖方面,系統(tǒng)性能開銷最小,會鎖定整張表色徘,MyISAM使用表鎖
    • 行鎖恭金,最大程度地支持并發(fā)處理,但是也帶來了最大的鎖開銷褂策,InnoDB實現(xiàn)行級鎖
五蔚叨、MySQL事務(wù)處理
  • MySQL提供事務(wù)處理的表引擎义黎,InnoDB
  • 服務(wù)器層不管理事務(wù)育勺,由下層的引擎實現(xiàn),所以同一個事務(wù)中怀浆,使用多種存儲引擎不靠譜
  • 在非事務(wù)的表上 執(zhí)行事務(wù)操作MySQL不會發(fā)出提醒扬蕊,也不會報錯
六搀别、MySQL存儲過程
  • 存儲過程
    • 為以后的使用而保存的一條或多條MySQL語句的集合
    • 存儲過程就是有業(yè)務(wù)邏輯和流程的集合
    • 可以在存儲過程中創(chuàng)建表,更新數(shù)據(jù)尾抑,刪除等等
  • 使用場景
    • 通過把處理封裝在容易使用的單元中歇父,簡化復(fù)雜的操作
    • 保證數(shù)據(jù)的一致性
    • 簡化對變動的管理
七、MySQL觸發(fā)器
  • 觸發(fā)器
    • 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法再愈,它是與表事件相關(guān)的特殊的存儲過程
  • 使用場景
    • 可通過數(shù)據(jù)庫中的相關(guān)表實現(xiàn)級聯(lián)更改
    • 實時監(jiān)控某張表中的某個字段的更改而需要做出相應(yīng)的處理
    • 某些業(yè)務(wù)編號的生成等
    • 濫用會造成數(shù)據(jù)庫及應(yīng)用程序的維護困難
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榜苫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子翎冲,更是在濱河造成了極大的恐慌垂睬,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抗悍,死亡現(xiàn)場離奇詭異驹饺,居然都是意外死亡,警方通過查閱死者的電腦和手機缴渊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門赏壹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衔沼,你說我怎么就攤上這事蝌借。” “怎么了指蚁?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵菩佑,是天一觀的道長。 經(jīng)常有香客問我欣舵,道長擎鸠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任缘圈,我火速辦了婚禮劣光,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糟把。我一直安慰自己绢涡,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布遣疯。 她就那樣靜靜地躺著雄可,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上数苫,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天聪舒,我揣著相機與錄音,去河邊找鬼虐急。 笑死箱残,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的止吁。 我是一名探鬼主播被辑,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敬惦!你這毒婦竟也來了盼理?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤俄删,失蹤者是張志新(化名)和其女友劉穎宏怔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抗蠢,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡举哟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了迅矛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妨猩。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秽褒,靈堂內(nèi)的尸體忽然破棺而出壶硅,到底是詐尸還是另有隱情,我是刑警寧澤销斟,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布庐椒,位于F島的核電站,受9級特大地震影響蚂踊,放射性物質(zhì)發(fā)生泄漏约谈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一犁钟、第九天 我趴在偏房一處隱蔽的房頂上張望棱诱。 院中可真熱鬧,春花似錦涝动、人聲如沸迈勋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽靡菇。三九已至重归,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厦凤,已是汗流浹背鼻吮。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泳唠,地道東北人狈网。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像笨腥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子勇垛,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容