天天看點

MySQL8.0資料庫基礎教程(二)-了解"關系"(上)1 SQL 的哲學2 關系資料庫

1 SQL 的哲學

形如 Linux 哲學一切都是檔案,在 SQL 領域也有這樣一條至理名言

一切都是關系

2 關系資料庫

所謂關系資料庫(Relational database)是建立在關系模型基礎上的資料庫,借助于集合代數等數學概念和方法來處理資料庫中的資料。

現實世界中的各種實體以及實體之間的各種聯系均用關系模型表示。現如今雖然對此模型有一些批評意見,但它還是資料存儲的傳統标準。标準資料查詢語言SQL就是一種基于關系資料庫的語言,這種語言執行對關系資料庫中資料的檢索和操作。

關系模型由關系資料結構、關系操作集合、關系完整性限制三部分組成。

2.1 資料結構

表(關系Relation)

以列(值組Tuple)和行(屬性Attribute)的形式組織起來的資料的集合。一個資料庫包括一個或多個表(關系Relation)。例如,可能有一個有關作者資訊的名為authors的表(關系Relation)。每行(屬性Attribute)都包含特定類型的資訊,如作者的姓氏。每列(值組Tuple)都包含有關特定作者的所有資訊:姓、名、住址等等。在關系型資料庫當中一個表(關系Relation)就是一個關系,一個關系資料庫可以包含多個表(關系Relation)

也稱為記錄(Record),代表了關系中的單個實體。

也稱為字段(Field),表示實體的某個屬性。表中的每個列都有一個對應的資料類型,常見的資料類型包括字元類型、數字類型、日期時間類型等。

2.2 操作集合

關系子產品中常用的操作包括:

  • 增加(Create)
  • 查詢(Retrieve)
  • 更新(Update)
  • 删除(Delete)

其中,使用最多、也最複雜的操作就是資料查詢,具體來說包括

  • 選擇(Selection)
  • 投影(Projection)
  • 并集(Union)
  • 交集(Intersection)
  • 差集(exception)
  • 笛卡兒積(Cartesian product)
  • ...

2.3 完整性限制

完整性限制包括

2.3.1 實體完整性(Entity integrity)

實體完整性(是關系模型中資料庫完整性三項規則的其中之一。實體完整性這項規則要求每個資料表都必須有主鍵,而作為主鍵的所有欄位,其屬性必須是獨一及非空值。

在關系資料庫中,唯一辨別每一行資料的字段稱為主鍵(Primary Key),主鍵字段不能為空。每個表有且隻能有一個主鍵。

2.3.2 參照完整性

又稱引用完整性,是資料的屬性,用以表明引用的有效。參照的完整性不允許關系中有不存在的實體引用。參照完整性與實體完整性二者,皆是關系模型必須滿足的完整性限制條件,其目的在于保證資料的一緻性。

外鍵的參照完整性。

  • 外鍵(Foreign Key)代表了兩個表之間的關聯關系

    比如員工屬于某個部門;是以員工表中存在部門編号字段,引用了部門表中的部門編号字段。對于外鍵引用,被引用的資料必須存在,員工不可能屬于一個不存在的部門;删除某個部門之前,也需要對部門中的員工進行相應的處理。

2.3.3 使用者定義完整性

基于業務需要自定義的限制。

非空限制(NOT NULL)

確定了相應的字段不會出現空值,例如員工一定要有姓名

唯一限制(UNIQUE)

用于確定字段中的值不會重複,每個員工的電子郵箱必須唯一

檢查限制(CHECK)

可以定義更多的業務規則,例如,薪水必須大于 0 ,字元必須大寫等

預設值(DEFAULT)

用于向字段中插入預設的資料。

MySQL 中隻有 InnoDB 存儲引擎支援外鍵限制;MySQL 8.0.16 增加了對檢查限制的支援。是以我們強大的 MySQL 支援以上所有限制。

從 MySQL 5.5 開始預設使用 InnoDB 存儲引擎,支援事務處理(ACID)、行級鎖定、故障恢複、多版本并發控制(MVCC)以及外鍵限制等