紮穩 SQL 基礎, 循序養成大數據分析新技能
MySQL / MariaDB、MS SQL Server、Oracle、PostgreSQL、DB2 全適用!
建構SQL執行環境
-
安裝 XAMPP 來建構 MySQL / MariaDB 資料庫
-
安裝 XAMPP
下載 XAMPP (https://www.apachefriends.org/zh_tw/index.html) -
設定 MySQL / MariaDB 管理員密碼
-
-
建立學習用資料庫
-
透過 SQL 語法來操作資料庫
-
資料庫與SQL
資料庫是什麼
#### 身邊隨處可見的資料庫
#### 為什麼需要 DBMS
#### DBMS 具有許多類型
資料庫的架構
#### 一般 RDBMS 的系統架構
#### 資料表的結構
SQL 基本概要
#### 標準 SQL
#### SQL 敘述與其分類
#### SQL 的基本撰寫規則
建立資料表
#### 資料表的內容
#### 建立資料庫 (Create Database 敘述)
#### 建立資料表 (Create Table 敘述)
#### 命名規則
#### 指定資料型別
#### 設定條件約束
刪除與修改資料表
#### 刪除資料表 (Drop Table 敘述)
#### 修改資料表結構 (Alter Table 敘述)
#### 新增資料至資料表
自我練習
查詢的基本語法
SELECT 敘述的基本語法
#### 輸出特定欄位資料
#### 輸出所有欄位資料
#### 替欄位取個別名
#### 輸出常數
#### 省略結果中重複的紀錄
#### 以 WHERE 子句篩選特定紀錄
#### 註解的寫法
算術運算子與比較運算子
#### 算術運算子
#### 請留意 NULL 的運算
#### 比較運算子
#### 對字串使用不等號的需注意事項
#### 不能對 NULL 使用比較運算子
邏輯運算子
#### NOT 運算子
#### AND 運算子與 OR 運算子
#### 加上括號的部分優先處理
#### 邏輯運算子與真偽值
#### 含有 NULL 時的真偽值
自我練習
彙總與排序
查詢時彙總資料
#### 彙總函數
#### 計算資料表的紀錄筆數
#### 計算 NULL 以外的紀錄筆數
#### 求得總計
#### 求得平均值
#### 求得最大、最小值
#### 排除重複值再使用彙總函數 (DISTINCT 關鍵字)
資料分群
#### GROUP BY 子句
#### 彙總鍵包含 NULL 的狀況
#### 使用 WHRER 子句時 GROUP BY 的作用
#### 彙總函數與 GROUP BY 子句的常見錯誤
對彙總結果指定條件
#### HAVING 子句
#### 可寫在 HAVING 子句的元素
#### 適合以 WHERE 子句取代 HAVING 子句的條件
查詢結果排序
#### ORDER BY 子句
#### 指定升幂或降幂
#### 指定多個排序鍵
#### NULL 的順序
#### 使用欄位別名指定排序鍵
#### ORDER BY 子句可使用的欄位
#### 請勿使用欄位編號
自我練習
更新資料
新增資料 (INSERT)
#### 什麼是 INSERT
#### INSERT 敘述的基本語法
#### 省略欄位串列
#### 存入 NULL
#### 存入預設值
#### 從其他資料表複製資料
刪除資料 (DELETE)
#### DROP TABLE 敘述與 DELETE 敘述
#### DELETE 敘述的基本語法
#### 刪除特定紀錄的 DELETE 敘述 (搜尋式 DELETE)
修改資料 (UPDATE)
#### UPDATE 的基本語法
#### 指定條件的 UPDATE 敘述 (搜尋式 UPDATE)
#### 將資料改為 NULL
#### 修改多個欄位的資料
交易功能
#### 什麼是交易功能
#### 如何設定交易功能
#### ACID 特性
自我練習
進階查詢功能
檢視表
#### 檢視表與資料表
#### 檢視表的建立方式
#### 檢視表的限制(1) 建立時不可使用 ORDER BY 子句
#### 檢視表的限制(2) 透過檢視表更新資料
#### 刪除檢視表
子查詢
#### 子查詢與檢視表
#### 子查詢的名稱
#### 純量子查詢
#### 可寫入純量子查詢的位置
#### 使用純量子查詢的需注意事項
關聯子查詢
#### 一般子查詢與關聯子查詢的差異
#### 關聯子查詢也能進行資料分群
#### 連結條件必須寫在子查詢內
自我練習
函數、述詞、Case 運算式
各式各樣的函數
#### 函數的類型
#### 數學函數
#### 字串函數
#### 日期函數
#### 轉換函數
述詞
#### 什麼是述詞
#### LIKE 述詞 - 搜尋相同的字串
#### BETWEEN - 範圍搜尋
#### IS NULL、IS NOT NULL - 判斷是否為 NULL
#### IN 述詞 - OR 的簡便形式
#### 指定子查詢做為 IN 述詞的參數
#### EXISTS 述詞
CASE 運算式
#### 什麼是 CASE 運算式
#### CASE 運算式的語法
#### CASE 運算式的使用方式
自我練習
集合運算 (合併查詢)
資料表的加法與減法運算
#### 什麼是集合運算
#### 資料表的加法運算 - UNION
#### 集合運算的注意事項
#### 列出重複紀錄的集合運算 - ALL選項
#### 篩選出資料表的共通部分 - INTERSECT
#### 紀錄的減法運算 - EXCEPT
結合 (聯結多個資料表欄位)
#### 什麼是結合
#### 內部結合 - INNER JOIN
#### 外部結合 - OUTER JOIN
#### 使用3個以上資料表的結合
#### 交叉結合 - CROSS JOIN
自我練習
SQL 進階處理功能
各式各樣的函數
#### 什麼是視窗函數
#### 視窗函數的語法
#### 基本使用方式 - 以 RANK 函數為例
#### 也可以不指定 PARTITION BY
#### 常用的視窗專用函數
#### 視窗函數應當寫在何處
#### 將彙總函數當作視窗函數使用
#### 計算移動平均
#### 2個 ORDER BY
GROUPING 運算子
#### 一併列出總計行
#### ROLLUP - 1次取得總計與小計
#### GROUPING 函數 - 分辨 NULL 的真偽
#### CUBE - 將資料堆疊成積木
#### GROUPING SETS - 只取出部分積木
自我練習
從應用程式連接資料庫
串聯資料庫和應用程式
#### 資料庫與應用程式的關係
#### 驅動程式 - 2個世界的橋樑
#### 驅動程式的種類
程式的基礎知識
#### 一如往例的 「Hello, World」
#### 編譯與執行程式
#### 常見的錯誤
利用程式連到 MariaDB
#### 執行 SQL 敘述的 Java 程式
#### Java 如何從資料庫取得資料
#### 執行連接至資料庫的程式
#### 嘗試篩選出資料表的資料
#### 嘗試修改資料表的資料
#### 小結
自我練習
/... 未完待續 .../