ORMMySQL
概念:
ORM:對象關系映射 ,?全拼?Object-Relation Mapping ,是一種為了解決面向對象與關系數據庫存在的互不匹配現象的技術。主要實現模型對象到關系型數據庫數據的映射.比如:把數據庫表中每條記錄映射為一個模型對象
?
使用原因:
若不使用ORM框架實現一個應用程序時,我們可能會寫特別多數據訪問層的代碼,從數據庫保存、刪除、讀取對象信息,而這些代碼都是重復的。而使用ORM則會大大減少重復性代碼。對象關系映射主要實現程序對象到關系數據庫數據的映射。
?
ORM的核心原則:?
· 簡單:以最基本的形式建模數據。比如將MySQL的一張表映射為一個python類,表中的字段就是此類的屬性.
· 傳達性:將數據庫結構轉化成能夠被任何人理解的語言文檔化。比如MySQL的一張表就被ORM轉化為了一個python程序員熟悉的python類
· 精確性:ORM將所有的mysql數據表都統一映射成了標準的python類,保持在代碼層面上的準確統一。
· 易用:ORM將所有的對于持久化對象的CRUD操作全部都封裝成了方法,通過這種封裝避免了不規范、冗余、風格不一的SQL語句,方便編碼風格的統一和后期維護。?
?
ORM?作用 :
1. 將定義數據庫 `模型類 ` --->? 數據庫表
2. 將定義數據庫模型類中的 `屬性`? --->? 數據庫表字段
3. 將模型對象的操作(add,delete,commit)? --->? 對應sql語句,并將執行結果提交到數據庫
?
優點 :
0.只需要面向對象編程, 不需要面向數據庫編寫代碼.
1.實現了數據模型與數據庫的解耦, 屏蔽了不同數據庫操作上的差異.
2.使得遷移數據庫變得十分方便,可移植性高,如果項目需要更改數據庫時,直接修改配置即可,無需考慮另一種數據庫的語法差異.
3.省時高效率開發,降低開發成本?,不再需要寫復雜冗長的SQL語句,僅僅關心具體的業務邏輯實現即可.
缺點 :
0.相比較于直接使用SQL語句操作數據庫,有性能損失.
1.根據對象的操作轉換成SQL語句,根據查詢的結果轉化成對象, 在映射過程中有性能損失.
2.持久化層缺乏彈性。一旦出現業務需求的變更,就必須修改持久化層的接口?
3.持久化層同時與域模型與關系數據庫模型綁定,不管域模型還是關系數據庫模型發生變化,毒藥修改持久化曾的相關程序代碼,增加了軟件的維護難度。?
4.ORM的缺點是會犧牲程序的執行效率和會固定思維模式。?
5.在對對象做持久化時,ORM一般會持久化所有的屬性,但有時這是不被期望的
6.在處理多表聯查、where條件復雜之類的查詢時,ORM的語法會變得復雜
CURD :
數據庫基本操作中的Create(創建)、ReadRetrieve(讀取)、Update(更新)、Delete(刪除)。
?
SQL結構化查詢語言 :
DQL:?數據查詢語句/數據的查詢(select)
DML:?數據操作語句/數據的增刪改(insert delete updata)
DDL:?數據定義語句/庫和表的操作(create drop)
DCL:?數據控制語?, 進?授權與權限回收,(grant、 revoke)
TPL: 事務處理語言,對事務進行處理,包括begin transaction、 commit、 rollback
DCL: 數據控制語言,進行授權與權限回收,如grant、 revoke
?
MySQL數據完整性包括 :
實體完整性,保證某一條記錄的唯一性,主要有 主鍵約束[primary key]&唯一鍵約束,一張表僅能有一個null[unique key]
域完整性,保證某一字段的類型或約束,主要有?非空[not null]&默認值[default xxx]
參照完整性,限制表之間的規則,即外鍵,主要有?外鍵約束[foreign key]
用戶定義完整性,用戶對某一字段的進一步控制范圍,限定約束
?
事務的特性(ACID) :
原子性A,事務中的全部操作在數據庫中是不可分割的,要么全部執行,要么均不執行
一致性C,幾個并行執行的事務,其執行結果必須與按某一順序串行執行的結果相一致
隔離性I,事務的執行不受其他事務的干擾,事務的執行的中間結果必須對其他事務透明
持久性D,對于任意已提交的事務,系統必須保證該事務對數據庫的該表永不丟失,即使數據庫出現故障
?
數據庫分類 :
關系型數據庫:?Oracle , MySQL , SQLite,基于關系模型的數據庫,是一個 二維表模型和表之間關系 的集合,適合于關系特別復雜的數據查詢場景.
非關系型數據庫(nosql):?mongDB , Redis,不基于關系模型,不是二維表模型,強調以?key - value?格式存儲數據,比關系型數據庫更加靈活和可擴展,基本不支持事務.
?
MySQL & Redis :
?
轉載于:https://www.cnblogs.com/hsmwlyl/p/10576148.html
總結
- 上一篇: PMP项目管理13个计划
- 下一篇: mysql基础14(关于mysql数据库