多表關聯查詢:
交叉連線:
交叉連線的表現:行數相乘、列數相加
內連線:
內連線也叫等值連線,內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行
隱式內連線:select * from a,b where a.id=b.id
顯示內連線:seect * from a inner join b on a.id =b.id
外連線:
外連線需要有主表或者保留表的概念
左外連線:保留表有的一定有
分頁查詢:
mysql的分頁關鍵字是:limit
limit關鍵字不是sql92標準提出的關鍵字,它是mysql獨有的語法。
通過limit關鍵字,mysql實現了物理分頁。
分頁分為邏輯分頁和物理分頁
邏輯分頁:將資料庫中的資料查詢到記憶體之後再進行分頁。
物理分頁:通過limit關鍵字,直接在資料庫中進行分頁,最終返回的資料,只是分頁後的資料
子查詢:
允許把乙個查詢巢狀在另乙個查詢當中(不建議使用因為效能不太好)
mysql架構
執行流程:
儲存引擎:
儲存引擎是針對表的
檢視儲存引擎的命令:show engines(必須進入到mysql客戶端)
日誌檔案
常見的日誌檔案包括:
資料檔案
檢視mysql資料檔案:show variables like 『%datadir%』;
.ibd和.ibdata檔案:用來儲存innodb儲存引擎的表資料和索引資訊
.myd檔案:主要用來儲存使用myisam儲存引擎的表資料資訊。
.myi檔案:主要用來儲存使用myisam儲存引擎的表資料檔案中任何索引的資料樹。
mysql索引
使用索引的主要目的是為了優化查詢速度
索引分為
單例索引:
1.普通索引
2.唯一索引
3.主鍵索引
組合索引:
* 在表中的多個字段組合上建立的索引,只有在查詢條件中使用了這些欄位的左邊欄位時,索引才會被使用,使用組合索引時遵循最左字首集合。
全文索引,只有在myisam引擎上才能使用,只能在char,varchar,text型別欄位上使用全文索引。
空間索引(不常用)
索引的使用:
create index index_name on table(column(length)) 建立索引
drop index index_name on table 刪除索引
索引的儲存結構:
b tree和b+ tree的特點與區別
* 樹的高度一般都是在2-4這個高度,樹的高度直接影響io讀寫的次數。
* 如果是三層樹結構---支撐的資料可以達到20g,如果是四層樹結構---支撐的資料可以達到幾十t
* b tree和b+ tree的最大區別在於非葉子節點是否儲存資料的問題。b tree是非葉子節點和葉子節點都會儲存資料。而b+ tree只有葉子節點才會儲存資料,而且儲存的資料都是在一行上,而且這些資料都是有指標指向的,也就是由順序的。
非聚集索引
* 葉子節點只會儲存資料行的指標,簡單來說資料和索引不在一起,就是非聚集索引。
* 主鍵索引和輔助索引都會儲存指標的值
聚集索引(innodb)
* 主鍵索引(聚集索引)的葉子節點會儲存資料行,也就是說資料和索引是在一起,這就是聚集索引。
* 輔助索引只會儲存主鍵值
* 如果沒有沒有主鍵,則使用唯一索引建立聚集索引;如果沒有唯一索引,mysql會按照一定規則建立聚集索引。
mysql 組合查詢 mysql組合查詢
使用union 多數sql查詢都只包含乙個或多個表中返回資料的單條select語句。mysql也允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 有兩種情況需要使用組合查詢 在單個表查詢中從不同的表返回類似結構的資料 對單個表執行多個查詢,按...
MySQ樹狀結構資料 遞迴查詢
for example create table products id int,name varchar 100 parent id int insert into products values 15,category15 0 not a descendant of 19 16,category...
MySQL組合查詢
組合查詢 mysql允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。一 建立組合查詢 可用union操作符來組合數條sql查詢。利用union,可給出多條select語句,將它們的結果組合成單個結果集。下面是兩個單個查詢例子 select vend id,prod id,pr...