MySQL中的自連接,子查詢,合併查詢和索引,事務概念

1.自連接

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
a》求所有計算機組成原理比java成績高的同學id。
1>先找到計算機組成原理和java課程的id
在這裏插入圖片描述
2>根據id再成績表中進行篩選
在這裏插入圖片描述
在這裏插入圖片描述

2.子查詢

單行子查詢(子查詢的結果只有一種)
a》查詢和“不想畢業”同班的同學有哪些
在這裏插入圖片描述
在這裏插入圖片描述
多行查詢
a》查詢語文或者英文對應的成績
1>藉助in在這裏插入圖片描述
在這裏插入圖片描述
2>藉助exists
在這裏插入圖片描述

3.合併查詢

把多個查詢的結果集合合併成一個集合(需保證多個結果集之間的字段類型和數目都得一致)

a》查詢id<3或者名字爲英文的課程
1>用or
在這裏插入圖片描述
2>用union
在這裏插入圖片描述
(如果兩個查詢中有相同的記錄,只會保留一個,如果不想去重,可以使用union all)

4.索引

索引:相當於目錄

如果沒有索引,我們在查找的時候,就需要把整個表遍歷一遍,相當於“順序表”。數據庫的數據是在磁盤上。磁盤訪問速度比較慢,並且數據量也可能很多,這個速度就會很慢,索引就可以很好解決這一點。

索引可以考慮的數據結構:
1.二叉搜索樹:查找效率O(logN)
2.哈希表 查找效率是O(1)

但是哈希表只能進行一些相等的判斷查詢,對於一些查詢某一範圍內的數據,是不行的。但是對於二叉搜索樹,她的中序遍歷結果是有序的,假如查詢[a,b]範圍內的數據,可以先找到a,再找到b,中序遍歷a,b之間的結果就是想要的數據。但是當數據量比較大的時候,最終操作效率也會越低。

真實的索引結構是一種N叉搜索樹:B+樹
在這裏插入圖片描述

每個節點是N叉,每個節點也可以存多個數據
每個節點的度=存的數據個數+1。
在這裏插入圖片描述

4和8兩個數據把整個數據集切分爲3部分,比4小,比4大比5小,比5大三部分,此時就相當於N分查找,比二分查找還快。

B+樹的真實索引結構:
在這裏插入圖片描述
相比B樹:
1.每一層元素之間都鏈接一起了
2.數據只再葉子節點上保存,非葉子節點只保存一些輔助查找的邊界信息。

這裏的葉子節點放到磁盤上,非葉子節點放到內存中,查找效率就更高了。(減少了讀磁盤次數)

其實索引本質也就是使用空間來換時間。

加在主鍵上的索引和其他列的索引是截然不同的。
主鍵索引的葉子節點存的是數據的完整記錄,其他索引的葉子節點存的是主鍵的id

查看索引:
在這裏插入圖片描述

創建索引:
在這裏插入圖片描述

刪除索引:
在這裏插入圖片描述

5.事務

把一組操作封裝在一起,成爲了一個共同的執行單元。

基本特性:
ACID
1.原子性:事務中的若干操作,要麼全部成功,要麼就全不執行。(假如中間某個步驟出錯,就把之前執行的步驟給回滾回去)

2.一致性:執行事務前後,數據一致出於一種合法的狀態。

3.持久性:事務一旦執行完畢,此時對於數據的修改就是持久生效的(寫入磁盤了,數據存到內存就是不持久的,重啓就沒了)

4.隔離性:涉及併發執行事務,比較複雜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章