摘要:基礎(chǔ)考點(diǎn)數(shù)據(jù)類型整型小數(shù)型字符串型時(shí)間日期型枚舉類型在定義整型數(shù)據(jù)類型時(shí),經(jīng)??吹嚼ㄌ?hào)里指定的是顯示長(zhǎng)度,不限制值合法范圍,這個(gè)顯示長(zhǎng)度要配合這個(gè)屬性才有意義。
基礎(chǔ)考點(diǎn)
MySQL 數(shù)據(jù)類型
整型:tinyint、smallint、mediumint、int、bigint 小數(shù)型:float、double、decimal 字符串型:varchar、char、text、blob 時(shí)間日期型:time、date、datetime、timestamp 枚舉類型:enum
在定義整型數(shù)據(jù)類型時(shí),經(jīng)??吹?int(4) 括號(hào)里指定的是顯示長(zhǎng)度,不限制值合法范圍,這個(gè)顯示長(zhǎng)度要配合zerofill這個(gè)屬性才有意義。
1、 VARCHAR 比 CHAR 更節(jié)約空間
2、 CHAR 比 VARCHAR 存儲(chǔ)效率更好
3、 VARCHAR 與 CHAR 的長(zhǎng)度,如果存儲(chǔ)內(nèi)容超出指定長(zhǎng)度,會(huì)被截?cái)?br>4、 存儲(chǔ)經(jīng)常改變的數(shù)據(jù),CHAR 不容易產(chǎn)生碎片
盡量避免使用 BLOB/TEXT 類型,導(dǎo)致嚴(yán)重的性能開銷
1、 有時(shí)可以使用枚舉類型代替字符串類型
2、 枚舉類型內(nèi)部存儲(chǔ)成整型(節(jié)省空間)
3、 避免使用數(shù)字作為 enum枚舉 的常量,易混亂
1、 盡量使用 TIMESTAMP 來(lái)保存時(shí)間日期數(shù)據(jù)
2、 如果需要存儲(chǔ)微秒, 可以使用 BIGINT 類型
MySQL 基礎(chǔ)操作
連接與關(guān)閉:mysql -u -p -h -P
MySQL 存儲(chǔ)引擎(數(shù)據(jù)表)
MyISAM與InnoDB的區(qū)別
1、 InnoDB支持事務(wù),MyISAM不支持事務(wù) 2、 InnoDB支持行級(jí)鎖,MyISAM支持表鎖 3、 InnoDB數(shù)據(jù)存儲(chǔ)在共享表空間,MyISAM數(shù)據(jù)存儲(chǔ)在MyD文件和MyI文件 4、 InnoDB支持奔潰后的安全恢復(fù),MyISAM不支持 5、 InnoDB對(duì)主鍵查詢的性能高于其他存儲(chǔ)引擎 6、 MyISAM擁有全文索引、壓縮、空間函數(shù)
MySQL 鎖機(jī)制
由于并發(fā)操作的產(chǎn)生,所以需要使用鎖進(jìn)行并發(fā)控制
鎖分為2種:共享鎖和排他鎖,就是讀鎖和寫鎖
共享鎖(讀鎖),不堵塞,多個(gè)用戶可以同時(shí)讀同一資源,互不干擾 排他鎖(寫鎖),一個(gè)寫鎖會(huì)阻塞其他讀鎖和寫鎖,這樣只允許一個(gè)人進(jìn)行寫入操作,防止其他人進(jìn)行讀取或者寫入
注意:InnoDB支持行級(jí)鎖,MyISAM支持表鎖
MySQL 事務(wù)處理
安全性考點(diǎn)注意:使用事務(wù)的前提是 表必須是InnoDB引擎
SQL注入
使用 預(yù)處理 來(lái)防止SQL注入
特殊字符轉(zhuǎn)義
寫入數(shù)據(jù)庫(kù)的數(shù)據(jù)必須經(jīng)過(guò)特殊字符轉(zhuǎn)義操作,此操作在應(yīng)用層進(jìn)行
錯(cuò)誤記錄
索引考察點(diǎn)當(dāng)發(fā)生查詢錯(cuò)誤時(shí),不能把錯(cuò)誤信息返回給用戶,把錯(cuò)誤記錄到日志
使用索引的優(yōu)缺點(diǎn)
優(yōu)點(diǎn): 1、減少服務(wù)器掃描的數(shù)據(jù)量 2、避免排序和臨時(shí)表 3、隨機(jī)I/O變順序I/O 4、提高查詢速度 缺點(diǎn): 1、降低寫的速度 2、占用磁盤
索引使用場(chǎng)景
非常小的表(1~1000) 不使用索引 中型(1000~100W) 使用索引 大型(100W~1000W) 使用索引 超大(1000W以上) 索引 + 分區(qū)技術(shù)
索引類型
1、普通索引 2、唯一索引 (在普通索引的基礎(chǔ)上,加上唯一約束) 3、主鍵索引 (在唯一索引的基礎(chǔ)上,加上不能為Null) 4、組合索引 5、全文索引 (少用,只適合英文) 6、外鍵索引 (少用,使用業(yè)務(wù)邏輯進(jìn)行數(shù)據(jù)關(guān)聯(lián))
索引創(chuàng)建原則
1、最適合索引的列是出現(xiàn)在where子句中的列,或連接子句中的列,而不是出現(xiàn)在SELECT關(guān)鍵字后的列 2、索引列基數(shù)越大,效果越好 3、對(duì)字符串進(jìn)行索引,應(yīng)該制定一個(gè)前綴長(zhǎng)度,可以節(jié)省大量索引空間 4、根據(jù)情況創(chuàng)建復(fù)合索引,復(fù)合索引能提高查詢效率 5、避免創(chuàng)建過(guò)多的索引 6、主鍵盡量選擇較短的數(shù)據(jù)類型
索引注意事項(xiàng)
1、復(fù)合索引遵循前綴原則(重要,按順序) 2、like查詢,%不能在前面(在前面索引會(huì)失效,如果要在前面請(qǐng)使用第三方全文索引) 3、列is Null也是可以使用索引 4、如果OR條件想用到索引,必須or前后的字段都需要是索引字段 5、列是字符串類型時(shí),查詢時(shí)一定要使用引號(hào)(單或雙),索引才會(huì)生效SQL語(yǔ)句關(guān)聯(lián)考察點(diǎn)
關(guān)聯(lián)操作
1、關(guān)聯(lián)更新 2、關(guān)聯(lián)查詢
連接方式
1、交叉連接 Cross join (無(wú)條件) select * from A CROSS JOIN B CROSS JOIN C; 2、內(nèi)連接 INNER JOIN (有條件的交叉連接) 簡(jiǎn)寫 JOIN select * from A INNER JOIN B INNER JOIN C ON A.id = B.id; select * from A,B where A.id = B.id; select * from A T1 INNER JOIN A T2 ON T1.id = T2.id; 3、外連接 左外連接 LEFT JOIN 右外連接 RIGHT JOIN 4、聯(lián)合連接 (UNION重復(fù)的合并,UNION ALL重復(fù)的不合并) SELECT * FROM position UNION SELECT * FROM team; SELECT * FROM position UNION ALL SELECT * FROM team; **UNION ALL性能高于UNION** 5、全連接(MySQL不支持)MySQL高擴(kuò)展與高可用
分庫(kù)
分表(水平與垂直)
讀寫分離
主從復(fù)制
負(fù)載均衡
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25984.html
摘要:之三關(guān)于閉包和遞歸開篇這一期本來(lái)是打算寫閉包的,但是無(wú)意中看到高級(jí)程序設(shè)計(jì)中閉包的前一章就是遞歸。閉包練習(xí)題這個(gè)板塊會(huì)實(shí)時(shí)補(bǔ)充的關(guān)于遞歸其實(shí)說(shuō)到遞歸,主要就是要說(shuō)這個(gè)的用法,其實(shí)主要就是調(diào)用自己的外圍函數(shù),并且可以傳參。 之三:關(guān)于閉包和遞歸 1. 開篇 這一期本來(lái)是打算寫閉包的,但是無(wú)意中看到《JavaScript高級(jí)程序設(shè)計(jì)》中閉包的前一章就是遞歸。所以拿出來(lái)一起講一下吧! 我覺得...
摘要:張三李四張三北京海底市南區(qū)李四北京海底市南區(qū)操作符的優(yōu)勢(shì)使用長(zhǎng)的合法選項(xiàng)清單時(shí)候操作符比較直觀。支持對(duì)子句取反。張三李四趙蕓上海市徐匯區(qū)王麗廣州廈門我的網(wǎng)站 在數(shù)據(jù)庫(kù)的使用中排序和過(guò)濾也是經(jīng)常的操作 排序檢索數(shù)據(jù),關(guān)鍵字order 1.按照某個(gè)列名排序 普通排序 mysql> select * from user; +----+--------+-----+--------------...
閱讀 2070·2023-04-26 01:33
閱讀 1690·2023-04-26 00:52
閱讀 1084·2021-11-18 13:14
閱讀 5662·2021-09-26 10:18
閱讀 2941·2021-09-22 15:52
閱讀 1523·2019-08-29 17:15
閱讀 3048·2019-08-29 16:11
閱讀 1062·2019-08-29 16:11