***資料庫基礎(重點)
1.在生活中我們已經可以存放東西的檔案,可是為什麼還需要資料庫呢?
因為檔案存放東西存在一定的隱患:
*存放在檔案裡的東西可能不安全;
*存放在檔案裡的內容不太方便檢視;
*對於大量的資料檔案不便於存放;
*在程式中需要用到資料時對檔案不方便訪問;
重點來啦:因為檔案存在這樣的問題,所以有專家們設計出了資料庫,方便我們對資料進行管理,保證資料的安全性。
2.資料庫的定義
從最直觀上來解釋資料庫,它就是存放資料的一個倉庫。更深層次的來說資料庫:電腦裡的資料都是存放在磁碟和記憶體中的,而資料庫就是通過存放資料的磁碟和記憶體,來更加高效的儲存和管理這些資料。
3.在資料庫中操作的時候最長出現的問題
(1)伺服器停止
(2)拒絕訪問:密碼錯誤
4.伺服器——>資料庫——>表之間的關係
一個伺服器有多個數據庫,每個資料庫又有多個表。
5.資料庫的建立、使用、建立表、插入資料
*資料庫的建立:create database 資料庫的名字
注意:
(1)在建立資料庫的時候資料庫的名字不要大寫;
(2)資料庫的名字不要起特殊字元,如:$、&;
(3)資料庫的名字與C語言變數的名字類似;
*使用資料庫:use 資料庫的名字
*建立資料庫中的表:create table student(
id int,
name varchar(32),
gender varchar(2)
);
*檢視當前資料有哪些表
注意:在MySQL中,如果輸入的是中文的符號,那麼游標就會變長提醒你,輸入有錯誤。
6.very important ===>MySQL的架構
(1) 客戶端聯結器(對於不同的語言它都對應自己的伺服器)
(2)資料庫的備份、視覺化管理介面--------------------------------->a.認證(驗證密碼對錯)
b.處理SQL的所有內容=>語法分析(分析你的SQL 的語法是否正確)=>優化=>提高效能
(3)可插拔式儲存引擎=>Indexes(儲存引擎就是用來管理檔案資料的,對於客戶用的時候插入不用的時候取走):MyISAM、InnoDB、Federated、Archive(歸檔儲存)、Merge、Memory(記憶體)、Cluster、Example
(4)檔案系統--------------------------------------------------------------->日誌檔案(生成的東西)
*MySQL的可以移植性強:因為它在任何平臺下的物理體系結構都是一致的
7.very important---->MySQL中最愛問的考點:引擎
(1)首先我們得知道什麼是儲存引擎?
先舉個例子,我們有時候需要研究海量的資料,這時我們需要採用記憶體儲存引擎。記憶體儲存引擎可以在記憶體中儲存所有表格等等功能。又比如我們有時候需要研究事務,這時候我麼就會使用支援事務處理的儲存引擎。在資料庫中不同的技術配套相關的功能去使得資料庫管理系統如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢技術,這樣的實現方法就叫儲存引擎。
(2)儲存引擎的型別
標記:在表格中(1:勾)
Feature(特徵) | MyISAM | BDB | Memory | InnoDB | Archive | NDB |
---|---|---|---|---|---|---|
Storage Limits(儲存限制) | No | No | Yes | Yes | 64TB | Yes |
Transanctions(commit,rollback,etc)(事務安全) | 1 | 1 | ||||
Locking granulanty(鎖機制) | Table | Page | Table | Row | Row | Row |
MVCC/Snapshot Read | 1 | 1 | 1 | |||
Geospatial support | 1 | |||||
B-Tree indexes(B樹索引) | 1 | 1 | 1 | 1 | 1 | |
Hash indexes(雜湊索引) | 1 | 1 | 1 | |||
Full text search index(全文索引) | 1 | |||||
Clustered index(叢集索引) | 1 | |||||
Data Caches (資料快取) | 1 | 1 | ||||
Index Caches(索引快取) | 1 | 1 | 1 | 1 | ||
Compressed data | 1 | 1 | ||||
Encrypted data(via function) (資料可壓縮) | 1 | 1 | 1 | 1 | 1 | 1 |
Storage cost(space used)(空間使用量) | Low | Low | N/A | High | Very Low | Low |
Mermory cost(記憶體使用量) | Low | Low | Medium | High | Very | Low |
Bulk Insert Speed(批量插入的速度) | High | High | High | Low | Very High | High |
Cluster database support(叢集資料庫支援) | 1 | |||||
Replication support(外件支援) | 1 | 1 | 1 | 1 | 1 | 1 |
Foreign key support | 1 | |||||
Backup/Pointt-in-time recovery | 1 | 1 | 1 | 1 | 1 | 1 |
Query cache support | 1 | 1 | 1 | 1 | 1 | 1 |
Update Statistics for Data Dictionary v | 1 | 1 | 1 | 1 | 1 | 1 |
需要特別記住的四個引擎
(1)MyISAM:它不支援事務,檢索效能高,支援索引;
(2)InnoDB:支援事務,在MySQL5.5以後預設儲存引擎就是InnoDB;
(3)Mermory:特點是速度快,資料不會儲存到檔案系統;
(4)Archive(歸檔儲存):為大量很少引用的歷史、歸檔、安全審計資訊的儲存和檢索提供解決方案。
8.SQL分類
a.DDL資料定義語言:用來維護儲存資料的結構(建立一個數據庫表)
代表指令:create,drop,alter
b.DML資料操縱語言:用來對資料進行操作
代表指令:insert,delete,update
在DML中又單獨定義了一個DQL,資料查詢語言,代表指令:select
c.DCL資料控制語言:主要負責許可權和事務
代表指令:grant,revoke,commit