MySQL基礎理論
mySQL (關系型數據庫管理系統)
編輯 MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在WEB應用方面,MySQL是最好的 RDBMS(Relational Database ManagementSystem,關系數據庫管理系統) 應用軟件。
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL所使用的SQL語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。
數據庫的發展史
- 萌芽階段-----文件系統
使用磁盤文件來存儲數據
- 初級階段-----第一代數據庫
出現了網狀模型、層次模型的數據庫
- 中級階段-----第二代數據庫
關系型數據庫和結構化查詢語言
- 高級階段------新一代數據庫
“關系-對象”型數據庫
數據庫管理系統
數據庫是數據的匯集,它以一定的組織形式存于存儲介質上
DBMS是管理數據庫的系統軟件,它實現數據庫系統的各種功能。是數據庫系統的核心。
DBA:負責數據庫的規劃、設計、協調維護和管理等工作
應用程序指以數據庫為基礎的應用程序。
管理系統的優缺點
- 管理系統的缺點
編寫應用程序不方便
數據冗余不可避免
應用程序依賴性
不支持對文件的并發訪問
數據間聯系弱
難以按用戶視圖表示數據
無安全控制功能
- 管理系統的優點
相互關聯的數據的集合
較少的數據冗余
程序與數據相互對立
保證數據的安全、可靠
最大限度地保證數據的正確性
數據可以并發使用并能同時保證一致性
數據三要素
- 數據結構:
包括兩類,一類是與數據類型、內容、性質有關的對象,比如關系模型中的域、屬性和關系等;另一類是與數據之間聯系有關的對象,它從數據組織層表達數據記錄與字段的結構
- 數據的操作:
- 數據提取:在數據集合中提取感興趣的內容。(SELECT)
- 數據更新:變更數據庫中的數據。(INSERT、DELETE、UPDATE
- 數據的約束條件:是一組完整性規則的集合
- 實體(行)完整性Entity integrity
- 域(列)完整性Domain Integrity
- 參考完整性Referential Integrity
數據規劃簡單流程
- 第一階段:收集數據,得到字段
收集必要且完整的數據項
轉換成數據表的字段
- 第二階段:把字段分類,歸入表,建立表的關聯
關聯:表和表間的關系
分割數據表并建立關聯的優點
節省空間
減少輸入錯誤
方便數據修改
- 第三階段:
- 規范化數據庫
索引功能
索引是一種特殊的文件(InnoDB 數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。索引不是萬能的,索引可以加快數據檢索操作,但會使數據修改操作變慢。每修改數據記錄,索引就必須刷新一次。為了在某種程度上彌補這一缺陷,許多 SQL 命令都有一個 DELAY_KEY_WRITE 項。這個選項的作用是暫時制止 MySQL 在該命令每插入一條新記錄和每修改一條現有之后立刻對索引進行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進行。在需要把許多新記錄插入某個數據表的場合,DELAY_KEY_WRITE 選項的作用將非常明顯。另外,索引還會在硬盤上占用相當大的空間。因此應該只為最經常查詢和最經常排序的數據列建立索引。注意,如果某個數據列包含許多重復的內容,為它建立索引就沒有太大的實際效果。
從理論上講,完全可以為數據表里的每個字段分別建一個索引,但 MySQL 把同一個數據表里的索引總數限制為16個。
索引類別
- 普通索引
普通索引(由關鍵字 KEY 或 INDEX 定義的索引)的唯一任務是加快對數據的訪問速度。因此,應該只為那些最經常出現在查詢條件(WHERE column =)或排序條件(ORDER BY column)中的數據列創建索引。只要有可能,就應該選擇一個數據最整齊、最緊湊的數據列(如一個整數類型的數據列)來創建索引。
- 唯一索引
普通索引允許被索引的數據列包含重復的值。比如說,因為人有可能同名,所以同一個姓名在同一個“員工個人資料”數據表里可能出現兩次或更多次。
如果能確定某個數據列將只包含彼此各不相同的值,在為這個數據列創建索引的時候就應該用關鍵字UNIQUE 把它定義為一個唯一索引。這么做的好處:一是簡化了 MySQL 對這個索引的管理工作,這個索引也因此而變得更有效率;二是 MySQL 會在有新記錄插入數據表時,自動檢查新記錄的這個字段的值是否已經在某個記錄的這個字段里出現過了;如果是,MySQL 將拒絕插入那條新記錄。也就是說,唯一索引可以保證數據記錄的唯一性。事實上,在許多場合,人們創建唯一索引的目的往往不是為了提高訪問速度,而只是為了避免數據出現重復。
- 主索引
在前面已經反復多次強調過:必須為主鍵字段創建一個索引,這個索引就是所謂的“主索引”。主索引與唯一索引的唯一區別是:前者在定義時使用的關鍵字是 PRIMARY 而不是 UNIQUE。
- 外鍵索引
如果為某個外鍵字段定義了一個外鍵約束條件,MySQL 就會定義一個內部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。
- 復合索引
索引可以覆蓋多個數據列,如像 INDEX (columnA, columnB) 索引。這種索引的特點是 MySQL 可以有選擇地使用一個這樣的索引。如果查詢操作只需要用到 columnA 數據列上的一個索引,就可以使用復合索引 INDEX(columnA, columnB)。不過,這種用法僅適用于在復合索引中排列在前的數據列組合。比如說,INDEX (A,B,C) 可以當做 A 或 (A,B) 的索引來使用,但不能當做 B、C 或 (B,C) 的索引來使用。
MySQL體系結構
大致理論就是這樣, 下次寫安裝流程與使用方法!!