MySQL
MySQL簡介
數據庫的產生
- 爲何有數據庫?
文件保存數據有以下缺陷:
1.文件安全性問題
2.不利於查詢和管理
3.不利於存儲海量數據
4.程序中使用不方便 - 什麼是數據庫?
綜合以上文件存儲的缺陷,專家們設計出更利於管理數據的東西----數據庫,可以有效的管理數據,數據庫水平是衡量一個程序員水平的重要指標。 - 數據庫的存儲介質:
1.磁盤
2.內存
主流數據庫
- SQL Server :微軟的產品, .Net程序員的最愛,中大型項目。
- Oracle: 甲骨文產品,適合大型項目,複雜的業務邏輯,併發一般來說不如MySQL。
- MySQL:世界上最受歡迎的數據庫,屬於甲骨文,併發性好,不適合做複雜的業務。主要用在電商, SNS,論壇。對簡單的SQL處理效果好。
- PostgreSQL :加州大學伯克利分校計算機系開發的關係型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
- SQLite: 是一款輕型的數據庫,是遵守ACID的關係型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
- H2: 是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
MySQL數據安裝
MySQL分類
- DDL數據定義語言,用來維護存儲數據的結構代表指令: create, drop, al ter
- DML數據操縱語言,用來對數據進行操作代表指令: i nsert, del ete, update
- DML中又單獨分了一個DQL,數據查詢語言,代表指令: sel ect
- DCL數據控制語言,主要負責權限管理和事務代表指令: grant, revoke, commi t
查看數據引擎
show engines;
- 現在默認使用MySQL創建庫時候使用的引擎是 InnoDB
談一談MySQL中 InnoDB 與 MyISAM 引擎的區別
-
在功能上的區別:
1.事務支持:
- MyISAM不支持事務,而InnoDB支持。InnoDB的AUTOCOMMIT默認是打開,即每一條SQL語句都會被默認封裝成一個事務,自動提交。
- MyISAM是非事務安全型的,而InnoDB是食物安全型的。
2.存儲結構:
- MyISAM:每個MyISAM在磁盤上存儲成三個文件,第一個文件類型後綴名.fem(以表的名字開始), 第二個文件後綴名 .MYD(MYData)(數據文件),第三個文件後綴名.MYI(MYIndex)(索引文件)
- InnoDB:所有的表都保存在同一個數據文件中(也可能是多個文件,或者是獨立的表空間文件),InnoDB之受限於操作系統的大小,一般是2GB。
3.存儲空間
- MyISAM:可以壓縮,但是存儲空間較小。支持三種不同的存儲格式:靜態表,動態表,壓縮表。
- InnoDB:需要更多的內存河村春,他會在主內存中建立其專用的緩衝池用於高速緩衝數據和索引。
4.可移植性備份及恢復
- MySIAM:數據以文件形式存儲,跨平臺數據轉移很方便。備份恢復時可單獨對於某表進行操作。
- InnoDB:可以拷貝數據文件,備份binlog,或者使用mysqldump,但是當數據量過大時就很難受了。
5.事務支持
- MySIAM:強調的是性能,操作具有原子性,執行效率比InnoDB快,但是不提供事務支持
- InnoDB:提供事務支持,外鍵等高級數據庫功能。
6.AUTO_INCREMENT(自增)
- MySIAM:可以和其他字段一起建立聯合索引
- InnoDB:必須包含只有該字段的索引
7.表鎖差異
- MySIAM:只支持表級鎖
- InnoDB:支持事務和行級鎖
8.全文索引
- MySIAM:支持全文索引
- InnoDB:不支持全文索引
9.表的主鍵
- MySIAM:允許沒有任何索引和主鍵的表存在,索引保存行的地址。
- InnoDB:若是沒有設置主鍵或者索引就會自動創建生成一個6字節的主鍵(用戶不可見)
10.表的總行數
- MySIAM:保存有表的總行數,(使用:select count( * ) from table),就可以知道總行數。
- InnoDB:沒有保存表的總行數。
11.外鍵
- MySIAM:不支持
- InnoDB:支持
12.CURD操作
- MySIAM:若是執行大量SELECT,MySIAM更合適
- InnoDB:若是數據執行大量的INSERT,UPDATE,更適合使用InnoDB
-
索引方式不同:
詳細請看:
下一篇: