1. 表之間如何關聯
表與表之間常用的關聯方式有兩種:內連接、外連接,下面以MySQL為例來說明這兩種連接方式
內連接通過INNER JOIN來實現,它將返回兩張表中滿足連接條件的數據,不滿足條件的數據不會查詢出來
外連接
外連接通過OUTER JOIN來實現,它會返回兩張表中滿足連接條件的數據,同時返回不滿足連接條件的數據。外連接有兩種形式:左外連接(LEFT OUTER JOIN)、右外連接(RIGHT OUTER JOIN)。
左外連接:可以簡稱為左連接(LEFT JOIN),它會返回左表中的所有記錄和右表中滿足連接條件的記錄。
右外連接:可以簡稱為右連接(RIGHT JOIN),它會返回右表中的所有記錄和左表中滿足連接條件的記錄。
2.?WHERE和HAVING有什么區別
WHERE是一個約束聲明,使用WHERE約束來自數據庫的數據,WHERE是在結果返回之前起作用的,WHERE中不能使用聚合函數
HAVING是一個過濾聲明,是在查詢返回結果集以后對查詢結果進行的過濾操作,在HAVING中可以使用聚合函數。另一方面,HAVING子句中不能使用除了分組字段和聚合函數之外的其他字段。
3. 索引相關
數據庫-索引-CSDN博客
4. 事務的理解
事務可由一條非常簡單的SQL語句組成,也可以由一組復雜的SQL語句組成。在事務中的操作,要么都執行修改,要么都不執行,這就是事務的目的,也是事務模型區別于文件系統的重要特征之一
事務需遵循ACID四個特性:
-
A(atomicity),原子性。原子性指整個數據庫事務是不可分割的工作單位。只有使事務中所有的數據庫操作都執行成功,整個事務的執行才算成功。事務中任何一個SQL語句執行失敗,那么已經執行成功的SQL語句也必須撤銷,數據庫狀態應該退回到執行事務前的狀態。
-
C(consistency),一致性。一致性指事務將數據庫從一種狀態轉變為另一種一致的狀態。在事務開始之前和事務結束以后,數據庫的完整性約束沒有被破壞。
-
I(isolation),隔離性。事務的隔離性要求每個讀寫事務的對象與其他事務的操作對象能相互分離,即該事務提交前對其他事務都不可見,這通常使用鎖來實現。
-
D(durability) ,持久性。事務一旦提交,其結果就是永久性的,即使發生宕機等故障,數據庫也能將數據恢復。持久性保證的是事務系統的高可靠性,而不是高可用性。