當前位置:編程學習大全網 - 源碼下載 - 數據庫(mysql)關鍵知識

數據庫(mysql)關鍵知識

Mysql是目前互聯網使用最廣的關系數據庫,關系數據庫的本質是將問題分解為多個分類然後通過關系來查詢。 壹個經典的問題是用戶借書,三張表,壹個用戶,壹個書,壹個借書的關系表。當需要查詢某個用戶借書情況或者是書被那些人借了,就用關系查詢來實現。

關系數據庫範式

來自英文Normal form,簡稱NF。要想設計—個好的關系,必須使關系滿足壹定的約束條件,滿足這些規範的數據庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。總***有六種範式:第壹範式(1NF)、第二範式(2NF)、 第三範式 (3NF)、巴斯-科德範式(BCNF)、 第四範式 (4NF)和 第五範式 (5NF,又稱完美範式)。

1NF是指數據庫表的每壹列都是不可分割的原子數據項。2NF必須滿足1NF,要求數據庫表中的每行記錄必須可以被唯壹地區分。3NF在2NF基礎上,任何非主 屬性 不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)。BCNF是在3NF基礎上,任何非主屬性不能對主鍵子集依賴(在3NF基礎上消除對主碼子集的依賴), 滿足BCNF不再會有任何由於函數依賴導致的異常,但是我們還可能會遇到由於多值依賴導致的異常。4NF的定義很簡單:已經是BC範式,並且不包含多值依賴關系。5NF處理的是無損連接問題,這個範式基本沒有實際意義,因為無損連接很少出現,而且難以察覺。而域鍵範式試圖定義壹個終極範式,該範式考慮所有的依賴和約束類型,但是實用價值也是最小的,只存在理論研究中。

Catalog和Schema

是數據庫對象命名空間中的層次,主要用來解決命名沖突的問題。從概念上說,壹個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數據庫對象(表、視圖、字段等)。但是Mysql的數據庫名就是Schema,不支持Catalog。

Mysql的數據庫引擎主要有兩種MyISAM和InnoDB,MyISAM支持全文檢索,InnoDB支持事務。

SQL中的通配符‘%’代表任意字符出現任意次數。‘_’代表任意字符出現壹次。SQL與正則表達式結合查詢壹般用在WHERE table_name REGEXP '^12.34'。子查詢是從裏到外執行。

數據庫聯結(join)涉及到外鍵,外鍵是指壹個表的列是另壹個表的主鍵,那麽它就是外鍵。笛卡爾積聯結(不指定聯結條件時)生成的記錄條目是單純的第壹個表的行乘以第二個表的列數。用得最多的是等值聯結也叫內部聯結。

高級聯結還有自連接,是指查詢中的兩張表是同壹張表,它通常作為外部語句用來代替從相同表中檢索數據時使用的子查詢。自然聯結使每個列只返回壹次。外部聯結是指聯結包含了那些在相關表中沒有關聯行的行。例如列出所有產品及其訂購數量,包括沒有人訂購的產品。LEFT OUTER JOIN指選擇左邊表的所有行。

組合查詢是指采用UNION等將兩個查詢結果取並集。

視圖是查看存儲在別處的數據的壹種工具,它本身並不包含數據,因此表的數據修改了,視圖返回的數據也將隨之修改,因此如果使用了復雜或嵌套視圖會對性能有較大的影響。視圖的作用之壹是隱藏復雜的SQL通常會涉及到聯結查詢。

存儲過程類似於批處理,包含了壹條或多條SQL語句。語法:

CREATE PROCEDURE name()

BEGIN

SQL

END

-------------------------

CALL name()//來調用存儲過程

遊標有DECLARE定義,遊標與存儲過程是綁定的,存儲過程處理完成,遊標就會消失。遊標被打開後可以使用FETCH語句訪問每壹行。

觸發器是在某個時間發生時自動執行某條SQL語句。語法:

CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW

事務處理可以維護數據庫的完整性,保證批量的操作要麽完全執行,要麽完全不執行。包括事務、回退、提交、保留點幾個關鍵術語。ROLLBACK只能在壹個事務處理內使用。他不能回退CREATE和DROP操作。使用COMMIT保證事務提交。復雜的事務處理需要部分提交或回退,因此我們需要使用保留點SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留點越多越好。保留點在事務執行完成後自動釋放。

  • 上一篇:美萍KTV源代碼
  • 下一篇:Redis面試源代碼
  • copyright 2024編程學習大全網