MySQL 24小時入門筆記(1),概念

MySQL 24小時入門筆記

1. 數據庫概念

1.1 數據和儲存

數據庫本質上作的工做是儲存和查詢數據。理論上而言,MySQL應該叫作DBMS,也就是數據庫管理系統,而不是數據庫數據庫

DBMS提供了統一的創建、使用、管理數據庫的接口,常見的DBMSpostgreSQLMariaDBSQL Server等。性能優化

1.2 數據庫和Schema

一般來講,一個DBMS會支持多個數據庫共存。這裏所說的數據庫指的是特定數據庫管理系統管理下的數據庫,而不是上一節說的DBMS函數

Schema的中譯術語通常叫模式Schema描述了數據庫的結構,好比說有哪些表,表有哪些字段,字段分別有哪些限制,有哪些聲明瞭的函數,等等。post

一般的DBMS每每是這樣的結構:位於DBMS管理最頂層的是一個或多個數據庫,數據庫裏存放表,表裏以行爲單位存放數據。性能

1.3 表、列、鍵、行

1.3.1 表

表的英語術語是Table優化

用過Excl嗎?spa

id name
1 Mike
2 John

直觀的表就是一個二維的「表」,有行,有列。code

1.3.2 列

列的術語是 Column對象

每一個列都應該有一個特定的類型(type),使該列僅僅儲存指定類型的數據。接口

1.3.3 鍵……或者叫碼

鍵的術語是 Key

一般指的是Primary Key,也就是主鍵。主鍵能夠是任意一個列。可是若是列是主鍵,那麼這個列必須每一個行都保證不和其餘行重複。

主鍵也能夠是多個列,若是是多個列,那麼必須保證這些列的組合不重複。

舉例來講

db table id name
aa aaaaa 11 xxxx
aa bbbbb 11 xxxx

其中dbtable還有id都是主鍵,只要保證沒有兩個行同時存在相同的db/table/id就算是知足了主鍵約束。

須要注意的是,多主鍵的可移植性存疑,不必定其餘的DBMS會支持。

1.3.4 行

行的術語是 Row

每一個行都是一條記錄(record),換作對象的概念的話,也能夠說,每一個表都儲存了一個其特有的的Row對象的集合,Column一一對應Row對象的屬性。

好比上文的

id name
1 Mike
2 John

對象概念表達就是

class row {
  int id;
  std::string name;
};

const std::set<row> table;

1.4 SQL 是什麼

SQL的直譯是結構化查詢語言,其實就是標準化的數據庫查詢語言,基本每一個DBMS都支持。

可是……數據庫管理系統對SQL標準的支持並非那麼上心。其中有性能優化、平臺優化之類的緣由,也有數據庫軟件開發商自身的考慮。但總而言之,不要太期待一樣的SQL能在任意DBMS裏都同樣跑得歡。

相關文章
相關標籤/搜索