天天看點

MySQL8.0資料庫基礎教程(二)-了解"關系"(下)3 SQL:面向集合程式設計4 資料庫案例5 總結參考

3 SQL:面向集合程式設計

3.1 文法特性

SQL 是一種聲明性的程式設計語言,文法接近于自然語言(英語)。通過幾個簡單的英文單詞,例如 SELECT、INSERT、UPDATE、CREATE、DROP 等,完成大部分的資料庫操作。

簡單的查詢示例

MySQL8.0資料庫基礎教程(二)-了解"關系"(下)3 SQL:面向集合程式設計4 資料庫案例5 總結參考

可以看出,SQL 簡單直覺。

  • 以上查詢中的 SELECT、FROM 等稱為關鍵字(也稱為子句),一般大寫
  • 表名、列名等内容一般小寫
  • 分号(;)表示語句的結束

SQL 語句不區分大小寫,但是遵循一定的規則可以讓代碼更容易閱讀。

SQL 是一種聲明式的語言,聲明式語言的主要思想是告訴計算機想要什麼結果(what),但不指定具體怎麼做。這類語言還包括 HTML、正規表達式以及函數式程式設計等。

3.2 面向集合

對于 SQL 語句而言,它所操作的對象是一個集合(表),操作的結果也是一個集合(表)。例如以下查詢:

SELECT emp_id, emp_name, salary
  FROM employee;
      

其中 employee 是一個表,它是該語句查詢的對象;同時,查詢的結果也是一個表。是以,我們可以繼續擴充該查詢:

SELECT emp_id, emp_name, salary
  FROM (
       SELECT emp_id, emp_name, salary
         FROM employee
       ) dt;
      

我們将括号中的查詢結果(取名為 dt)作為輸入值,傳遞給了外面的查詢;最終整個語句的結果仍然是一個表。

SQL 中的查詢可以完成各種資料操作,例如過濾轉換、分組彙總、排序顯示等;但是它們本質上都是針對表的操作,結果也是表。

不僅僅是查詢語句,SQL 中的插入、更新和删除都以集合為操作對象。我們再看一個插入資料的示例:

CREATE TABLE t(id INTEGER);

-- 适用于 MySQL、SQL Server 以及 PostgreSQL
INSERT INTO t(id)
VALUES (1), (2), (3);
      

我們首先使用 CREATE TABLE 語句建立了一個表,然後使用 INSERT INTO 語句插入資料。在執行插入操作之前,會在記憶體中建立一個包含 3 條資料的臨時集合(表),然後将該集合插入目标表中。由于我們通常一次插入一條資料,以為是按照資料行進行插入;實際上,一條資料也是一個集合,隻不過它隻有一個元素而已。

UNION ALL 是 SQL 中的并集運算,用于将兩個集合組成一個更大的集合。此外,SQL 還支援交集運算(INTERSECT)、差集運算(EXCEPT)以及笛卡兒積(Cartesian product)

4 資料庫案例

包含 3 個表:員工表(employee)、部門表(department)和職位表(job)。

結構圖,也稱為實體-關系圖(Entity-Relational Diagram)

MySQL8.0資料庫基礎教程(二)-了解"關系"(下)3 SQL:面向集合程式設計4 資料庫案例5 總結參考

5 總結

關系模型中定義了一個簡單的資料結構,即關系(表),用于存儲資料。而 SQL 是關系資料庫的通用标準語言,通過聲明的方式執行資料定義、資料操作、通路控制等。

記住,對于 SQL,一切都是關系(表)。

參考