數據庫理論知識

SQL語言包括
數據定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等
數據操縱:Select ,insert,update,delete,
數據控制:grant,revokesql

 

完整性約束

實體完整性、參照完整性、用戶定義完整性數據庫


什麼是第三範式

1NF:每一個屬性是不可分的。
2NF:若關係R是1NF,且每一個非主屬性都徹底函數依賴於R的鍵。
3NF:若R是2NF,且它的任何非鍵屬性都不傳遞依賴於任何候選鍵。
安全

 

事務:是一系列的數據庫操做,是數據庫應用的基本邏輯單位。服務器

事務性質:
原子性。即不可分割性,事務要麼所有被執行,要麼就所有不被執行。
一致性或可串性。事務的執行使得數據庫從一種正確狀態轉換成另外一種正確狀態
隔離性。在事務正確提交以前,不容許把該事務對數據的任何改變提供給任何其餘事務,
持久性。事務正確提交後,其結果將永久保存在數據庫中,即便在事務提交後有了其餘故障,事務的處理結果也會獲得保存。網絡


 

存儲過程:存儲過程就是編譯好了的一些sql語句。

1.重複使用。存儲過程能夠重複使用,從而能夠減小數據庫開發人員的工做量。函數

2.提升性能。存儲過程在建立的時候在進行了編譯,未來使用的時候再也不從新翻譯。通常的SQL語句每執行一次就須要編譯一次,因此使用存儲過程提升了效率。性能

3.減小網絡流量。存儲過程位於服務器上,調用的時候只須要傳遞存儲過程的名稱以及參數就能夠了,所以下降了網絡傳輸的數據量。優化

4.安全性。參數化的存儲過程能夠防止SQL注入式攻擊,並且能夠將Grant、Deny以及Revoke權限應用於存儲過程。spa

 

觸發器:當知足觸發器條件,則系統自動執行觸發器的觸發體。

觸發時間:有before,after.翻譯

觸發事件:有insert,update,delete三種。

觸發類型:有行觸發、語句觸發

 

內聯接,外聯接
內鏈接是保證兩個表中全部的行都要知足鏈接條件。
外鏈接分左鏈接、右鏈接、全鏈接三種。

INNER JOIN 在表中存在至少一個匹配時。

LEFT JOIN 關鍵字會從左表 (table_name1) 那裏返回全部的行,即便在右表 (table_name2) 中沒有匹配的行。

RIGHT JOIN 關鍵字會右表 (table_name2) 那裏返回全部的行,即便在左表 (table_name1) 中沒有匹配的行。

FULL JOIN 只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。



索引是對數據庫表中一列或多列的值進行排序的一種結構,換句話說用於定位相同字段的一種標識符,其就至關於圖書的目錄。

當sql語句在執行查詢操做的時候,有兩種搜索方式。第一種搜索信息方式是全表搜索,第二種根據索引,找到符合查詢條件的索引值,再經過保存在索引中的ROWID(至關於頁碼)快速找到表中對應的記錄。

創建索引的優勢

  • 1.大大加快數據的檢索速度;

  • 2.建立惟一性索引,保證數據庫表中每一行數據的惟一性;

  • 3.加速表和表之間的鏈接;

  • 4.在使用分組和排序子句進行數據檢索時,能夠顯著減小查詢中分組和排序的時間。

索引的缺點

  • 1.索引須要佔物理空間。

  • 2.當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,下降了數據的維護速度。

索引的設計原則:

  • 提升查詢語句的效率,減慢了DML語句的速度。

  • 在全表掃描和索引之間權衡。

  • 可以使用組合索引的則儘可能使用組合索引。

  • 對於大表,儘可能利用local的分區索引。

索引使用的一些具體規則:

  • 在哪些列上創建索引:

    1. Where字局中引用的列

    2. Join中利用的列

    3. 在子表的FK上創建索引(防止對父表操做時鎖住子表)

  • 在哪些列上不要創建索引:

    1. 常常有DML操做

    2. 排它性小

    3. 不建議表上索引超過5個

  • 索引不起做用的狀況:

    1. 存在數據類型隱形轉換

    2. 列上有數學運算

    3. 使用不等於(< >)運算

    4. 使用substr字符串函數

    5. %通配符在第一個字符

    6. 字符串鏈接(||)

  • 刪除不使用的索引

  • 按期重建大量刪除操做的索引


sql優化

建表時的優化:

  • 一、只要能知足你的需求,應儘量使用更小的數據類型:例如使用MEDIUMINT代替INT

  • 二、儘可能把全部的列設置爲NOT NULL,若是你要保存NULL,手動去設置它,而不是把它設爲默認值。

  • 三、儘可能少用VARCHAR、TEXT、BLOB類型

  • 四、若是你的數據只有你所知的少許的幾個。最好使用ENUM類型

  • 五、創建索引。


查詢語句的優化:

編寫原則:

  • 對於任何sql語句,必定要考慮其性能。

  • 避免使用複雜的sql語句

  • 避免沒必要要的排序

  • 使用表的別名

  • Select語句避免使用*

具體細節規則:

    • Where條件中等號左邊不用引用函數

    • Where條件中對於不一樣的數據類型,要作顯示轉換。

    • 使用not exists 替代not in,exists替代in,exists語句能夠有效的利用索引。

    • 使用>=、<=,避免使用not命令

    • 使用union,替代or

相關文章
相關標籤/搜索