mysql中的者則表示式(也算做是模糊查詢)
使用//.來匹配有.的字元
數字或者字母后邊加上?表示數字或者字母可選還是不可選
拼接字串concat()
文字處理函式
同時指定兩個列進行全文搜尋(前提是這兩個列必須增加索引)和against(“” in boolen mode)進行連用
使用儲存過程
其中onumber入參,taxable入參,ototal出參
declare 聲名引數
處理資料庫分頁問題
2.深層次理解資料庫
也是基於tcpIP協議的,基於Unix的巢狀字檔案
InnoDB資料庫引擎
常數表示式
isNull是全表掃描所以需要最佳化
in和多個or是有區別,in中使用的是二分查詢樹發
關聯查詢最佳化器:
在多個表進行關聯的時候,最佳化器會自動篩選出資料庫的表進行二叉樹的最優解
關係型資料庫和非關係型資料庫
為什麼加對應的欄位,因為要將讀取出的資料並儲存到記憶體中去(降低記憶體)
orm物件關係對映和類進行對應
資料庫語言分類
1.DDL資料庫定義語言
2.資料庫操縱語言
3.資料庫控制語言
dual偽表
5.7版本Limit 0,20 跳過 0 條顯示20
8.0 版本 Limit 20 offset 0
加密
自然連結和using連結 欄位一致的時候使用
需要設定
truncate table 的效率比delete效率快
mysql8.0 :的原子化的特性新增特性
計算列
全文檢索
資料庫效能最佳化:
索引的底層結構是透過B+樹進行構建的,
1.聚簇索引
在我們新增主鍵的時候會自動生成索引,並且它的結構是:
二分查詢法,在索引的頁中會儲存子頁的頁碼以及主鍵對應的值
2.非聚簇索引
二分查詢法,在索引的頁中會儲存子頁的頁碼以及欄位對應的值
3.複合索引
二分查詢法,在索引的頁中會儲存子頁的頁碼以及按順序的欄位對應的值
應用方式,不管是增刪改查where條件後面的都要加上對應的索引
因為:sql是先執行 from 後 where的字敦 在修改和刪除的時候可以看成是先查詢,只要查詢就要增加索引進行查詢
在join的時候使用using和on後面連結的欄位型別必須一致:因為如果不一致存在型別轉換的話那麼索引將會失效,失效是指where條件之後的索引失效
第一1000行資料時候不需要建立索引,有大量重複資料的時候不需要建立索引
避免對頻繁更新的表建立過多的索引
避免用無序的值生成索引
不用的索引要刪除掉
不要定義冗餘的索引
查詢資料所儲存的所有的資料頁:最後一次查詢的開銷
使用慢查詢來最佳化資料庫:
1.開啟慢查詢日誌
此時狀態為未開啟
開啟
檢視日誌引數:開啟狀態,開啟檔案
永久設定日誌:修改配置
真正的最佳化,索引失效:
1.where 後面的欄位是運算子
2.where後面有or的時候所有欄位要都有索引
3.模糊查詢以%開頭
4.有比較運算子號
5.!=的情況下不能使用索引
6.is null 能使用索引,is not null 不能使用索引
7.聯合索引最左原則