Database講義.docx_101

Size: px
Start display at page:

Download "Database講義.docx_101"

Transcription

1 一 資 料 庫 系 統 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 在 一 個 資 料 庫 系 統 (Database System) 中 可 分 為 資 料 庫 (Database) 與 資 料 庫 管 理 系 統 (Database Management System, DBMS) 兩 個 部 份 資 料 庫 簡 單 的 說 就 是 一 群 經 過 電 腦 整 合 後 的 資 料, 儲 存 在 一 個 或 多 個 檔 案 中, 而 管 理 這 個 資 料 庫 的 軟 體 就 稱 之 為 資 料 庫 管 理 系 統 名 詞 說 明 : 1. 資 料 (Data): 資 料 是 資 料 庫 中 儲 存 的 基 本 物 件 資 料 的 種 類 很 多, 包 括 文 字 圖 形 聲 音 影 像 等 都 是 資 料 2. 資 料 庫 : 一 群 整 合 性 的 資 料 記 錄 集 合 3. 資 料 庫 管 理 系 統 (DBMS) 是 由 一 組 電 腦 程 式 所 組 成, 用 來 定 義 管 理 和 處 理 資 料 庫 內 儲 存 的 資 料 資 料 庫 是 以 嚴 謹 的 結 構 將 零 散 的 資 料 組 合 而 成 為 有 用 的 資 料, 藉 由 資 料 庫 管 理 系 統 用 來 管 理 這 些 資 料 一 個 資 料 庫 系 統 的 組 成 有 四 大 部 分 : 1. 使 用 者 使 用 者 乃 是 資 料 庫 系 統 的 主 要 服 務 對 象, 依 其 使 用 資 料 庫 的 方 式 目 的 與 時 機 來 區 分, 可 以 將 使 用 者 分 為 下 列 三 種 : (1) 直 接 使 用 者 : 對 資 料 庫 管 理 系 統 下 達 命 令 的 使 用 者 (2) 應 用 程 式 : 透 過 程 式 介 面 的 呼 叫, 對 資 料 庫 管 理 系 統 下 達 命 令 的 應 用 軟 體 程 式 (3) 資 料 庫 管 理 師 (Database Administrator, 簡 稱 DBA): 透 過 資 料 庫 管 理 系 統 所 提 供 的 命 令, 扮 演 資 料 庫 管 理 系 統 與 上 述 兩 種 使 用 者 之 間 的 中 介 角 色 負 責 排 解 資 料 庫 管 理 系 統 在 使 用 上 的 疑 難 調 整 系 統 效 能 保 護 資 料 避 免 破 壞 等 等 2. 資 料 資 料 乃 是 資 料 庫 中 的 主 體, 在 資 料 庫 系 統 中 的 資 料 基 本 可 以 分 為 運 算 資 料 (Operational Data) 與 異 動 資 料 (Transaction Log) 運 算 資 料 就 是 使 用 者 所 要 面 對 的 處 理 對 象, 也 就 是 資 料 庫 中 所 存 放 的 資 料 ; 而 異 動 資 料 則 是 資 料 庫 管 理 系 統 為 了 對 資 料 庫 做 有 效 和 正 確 的 管 理, 依 照 使 用 者 所 下 達 的 命 令, 而 自 動 產 生 的 記 錄 資 料 頁 次 :1

2 3. 硬 體 在 資 料 庫 系 統 上 的 硬 體 設 備 包 括 電 腦 主 機 磁 碟 機 光 碟 機 ( 櫃 ) 備 份 裝 置 等 4. 軟 體 一 個 資 料 庫 系 統 所 包 含 的 軟 體 包 括 : (1) 資 料 庫 管 理 系 統 : 使 用 者 和 資 料 庫 之 間 的 介 面 (2) 應 用 程 式 : 即 是 之 前 所 提 透 過 各 種 程 式 介 面 使 用 資 料 庫 的 應 用 程 式, 也 是 資 料 庫 的 使 用 者 之 一 二 資 料 庫 管 理 系 統 的 基 本 功 能 1. 能 有 組 織 地 將 資 料 儲 存 起 來, 並 具 備 快 速 的 資 料 存 取 技 巧 2. 能 有 效 地 管 理 資 料 庫 的 綱 要 資 料 庫 綱 要 (Schema) 指 的 是 使 用 者 對 資 料 庫 的 定 義, 這 些 定 義 是 一 些 用 來 描 述 資 料 的 資 料 (Metadata), 包 含 資 料 的 欄 位 名 稱 資 料 型 態 與 合 法 使 用 者 等 等 3. 要 提 供 一 套 高 階 查 詢 語 言 (High-level Query Language) 供 使 用 者 使 用 4. 異 動 的 管 理 (Transaction Management): 由 於 系 統 中 可 能 有 多 個 使 用 者 同 時 對 同 一 個 資 料 庫 下 達 命 令, 要 求 資 料 庫 管 理 系 統 完 成 工 作 而 使 用 者 對 於 資 料 庫 的 一 個 完 整 動 作 稱 為 一 個 異 動 一 個 異 動 可 能 包 含 許 多 的 運 算 動 作, 所 以 資 料 庫 管 理 系 統 必 須 有 效 地 做 異 動 的 管 理, 以 防 止 同 時 執 行 的 異 動 因 交 錯 執 行 而 發 生 不 可 挽 救 的 錯 誤 而 管 理 這 些 異 動 時, 最 重 要 的 參 考 資 料 便 是 異 動 記 錄 5. 對 資 料 的 安 全 管 制 (Security Control) 一 般 作 法 包 括 : (1) 建 立 使 用 者 通 行 密 碼 (2) 針 對 資 料 的 新 增 (Insert) 刪 除 (Delete) 查 詢 (Select) 修 改 (Update) 等 權 利 分 別 訂 定 使 用 權 (3) 使 用 View( 視 界, 或 稱 概 觀 ) 來 隱 密 部 份 資 料 不 給 使 用 者 或 查 詢 6. 備 份 與 確 保 資 料 正 確 性 的 工 具 7. 提 供 使 用 者 獨 立 的 特 性 8. 提 供 DBA 用 來 管 理 系 統 與 資 料 庫 的 工 具 如 監 控 系 統 效 能 調 整 系 統 效 能 等 工 具 頁 次 :2

3 三 資 料 庫 的 資 料 結 構 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 資 料 庫 是 由 資 料 所 組 成, 而 這 些 資 料 可 分 為 位 元 (bit) 字 元 (character) 欄 位 field) 記 錄 (record) 檔 案 (file) 與 資 料 庫 (database) 等 幾 個 層 次 : 位 元 字 元 欄 位 記 錄 檔 案 在 電 腦 中 所 有 的 資 料 都 是 由 0 與 1 所 構 成, 然 後 由 8 個 bit 組 成 一 個 byte 構 成 字 元 的 單 位 一 個 或 數 個 字 元 可 以 構 成 一 個 欄 位 存 放 資 料, 而 一 個 或 數 個 欄 位 又 可 以 組 成 一 筆 記 錄 例 如 一 本 書 的 記 錄 包 括 書 號 書 名 作 者 與 價 格 等 欄 位 : 有 4 個 欄 位 書 號 書 名 作 者 價 格 由 欄 位 組 合 成 記 錄 每 個 欄 位 都 會 有 定 義 使 用 的 byte 數, 以 提 供 儲 存 資 料 的 空 間 例 如 一 些 書 目 資 料 的 記 錄 : F001 資 料 庫 系 統 應 用 張 三 200 F002 資 料 庫 設 計 實 務 李 四 450 兩 筆 記 錄 許 多 的 記 錄 會 存 放 在 檔 案 中, 將 這 些 檔 案 組 合 在 一 起 就 構 成 了 資 料 庫 基 本 上 在 資 料 庫 中 所 存 放 的 是 經 過 整 合 後 的 資 料, 可 避 免 資 料 的 重 複 而 且 便 於 修 改 及 管 理 頁 次 :3

4 四 資 料 庫 系 統 模 型 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 模 型 是 系 統 或 狀 態 之 完 整 抽 象 概 念 依 據 資 料 庫 系 統 的 演 進 和 結 構 的 差 異, 主 要 分 為 檔 案 式 階 層 式 網 路 式 和 關 聯 式 資 料 庫 模 型 1. 階 層 式 (Hierarchical Model)- 其 資 料 結 構 採 用 樹 狀 架 構 依 據 資 料 的 不 同 類 別, 將 資 料 分 門 別 類, 儲 存 在 不 同 階 層 之 下 階 層 式 資 料 庫 的 優 點 是 結 構 類 似 於 金 字 塔, 不 同 層 次 間 資 料 關 連 性 直 接 且 簡 單 ; 缺 點 則 是 因 為 資 料 以 縱 向 發 展, 橫 向 關 聯 難 以 建 立, 資 料 容 易 重 複 出 現, 造 成 管 理 不 便 付 款 方 式 Cash Visa Check MasterCard 客 戶 Gerardo Strom Edward Islas Lynda Tam Gerardo Strom Gerardo Strom Edward Islas Lynda Tam 商 品 Fan belt Motor Oil Brake light Fan belt Brake light Muffler Socket wrench set Muffler Motor Oil 2. 網 路 式 (Network Model)- 將 每 一 資 料 視 為 一 節 點 (node), 而 節 點 與 節 點 間 可 以 建 立 關 聯, 相 互 連 接 而 取 得 資 料 優 點 是 避 免 了 資 料 的 重 複 性 ; 缺 點 是 關 聯 性 較 複 雜, 尤 其 是 資 料 庫 變 得 越 來 越 大 的 時 候, 關 聯 性 的 維 護 會 變 得 非 常 麻 煩 付 款 方 式 Cash Visa Check MasterCard 客 戶 Gerardo Strom Edward Islas Lynda Tam 商 品 Socket wrench set Fan belt Motor Oil Muffler Brake light 3. 關 連 式 (Relational Model) 關 聯 是 資 料 庫 是 以 二 維 陣 列 來 儲 存 資 料, 依 照 行 與 列 的 關 係 形 成 的 記 錄 的 集 合 稱 之 為 資 料 表 格 (Table) 關 聯 是 資 料 庫 最 大 的 特 點 在 於 將 每 個 具 有 相 同 屬 性 頁 次 :4

5 的 資 料 獨 立 地 儲 存 在 一 個 表 格 中 對 任 何 一 個 表 格 而 言, 使 用 者 可 以 新 增 刪 除 修 改 資 料 表 中 的 任 何 資 料 它 解 決 了 階 層 式 資 料 庫 的 橫 向 關 聯 不 足 的 缺 點, 也 避 免 了 網 狀 式 資 料 庫 過 於 複 雜 的 問 題, 所 以 目 前 大 部 分 的 資 料 庫 都 是 採 用 關 聯 式 資 料 庫 系 統 的 模 型 頁 次 :5

6 五 關 聯 式 資 料 模 型 的 資 料 結 構 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 關 聯 式 名 詞 關 聯 表 (Relation) 屬 性 (Attribute) 值 組 (Tuple) 實 體 (Entity) 資 料 庫 名 詞 表 格 (Table) 欄 位 (Field) 欄 (Column) 記 錄 (Record) 列 (Row) 概 念 模 型 的 基 本 概 念 包 括 : 1. 實 體 (Entity) 客 觀 存 在 並 可 相 區 隔 的 事 務 稱 之 為 實 體 實 體 可 以 是 個 具 體 的 人 事 物, 也 可 以 是 抽 象 的 概 念 或 關 係, 例 如 一 位 職 員 一 位 學 生 一 個 部 門 一 門 課 學 生 的 一 次 選 課 部 門 的 一 次 訂 貨 老 師 與 系 所 的 工 作 關 聯 等 2. 屬 性 (Attribute) 實 體 所 具 有 的 某 一 個 特 性 稱 之 為 屬 性 一 個 實 體 可 以 包 含 若 干 個 屬 性, 例 如 學 生 實 體 可 以 由 學 號 姓 名 性 別 生 日 系 所 入 學 時 間 等 屬 性 組 成 3. 鍵 (Key) 唯 一 標 示 實 體 的 屬 性 集 稱 之 為 鍵 例 如 學 號 是 學 生 實 體 的 鍵, 學 號 可 以 代 表 特 定 的 某 一 位 學 生 4. 值 域 (Domain) 屬 性 取 值 的 範 圍 稱 為 該 屬 性 的 值 域 例 如 學 號 屬 性 的 值 域 為 10 位 數 的 正 整 數, 中 文 姓 名 屬 性 的 值 域 為 5 位 數 以 內 的 字 串 等, 成 績 屬 性 的 值 域 為 介 於 0 至 100 的 正 整 數 5. 關 係 (Relationship) 在 現 實 世 界, 事 物 內 部 間 或 事 物 與 事 物 之 間 常 存 在 有 關 係, 也 就 是 彼 此 間 的 關 聯 性, 這 些 關 係 再 資 訊 世 界 中 反 應 為 實 體 內 部 的 關 係 或 實 體 與 實 體 間 的 關 係 實 體 內 部 的 關 係 通 常 是 指 組 成 實 體 之 各 屬 性 的 關 係 ; 實 體 之 間 的 關 係 則 是 指 不 圖 實 體 之 間 的 關 聯 性 而 實 體 與 實 體 之 間 的 關 聯 性 可 以 分 為 下 列 三 種 : (1) 一 對 一 (1:1) 如 果 對 於 實 體 集 A 中 的 每 一 個 實 體, 在 實 體 集 B 中 至 多 有 一 個 實 體 與 之 相 關, 反 之 亦 然, 則 稱 實 體 集 A 與 實 體 集 B 具 有 一 對 一 關 係 例 如 一 個 班 級 只 有 一 位 導 師, 一 個 班 級 只 有 一 位 班 長, 則 導 師 與 班 級 之 關 係 具 有 一 對 一 關 係, 班 長 與 班 級 之 關 係 一 具 有 一 對 一 關 係 (2) 一 對 多 (1:n) 如 果 對 於 實 體 集 A 中 的 每 一 個 實 體, 在 實 體 集 B 中 至 有 n (n 0) 個 實 體 與 之 相 關, 反 之, 對 於 實 體 集 B 中 的 每 一 實 體, 在 實 體 集 A 中 最 多 只 有 一 個 實 體 與 之 相 關, 則 稱 實 體 集 A 頁 次 :6

7 與 實 體 集 B 具 有 一 對 多 關 係 例 如 一 個 班 級 有 多 位 學 生, 而 每 一 位 學 生 則 都 屬 於 某 一 班 級, 則 班 級 與 學 生 之 間 具 有 一 對 多 關 係 (3) 多 對 多 (m:n) 如 果 對 於 實 體 集 A 中 的 每 一 個 實 體, 在 實 體 集 B 中 至 有 n (n 0) 個 實 體 與 之 相 關, 反 之, 對 於 實 體 集 B 中 的 每 一 實 體, 在 實 體 集 A 中 亦 有 m (m 0) 個 實 體 與 之 相 關, 則 稱 實 體 集 A 與 實 體 集 B 具 有 多 對 多 關 係 一 門 課 程 有 多 位 同 學 選 修, 而 一 位 同 學 可 以 同 時 選 修 多 門 課 程, 則 課 程 與 學 生 之 間 具 有 多 對 多 關 係 在 關 聯 式 資 料 模 型 中, 資 料 結 構 是 以 表 格 式 的 方 式 來 組 織 資 料, 稱 之 為 關 聯 表 (Relation) 一 個 關 聯 表 有 一 個 關 聯 表 名 稱 (Relation name) 另 外, 關 聯 表 中 會 含 有 一 個 以 上 的 欄 位, 我 們 稱 這 些 欄 位 為 屬 性, 其 中 必 須 要 指 定 某 個 屬 性 子 集 (Attribute Subset) 為 主 鍵 (Primary key), 使 得 每 一 筆 記 錄 均 可 利 用 其 主 鍵 值 和 其 他 記 錄 來 區 別 之 將 一 個 關 聯 表 的 所 有 屬 性 集 合 起 來 稱 之 為 該 關 聯 表 的 屬 性 集 (Attribute set) 其 中 每 一 個 屬 性 都 會 具 有 屬 性 名 稱 (Attribute name) 與 資 料 類 型 (Data type), 每 個 資 料 型 態 都 會 有 其 所 屬 的 值 域 (Domain), 以 定 義 其 合 法 的 資 料 值 主 鍵 值 域 值 域 屬 性 名 稱 值 組 關 聯 表 屬 性 值 一 個 關 聯 表 的 屬 性 數 目 稱 為 該 關 聯 表 的 維 度 (Degree), 也 就 是 該 關 聯 表 之 屬 性 集 的 大 小 由 於 屬 性 集 是 一 個 集 合, 所 以 按 照 集 合 的 定 義, 我 們 可 以 知 道 :1. 在 一 個 關 聯 表 中 的 屬 性 名 稱 不 可 以 有 重 複 的 情 況 發 生 有 了 關 聯 表 綱 要 (Schema) 後, 我 們 便 可 將 資 料 存 入 關 聯 表 中, 存 入 的 單 位 是 一 筆 一 筆 的 記 錄 (Records), 而 一 筆 記 錄 是 由 許 多 屬 性 值 所 組 成 的 集 合, 在 關 聯 式 資 料 模 型 裡 稱 之 為 值 組 (Tuple) 所 以 一 個 關 聯 表 事 實 上 就 是 一 個 由 許 多 值 組 所 組 成 的 集 合, 而 關 聯 表 中 所 含 值 組 的 數 目 稱 之 為 該 關 聯 表 的 數 集 (Cardinality) 頁 次 :7

8 關 聯 表 的 特 性 : 2. 不 含 重 複 的 值 組 3. 值 組 之 間 是 沒 有 順 序 的 4. 屬 性 之 間 是 沒 有 順 序 的 5. 所 有 屬 性 值 都 是 單 元 值 (Atomic value), 不 可 以 是 一 個 集 合 頁 次 :8

9 六 關 連 式 資 料 庫 系 統 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 1. 表 格 : 關 連 式 資 料 庫 系 統 最 基 本 的 觀 念, 便 是 表 格 (Table 或 稱 Relation,file) 它 以 表 格 作 為 儲 存 單 位, 所 有 儲 存 在 資 料 庫 中 的 資 料, 都 以 表 格 形 式 處 理 一 個 表 格 是 儲 存 資 料 最 自 然 的 方 式, 表 格 由 行 (column 或 稱 field,attribute) 與 列 (row 或 稱 tuple,record) 所 組 成 每 一 行 儲 存 相 同 性 質 的 資 料, 每 一 列 則 包 含 許 多 不 同 性 質 的 資 料 項 目 每 一 列 又 稱 為 一 個 記 錄 (record), 每 一 行 可 視 為 記 錄 內 的 一 個 欄 位 (field) 2. 紀 錄 (Record) 欄 位 (Field) 和 內 容 值 (Value): 每 一 個 表 格 都 是 由 記 錄 和 欄 位 所 組 成 一 筆 記 錄 代 表 一 個 表 格 內 某 一 個 實 體 的 所 有 資 訊 ; 而 一 個 欄 位 則 是 儲 存 在 一 個 表 格 內 的 一 段 個 別 資 訊 3. 列 (Row) 和 行 (Column): 表 格 內 所 有 的 記 錄 和 欄 位 都 參 照 到 列 和 行, 如 上 圖 所 示, 關 聯 式 資 料 庫 的 表 格 通 常 都 是 以 格 狀 方 式 呈 現, 橫 向 的 列 代 表 表 格 的 記 錄, 而 縱 向 的 行 則 是 代 表 欄 位 而 行 與 列 交 叉 的 欄 位 則 稱 為 資 料 項 目 (Cell), 例 如 要 取 得 第 五 筆 記 錄 的 分 機 號 碼, 就 是 取 得 第 五 列 與 PhoneExt 行 相 交 的 欄 位 值, 也 就 是 該 筆 記 錄 之 PhoneExt 欄 位 的 資 料 項 目 內 容 4. 虛 值 (Null value): 對 每 一 筆 記 錄 而 言, 其 每 一 個 欄 位 均 應 存 有 一 實 際 的 資 料, 但 是 當 該 欄 位 沒 有 資 料 存 在 時 會 發 生 什 麼 情 形? 例 如 某 一 客 戶 表 格 專 用 來 存 放 客 戶 相 關 的 資 料, 其 中 有 一 欄 位 是 用 來 存 放 每 一 個 客 戶 的 傳 真 號 碼 但 是 如 果 該 客 戶 並 沒 有 或 不 知 道 傳 真 號 碼 時, 並 須 有 一 個 方 式 來 表 明 這 種 情 況 因 為 沒 有 資 料 和 空 資 料 是 不 一 樣 的, 例 如 一 個 字 串 (String) 內 容 是 空 的, 仍 表 示 有 此 一 字 串, 只 是 其 內 容 長 度 為 零 ; 而 沒 有 字 串 則 表 示 完 全 不 存 在 此 一 字 串 虛 值 也 就 是 代 表 完 全 不 存 在 的 意 思, 在 SQL Server 中 當 一 個 欄 位 的 內 容 是 Null 時, 就 表 示 該 欄 位 的 內 容 完 全 不 存 在, 如 果 您 常 式 對 一 個 有 Null 的 欄 位 做 計 算, 其 結 果 一 定 是 Null 頁 次 :9

10 5. 欄 位 屬 性 (Field properity): 表 格 中 每 一 個 欄 位 的 型 態 並 非 都 一 樣, 例 如 電 話 號 碼 和 生 日 欄 位 的 格 式 一 定 不 同, 因 此 資 料 庫 系 統 必 須 能 處 理 各 種 不 同 的 資 料 型 態, 在 SQL Server 裡 便 是 透 過 欄 位 屬 性 來 設 定 各 欄 位 處 理 的 資 料 型 態 種 類 如 下 圖, 顯 示 某 一 個 表 格 的 綱 要 (Schema) 資 訊, 顯 示 此 一 表 格 各 欄 位 所 能 儲 存 的 資 料 型 態 頁 次 :10

11 6. 視 界 (View): 雖 然 在 關 聯 式 資 料 庫 中 資 料 均 是 儲 存 在 表 格 內, 但 是 通 常 表 格 並 不 是 以 使 用 者 習 慣 的 次 序 來 呈 現, 例 如 資 料 庫 中 有 客 戶 檔 職 員 檔 訂 單 檔 和 訂 單 細 節 檔 等 等, 除 非 每 次 要 看 所 有 的 客 戶 資 料 或 是 訂 單 資 料, 否 則 類 似 下 列 其 情 形, 使 用 者 並 不 容 易 直 接 由 表 格 獲 知 所 需 的 資 訊 : (1) 要 查 看 各 個 訂 單 的 總 價 (2) 查 看 客 戶 資 料 要 依 據 各 客 戶 所 屬 國 家 分 別 來 檢 視 (3) 只 想 查 看 當 月 生 日 的 員 工 資 料 為 了 達 成 這 些 特 殊 的 需 求, 資 料 庫 提 供 了 一 個 工 具 稱 之 為 視 界 或 稱 概 觀 View 是 一 個 虛 擬 表 格, 是 從 實 際 的 表 格 中 透 過 查 詢 語 言 的 執 行 而 呈 現 出 來 的 虛 擬 表 格, 實 際 上 並 非 實 值 存 在 的 表 格 View 的 定 義 是 以 SELECT 敘 述 為 基 礎, 為 特 定 資 料 的 集 合 藉 由 View 來 存 取 資 料, 可 以 簡 化 查 詢 步 驟, 並 可 做 某 種 程 度 的 讀 取 權 限 控 制 頁 次 :11

12 七 鍵 值 類 型 1. 候 選 鍵 (Candidate Key): 主 鍵 是 一 個 唯 一 的 識 別 值 (Unique Identifier), 它 是 由 屬 性 集 的 子 集 所 構 成 其 實 在 一 個 關 聯 表 中 符 合 此 條 件 的 屬 性 子 集 可 能 會 有 好 幾 個, 這 些 屬 性 子 集 我 們 稱 之 為 候 選 鍵 而 主 鍵 便 是 由 一 堆 候 選 鍵 中 所 選 出 來 的 要 成 為 候 選 鍵 的 屬 性 子 集 必 須 要 具 備 下 列 兩 個 條 件 : (1) 唯 一 識 別 性 : 在 一 個 關 聯 表 中 絕 不 會 有 兩 個 值 組 的 屬 性 子 集 具 有 相 同 的 值 也 就 是 說 關 聯 表 中 各 值 組 的 屬 性 子 集 必 須 能 夠 唯 一 識 別 該 值 組 (2) 非 多 餘 性 (nonredundancy): 組 成 鍵 值 的 屬 性 必 須 全 部 存 在 才 能 達 成 唯 一 識 別 的 特 性 ( 最 小 性 : 一 個 屬 性 子 集 是 滿 足 唯 一 性 的 最 小 屬 性 子 集 合 ) 如 果 我 們 有 多 個 候 選 鍵, 在 選 擇 主 鍵 時 可 以 參 考 下 列 四 個 原 則 : (1) 選 擇 永 遠 不 會 變 更 其 值 的 屬 性 (2) 確 保 不 會 是 虛 值 的 屬 性 (3) 不 要 用 人 工 才 能 解 讀 的 編 號 鍵 值 例 如 假 設 某 公 司 旗 下 有 多 個 生 產 廠, 產 品 編 號 ML10045 中 的 ML 代 表 某 一 生 產 廠 代 碼, 但 該 生 產 廠 代 碼 必 須 透 過 另 一 代 碼 檔 轉 換 成 說 明 才 可 知 該 工 廠 名 稱, 若 將 來 該 代 碼 檔 修 改 或 資 料 異 動, 則 可 能 造 成 產 品 編 號 解 譯 (parsing) 錯 誤 (4) 儘 量 以 單 一 的 屬 性 來 代 替 整 筆 值 組 如 果 都 沒 有 適 合 的 欄 位 集, 可 以 考 慮 新 增 一 欄 位, 儲 存 唯 一 性 的 流 水 號 2. 替 代 鍵 (Alternate Key) 由 數 個 候 選 鍵 中 選 擇 其 中 一 個 作 為 主 鍵 時, 則 其 他 剩 下 來 的 候 選 鍵 便 稱 為 替 代 鍵 3. 主 鍵 (Primary Key) 主 鍵 是 由 一 組 欄 位 所 組 成, 用 來 區 別 表 格 中 的 每 一 筆 記 錄 凡 是 主 鍵 的 欄 位 就 不 能 是 虛 值 (NULL), 因 此 凡 是 宣 告 為 Primary Key 的 欄 位, 系 統 會 自 動 為 其 建 立 NOT NULL 的 限 制 ; 並 自 動 建 立 唯 一 索 引 (Unique Index) 宣 告 為 LONG 和 LONG RAW 資 料 型 態 的 欄 位 不 能 做 為 主 鍵, 4. 外 來 鍵 (Foreign Key) 資 料 相 互 之 間 一 致 性 限 制 功 能, 可 以 確 保 資 料 庫 資 料 的 一 致 資 料 相 互 間 一 致 性 限 制, 是 透 過 頁 次 :12

13 主 鍵 與 外 來 鍵 的 結 合 來 達 成 關 聯 式 表 格 間 的 關 係 必 須 藉 由 外 來 鍵 來 建 立, 因 為 對 某 一 表 格 的 外 來 鍵 而 言, 其 詳 細 的 資 料 是 儲 存 在 另 外 一 個 表 格 之 中, 因 此 稱 為 外 來 鍵 (Foreign key) 書 目 資 料 表 作 者 資 料 表 (Primary key) (Foreign key) (Foreign key) * 書 目 編 號 題 名 作 者 編 號 分 館 代 碼 : * 作 者 代 碼 作 者 姓 名 稱 謂 : (Primary key) 館 別 資 料 表 * 分 館 代 碼 分 館 名 稱 地 址 : (Primary key) 書 籍 編 號 與 作 者 編 號 欄 位 分 別 是 書 目 資 料 表 與 作 者 資 料 表 的 Primary key 為 了 建 立 兩 個 表 格 之 間 的 關 聯 性, 則 在 書 目 資 料 表 需 要 有 一 Foreign Key 對 應 到 作 者 資 料 表 的 Primary Key, 這 種 機 制 稱 之 為 參 考 完 整 性 (Referential Integrity) 外 來 鍵 的 值 必 須 來 自 於 其 所 參 考 到 的 表 格 當 自 行 輸 入 不 是 NULL 的 值, 並 且 該 值 不 存 在 其 所 參 考 表 格 的 記 錄 中 時, 系 統 會 拒 絕 該 資 料 的 輸 入, 如 此 可 避 免 打 斷 兩 個 表 格 之 間 的 關 聯 性 頁 次 :13

14 八 資 料 庫 系 統 處 理 架 構 之 演 進 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 1. 第 一 階 段 : 集 中 式 處 理 架 構 2. 第 二 階 段 : 主 / 從 式 架 構 3. 第 三 階 段 : 三 層 式 處 理 架 構 4. 第 四 階 段 : 同 質 性 分 散 式 處 理 架 構 5. 第 五 階 段 : 異 質 性 分 散 式 處 理 架 構 6.. 第 六 階 段 : 行 動 計 算 處 理 九 關 聯 式 資 料 庫 廠 商 1.Oracle 由 ORACLE 公 司 所 發 展, 在 台 灣 稱 之 為 美 商 甲 骨 文 公 司 ( 2.Informix-OnLine Informix SE(Standard Engine) 由 Informix Software 公 司 所 發 展, 在 台 灣 稱 為 英 孚 美 公 司 ( 現 已 由 IBM 所 併 購 3.Sybase SQL Server 由 Sybase 公 司 所 發 展, 在 台 灣 稱 為 賽 貝 斯 公 司 此 產 品 目 前 改 名 為 Sybase Adaptive Server ( 4.Ingres 最 早 由 加 州 柏 克 萊 校 區 的 M. Stonebraker 教 授 所 發 展, 而 後 成 為 資 料 庫 產 品, 現 在 是 Computer Associates(CA, 在 台 灣 稱 為 組 合 國 際 ) 的 一 個 部 門 ( 5.Microsoft SQL Server 由 Microsoft 公 司 所 發 展, 最 早 是 和 Sybase 合 作 發 展, 目 前 則 是 各 自 獨 立 發 展 ( 6.DB2 為 IBM 公 司 所 發 展 ( 7.Progress 由 Progress Software Corp. 發 展 ( 8.Gupta SQL Base 由 Gupta Corp. 發 展, 現 已 改 名 為 Centura SQL Base ( 9.DBMaker 是 由 國 內 凌 群 電 腦 公 司 所 發 展 ( 除 了 商 業 版 本 之 外, 國 際 間 亦 有 許 多 開 放 原 始 碼 的 非 商 業 使 用 免 費 資 料 庫 系 統, 如 : 1. PostgreSQL 最 初 由 加 州 大 學 伯 克 萊 分 校 計 算 機 科 學 系 開 發, 倡 導 了 很 多 物 件 導 向 的 觀 念 ( 2. MySQL TCX 公 司 發 展 的 資 料 庫 系 統 ( 後 被 sun( 昇 陽 ) 公 司 併 購 之 後 sun 被 Oracle 公 司 併 購, 現 MySQL 歸 屬 於 Oracle 公 司 ( 註 :MySQL 的 官 方 發 音 是 My Ess Que Ell, 不 是 MY-SEQUEL ) 頁 次 :14

15 十 什 麼 是 SQL 1.SQL(Structured Query Language) 是 在 關 連 式 資 料 庫 中, 定 義 和 處 理 資 料 的 標 準 語 言, 也 是 一 個 在 商 業 間, 應 用 最 廣 泛 的 資 料 庫 語 言 並 非 要 SQL 才 能 處 理 關 連 式 資 料 庫, 而 是 SQL 是 大 多 數 關 連 式 資 料 庫 的 標 準 介 面 2. 關 連 式 資 料 庫 必 須 藉 由 SQL 的 功 能, 支 援 執 行 資 料 的 定 義 (Definition) 處 理 (Manipulation) 和 控 制 (Control) 3.SQL 提 供 程 式 和 使 用 者 用 於 存 取 資 料 庫 系 統 內 資 料 的 標 準 命 令 集 十 一 SQL 的 起 源 1.SQL 最 早 起 始 於 1970 年, 由 IBM 在 San Jose, California 研 究 實 驗 室 的 E. F. Codd 發 表 將 資 料 組 成 表 格 的 資 料 關 連 模 型 的 查 詢 代 數 與 應 用 原 則 (Codd's Relational Algebra) 年, 同 一 實 驗 室 中 的 D. D. Chamberlin 和 R. F. Boyce 對 Codd's Relational Algebra 制 定 了 一 套 規 範 語 言 -SEQUEL(Structured English QUEry Language) 3. 兩 年 後,D. D. Chamberlin 將 發 展 的 新 版 本 SEQUEL/2 建 立 在 IBM 的 資 料 庫 管 理 系 統 System R 上 1980 年 時, 改 名 為 SQL 自 此, 隨 著 關 連 式 資 料 庫 管 理 系 統 的 發 展,SQL 廣 泛 的 被 應 用 在 各 種 資 料 庫 管 理 系 統 上 年 IBM 發 表 SQL/DS 後, 關 聯 式 資 料 庫 領 域 可 以 說 是 百 家 爭 鳴, 首 先 是 Relational Software 公 司 ( 後 來 更 名 為 Oracle) 發 表 第 一 個 關 聯 式 資 料 庫 管 理 系 統 (RDBMS), 並 結 合 SQL 成 為 第 一 代 上 市 發 行 RDBMS 的 主 流 十 二 SQL 標 準 1. 為 了 達 到 資 料 庫 定 義 與 應 用 模 組, 在 各 種 不 同 的 關 連 式 資 料 庫 管 理 系 統 間 的 可 攜 性, 以 及 提 供 關 連 式 資 料 庫 管 理 系 統, 在 發 展 上 的 共 通 準 則 由 ANSI 的 X3H2 小 組 負 責 訂 定 了 SQL 標 準 (ANSI SQL), 後 來 也 被 ISO 納 入 為 國 際 上 所 認 同 的 標 準 2. 目 前 最 新 SQL 標 準 為 SQL99 (ANSI X ) 3. 大 部 分 關 連 式 資 料 庫 管 理 系 統 遵 循 ANSI SQL 89 頁 次 :15

16 十 三 SQL 功 能 SQL 指 令 雖 稱 為 查 詢 語 言, 卻 涵 蓋 了 下 列 資 料 庫 語 言 基 本 的 功 能 : 1. 建 立 資 料 庫 及 其 表 格 欄 位 2. 增 加 刪 除 修 改 資 料 庫 的 資 料 內 容 3. 能 執 行 各 種 查 詢 (query) 資 料 的 動 作, 並 組 合 一 組 資 料 成 為 有 意 義 的 資 訊 十 四 SQL 指 令 集 SQL 指 令 包 含 許 多 處 理 資 料 庫 的 命 令, 這 些 指 令 集 依 功 能 區 分 為 三 部 份 : 1. 資 料 定 義 語 言 (Data Definition Language, 簡 稱 DDL): 用 定 義 資 料 庫 的 綱 要, 如 表 格 名 稱 所 含 有 的 欄 位 與 資 料 型 態 整 合 限 制 條 件 等 等 2. 資 料 處 理 語 言 (Data Manipulation Language, 簡 稱 DML): 用 來 處 理 資 料 庫 中 的 資 料, 包 括 資 料 的 新 增 (INSERT) 刪 除 (DELETE) 修 改 (UPDATE) 與 選 擇 (SELECT) 等 運 算 3. 交 易 控 制 語 言 (Transaction Control Language, 簡 稱 TCL 或 DCL): 用 來 處 理 資 料 庫 的 使 用 權 限 與 安 全 管 制 功 能 可 以 控 制 使 用 者 是 否 可 以 合 法 使 用 資 料 庫 是 否 可 以 合 法 對 資 料 庫 的 表 格 執 行 新 增 刪 除 新 增 維 護 或 選 擇 等 動 作 是 否 可 以 對 資 料 庫 做 備 份 等 等 的 管 制 有 些 人 將 SQL 戲 稱 為 Scarcely Qualifying as a Language ( 還 不 夠 格 稱 為 程 式 語 言 ) 這 麼 說 其 實 也 有 道 理,SQL 實 際 上 並 不 是 程 式 語 言, 而 可 以 視 為 一 種 資 料 庫 程 式 設 計 函 式 庫 就 像 一 般 我 們 都 稱 呼 SQL 的 指 令 為 查 詢 指 令, 但 這 也 並 不 表 示 SQL 中 所 有 指 令 的 內 容 都 在 對 資 料 庫 做 查 詢 的 動 作 頁 次 :16

17 十 五 欄 位 屬 性 ( 資 料 型 態 ) 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 建 立 SQL 的 表 格 時, 必 須 宣 告 各 行 欄 位 的 資 料 型 態 SQL Server 基 本 的 欄 位 資 料 型 態 包 括 : 資 料 型 態 說 明 BINARY 儲 存 二 進 位 資 料 DATE&TIME 儲 存 日 期 時 間 資 料 FLOAT 和 REAL 儲 存 浮 點 資 料 MONEY 儲 存 幣 值 資 料 TIMESTAMP 表 格 易 動 標 籤 IMAGE 儲 存 圖 形 資 料 CHAR 儲 存 字 串 資 料 DECIMAL 儲 存 定 數 字 資 料 INT 儲 存 整 數 資 料 BIT 儲 存 邏 輯 資 料 (0/1) TEXT 儲 存 大 量 文 字 資 料 1. BINARY 型 態 (1) binary[(n)] 此 型 態 欄 位 用 來 儲 存 binary 資 料 n 是 宣 告 的 長 度, 以 位 元 組 為 單 位,n 必 須 介 於 1 到 8000 之 間 (2) varbinary[(n)] verbinary 型 態 同 binary, 但 具 備 變 動 長 度 的 特 性 2. CHAR 型 態 (1) char[(n)] char 型 態 的 欄 位 用 來 儲 存 字 元 資 料, 最 多 可 儲 存 8000 個 字 元 只 要 一 經 宣 告, 不 管 輸 入 的 資 料 長 度 為 何, 將 固 定 佔 用 n 個 位 元 組 的 儲 存 空 間 如 果 輸 入 字 串 長 度 小 於 n 時, 若 該 欄 位 不 允 許 null 值, 則 系 統 會 將 不 足 部 分 補 空 白 ; 若 該 欄 位 允 許 null 值, 則 不 足 部 分 不 補 空 白 若 輸 入 資 料 超 過 宣 告 的 長 度, 則 其 超 出 部 分 會 被 截 掉 (2) varchar[(n)] varchar 型 態 同 char 型 態, 不 過 它 是 具 有 變 動 長 度 的 特 性 n 是 此 型 態 儲 存 資 料 的 最 大 允 許 長 度,n 的 範 圍 可 以 為 1 到 8000 此 型 態 資 料 實 際 佔 用 的 儲 存 空 間 視 其 輸 入 資 料 長 度 而 定, 但 是 輸 入 資 料 中 的 後 置 空 白 (trailing blanks) 部 分 將 不 會 被 存 入, 所 以 也 不 列 入 佔 用 空 間 記 數 註 :SQL Server 的 欄 位 若 需 要 儲 存 為 unicode 字 碼, 必 須 宣 告 為 : nvarchar 或 nchar 型 態, 其 中 n 表 示 national 之 意 頁 次 :17

18 3. DATE&TIME 型 態 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 此 型 態 用 來 儲 存 日 期 - 時 間 資 料 顯 示 時 內 定 的 顯 示 格 式 為 MM DD yyyy hh:mm AM( 或 PM) (1) Datetime 此 型 別 的 欄 位 使 用 兩 個 4 bytes 的 整 數 儲 存 資 料, 其 中 4 個 位 元 組 存 放 從 西 元 1900 年 1 月 1 日 到 該 日 之 前 或 之 後 所 經 過 的 天 數, 另 外 4 個 位 元 組 則 儲 存 從 零 時 起 至 該 時 間 所 經 過 的 微 秒 數 (milliseconds) 若 輸 入 資 料 省 略 時 間 部 分, 系 統 將 以 12:00:00:000AM 作 為 時 間 內 定 值 (2) Smalldatetime 同 datetime 型 態, 但 儲 存 的 資 料 較 不 精 確, 此 型 態 只 佔 用 4 個 位 元 組 的 儲 存 空 間 其 中 兩 個 位 元 組 用 來 儲 存 日 期, 另 兩 個 位 元 組 用 來 儲 存 時 間, 故 此 型 別 允 許 儲 存 的 日 期 範 圍 為 西 元 1990 年 1 月 1 日 至 西 元 2079 年 6 月 6 日, 精 確 度 到 分 鐘 4. FLOAT 和 REAL 型 態 float 和 real 型 態 的 欄 位 是 用 來 儲 存 無 法 以 有 限 位 數 表 示 的 數 值 資 料, 例 如 無 窮 小 數 (1) float[(n)] n 可 從 1 到 53, 表 示 此 型 態 的 二 進 位 精 確 度 其 值 的 範 圍 為 -1.79E+308 到 1.79E+308 (2) real[(n)] 和 float 型 態 相 同 n 可 為 1 到 7, 因 此 最 多 可 以 有 7 位 精 確 度, 其 值 範 圍 為 -3.40E+38 到 3.40E MONEY 型 態 money 型 態 的 資 料 是 一 具 有 4 位 小 數 的 decimal 型 態 數 值 輸 入 時 必 須 在 數 值 前 加 入 幣 別 符 號, 如 果 是 負 值 則 幣 別 符 號 後 面 加 - 符 號, 不 需 要 每 三 個 字 加 逗 號, 但 在 列 印 時 會 自 動 幫 你 加 印 逗 號 此 型 態 的 資 料 最 多 只 能 有 四 位 小 數 位 數, 如 果 需 要 更 多 小 數 位 數, 可 改 使 用 decimal 型 態 6. TIMESTAMP 型 態 雖 然 命 名 為 timestamp, 但 此 一 型 態 完 全 和 日 期 時 間 無 任 何 關 聯 它 相 當 於 binary(8) 或 varbinary(8) 型 別 但 是 它 有 一 重 要 的 特 性, 就 是 在 含 有 此 一 型 態 欄 位 的 row 每 次 被 UPDATE 或 INSERT 時, 此 欄 位 值 即 會 被 異 動, 而 且 在 同 一 資 料 庫 內 該 欄 位 值 是 唯 一 的 每 一 資 料 表 格 內 僅 能 有 一 個 timestamp 型 態 的 欄 位 而 且 必 須 以 timestamp 命 名 7. IMAGE 型 態 image 型 態 欄 位 用 來 儲 存 大 量 的 二 位 元 資 料 (binary data), 通 常 用 來 儲 存 圖 形 檔 此 一 型 態 的 欄 位 理 論 上 最 大 可 儲 存 2,147,483,647 個 位 元 組 的 資 料, 但 實 際 上 必 須 視 硬 碟 大 小 而 定 頁 次 :18

19 8. DECIMAL 型 態 對 於 SQLServer 而 言,decimal 和 numeric 視 為 相 同 的 型 態, 用 來 儲 存 具 有 小 數 點 而 且 數 值 確 定 的 數 值 不 像 float 和 real 是 用 來 儲 存 近 似 值 宣 告 的 方 式 為 : decimal[(p[,s])] numeric[(p[,s])] 對 SQL Server 而 言,decimal 和 numeric 視 為 相 同 的 資 料 型 態, 它 們 可 用 來 儲 存 具 有 小 數 點 的 數 值 不 像 float 和 real 是 用 來 儲 存 近 視 值,decimal 和 numeric 試 用 來 儲 存 確 定 的 值 s 表 示 小 數 位 數,p 表 示 精 確 度 (precision) 例 如 decimal(10,3) 表 示 共 有 七 位 整 數 三 位 小 數, 此 欄 位 精 確 度 為 十 位 若 未 指 定 時, 系 統 預 設 為 18 位 精 確 度, 內 定 小 數 位 數 為 0 9. INT 型 態 int 整 數 型 態 可 儲 存 2,147,483,648 到 2,147,483,647 間 的 整 數 smallint 型 態 可 儲 存 到 間 的 整 數 tinyint 型 態 可 儲 存 間 的 整 數 10. BIT 型 態 bit 型 態 的 欄 位 佔 用 一 個 位 元 組 的 空 間, 其 值 為 0 或 1 或 null 如 果 輸 入 異 於 0 或 1 的 值, 都 會 被 視 為 TEXT 型 態 text 型 態 欄 位 用 來 儲 存 任 何 文 字 資 料, 通 常 用 來 儲 存 一 些 memo 文 件 等 資 料 理 論 上 此 一 型 態 的 欄 位 最 大 可 儲 存 2,147,483,647 個 位 元 組 的 資 料, 但 實 際 上 必 須 視 硬 碟 大 小 而 定 頁 次 :19

20 十 六 SQL 命 令 1. 資 料 定 義 語 言 (DDL) ALTER CREATE DROP 更 改 建 立 刪 除 資 料 庫 的 表 格 (Table) 是 由 列 (row) 和 行 (column) 所 組 成 的 二 為 矩 陣, 可 以 使 用 CREATE TABLE 來 產 生 Table 一 旦 Table 產 生 後, 就 可 以 開 始 填 入 資 料 產 生 新 的 表 格 如 果 覺 得 有 不 妥 之 處, 想 改 變 Table 結 構 時, 可 使 用 ALTER TABLE 指 令 當 Table 沒 有 任 何 利 用 價 值 時, 可 使 用 DROP TABLE 將 它 從 資 料 庫 中 完 全 刪 除 掉 DDL 指 令 練 習 : (1) 建 立 表 格 CREATE TABLE ORD (ORDER_NUMBER INTEGER NOT NULL, CLIENT_NAME VARCHAR(10), SALES VARCHAR(10), ORDER_DATE DATETIME) (2) 增 加 新 的 欄 位 ALTER TABLE ORD ADD DESCRIPTION VARCHAR(20) DEFAULT 'NONE' ALTER TABLE ORD ADD TEMP VARCHAR(20) (3) 改 變 欄 位 的 型 態 ( 相 同 資 料 型 態, 但 長 度 增 加 ) ALTER TABLE ORD ALTER COLUMN CLIENT_NAME VARCHAR(30) (4) 刪 除 欄 位 ALTER TABLE ORD DROP COLUMN TEMP (5) 建 立 一 個 視 界 (VIEW) CREATE VIEW CODE_CITY AS SELECT CODE, DESCRIPTION FROM SYS_CODE WHERE CODE_TYPE= CITY ; (6) 刪 除 一 個 表 格 DROP TABLE ORD; (7) 刪 除 一 個 視 界 DROP VIEW CODE_CITY; 頁 次 :20

21 2. 資 料 處 理 語 言 (DML) 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) DELETE INSERT SELECT UPDATE 刪 除 新 增 選 擇 修 改 (1) 查 詢 功 能 簡 介 : SELECT 欄 位 項 目 FROM table 名 稱 [WHERE 查 詢 條 件 ] [GROUP BY 分 類 欄 位 項 目 ] [HAVING 查 詢 條 件 ] [ORDER BY 排 序 欄 位 項 目 ] 例 : 列 出 表 格 CUSTOMER 所 有 內 容 SELECT * FROM CUSTOMER; 例 : 列 出 表 格 CUSTOMER 中, 地 址 在 台 北 市 的 客 戶 姓 名 SELECT NAME FROM CUSTOMER WHERE CITY= 台 北 市 ; (2) WHERE 運 算 子 : WHERE 子 句 設 定 查 詢 的 條 件, 取 出 特 定 的 資 料 GROUP BY 子 句 是 從 WHERE 所 選 出 的 資 料 從 新 組 合, 這 些 組 合 是 根 據 GROUP BY 子 句 所 指 定 的 欄 位,HAVING 是 隸 屬 在 GROUP BY 子 句 內, 作 用 與 WHERE 類 似, 但 它 是 過 濾 由 GROUP BY 中 所 選 出 的 資 料 當 結 合 兩 個 表 格 作 為 複 合 查 詢 時 ( 稱 為 JOIN), 且 有 共 同 的 KEY 時,WHERE 條 件 必 須 加 以 限 定 各 表 格 的 KEY 需 相 等, 否 則 將 有 相 乘 的 結 果 產 生 CUSTOMER CUSTOMER_ID NAME CITY... INVOICE INVOICE_ID CUSTOMER_ID SALE_DATE... SELECT NAME,INVOICE_ID,SALE_DATE FROM CUSTOMER,INVOICE WHERE CUSTOMER.CUSTOMER_ID= INVOICE.CUSTOMER_ID; 頁 次 :21

22 (3) JOIN 使 用 別 名 的 技 巧 : 為 了 避 免 冗 長 的 table 名 稱, 我 們 可 以 定 義 table 的 別 名 (Alias), 這 table 的 別 名 是 使 用 較 短 名 稱 取 代 原 table 名 稱 例 如 : SELECT BRN, B.NAME, AUTHOR, P.* FROM BOOK B, PUBLISHER P WHERE B.PUBLISHER=P.PID 這 例 子 中 使 用 B 代 替 BOOK,P 代 替 PUBLISHER, 這 些 別 名 只 在 該 查 詢 命 令 內 有 效 (4) 虛 值 Null 如 果 一 列 的 某 行 缺 少 值, 就 說 該 行 是 空 值 (Null), 或 者 說 包 含 一 個 空 值 虛 值 可 出 現 在 任 何 型 態 的 行 上 要 測 試 一 個 虛 值, 只 能 使 用 比 較 操 作 IS NULL 和 IS NOT NULL 例 :SELECT * FROM CUSTOMER WHERE TELPHONE IS NULL; DML 指 令 練 習 (1) 修 改 功 能 簡 介 : UPDATE table 名 稱 SET ( 欄 位 名 稱, 欄 位 名 稱...)=( 子 查 詢 ) [WHERE 查 詢 條 件 ] UPDATE table 名 稱 SET 欄 位 1= 值 1, 欄 位 2= 值 2... [WHERE 查 詢 條 件 ] 例 : 某 銀 行 剛 和 VISA 發 卡 公 司 簽 下 合 同, 同 意 提 供 給 該 VISA 公 司 的 客 戶 10% 的 貸 款, 你 可 使 用 下 列 命 令 來 更 新 : UPDATE TRANSMASTER SET NET_AMOUNT=NET_AMOUNT*0.9 WHERE CUSTID = (SELECT CUSTID FROM CUSTOMER WHERE COMPANY= SA ); (2) 新 增 功 能 簡 介 : INSERT INTO table 名 稱 [( 欄 位 名 稱, 欄 位 名 稱...)] VALUES ( 欄 位 內 容, 欄 位 內 容...) (3) 刪 除 功 能 簡 介 : DELETE FROM table 名 稱 [WHERE 查 詢 條 件 ] 頁 次 :22

23 3. 交 易 控 制 語 言 (TCL): 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) COMMIT ROLLBACK 確 認 交 易 放 棄 交 易 Transaction 是 指 每 次 所 交 付 執 行 的 一 連 串 的 動 作, 而 這 些 動 作 形 成 一 個 工 作 單 位, 且 每 次 的 transaction 必 須 是 完 全 執 行, 或 完 全 不 執 行, 而 不 允 許 只 執 行 部 分 本 質 上 每 一 個 SQL 指 令 敘 述 即 是 一 個 transaction 例 如 : Update course set score=score*1.5 此 指 令 敘 述, 會 修 改 course 表 格 中 所 有 資 料, 要 就 全 部 做 完, 要 就 全 不 作, 而 不 會 只 做 一 半 萬 一 做 到 一 半, 系 統 當 機 時 怎 麼 辦? 當 資 料 庫 系 統 重 新 啟 動 時, 假 若 資 料 庫 未 損 毀, 則 系 統 會 執 行 一 個 復 原 (recovery) 的 動 作, 回 復 先 前 的 狀 態 ( 註 : 此 復 原 動 作 需 視 不 同 資 料 庫 系 統 而 有 不 同 動 作 模 式 ) TCL 指 令 包 括 :COMMIT, ROLLBACK, 藉 由 BEGIN TRANSACTION 啟 動 交 易 的 控 制 (1)COMMIT 結 束 當 前 交 易 (Transaction), 使 當 前 交 易 所 執 行 的 全 部 修 改 永 久 化, 同 時 刪 除 交 易 所 設 定 的 全 部 保 留 點 (Savepoint), 釋 放 該 交 易 執 行 中 所 建 立 的 鎖 (Lock) (2)ROLLBACK 結 束 交 易, 撤 銷 當 前 交 易 中 的 全 部 改 變, 刪 除 該 交 易 中 所 設 定 的 全 部 保 留 點, 釋 放 該 交 易 執 行 中 所 建 立 的 鎖 語 法 : BEGIN TRANSACTION name COMMIT TRANSACTION name ROLLBACK TRANSACTION SAVE TRANSACTION name ( 可 Rollback 至 此 name 所 異 動 的 部 分 ) 範 例 1 COMMIT 下 列 範 例 包 含 兩 個 指 令 敘 述, 一 個 是 修 改 學 生 姓 名, 一 個 是 新 增 該 生 修 習 科 目 : begin transaction 頁 次 :23

24 update student set name=' 張 叄 ' where id=' ' insert into course (id,subject,score) values (' ','LM',79) commit transaction 由 於 兩 個 指 令 敘 述 包 含 在 begin transaction 和 commit transaction 之 中, 資 料 庫 系 統 會 保 證 這 兩 個 指 令 一 定 會 完 全 做 完, 而 不 會 只 做 一 辦, 以 避 免 導 致 學 生 資 料 與 選 課 資 料 不 一 致 情 形 範 例 2 ROLLBACK 若 將 上 述 範 例 的 commit 更 換 成 rollback: begin transaction update student set name=' 張 三 ' where id=' ' delete from course where id= and subject= LM rollback transaction 當 系 統 遇 到 rollback 指 令 時, 便 會 復 原 所 有 的 資 料 變 動, 回 到 begin transaction 前 的 狀 態 範 例 3 儲 存 點 置 : 交 易 控 制 包 含 儲 存 點 儲 存 點 可 以 使 資 料 在 復 原 時, 復 原 至 先 前 特 定 的 SQL 敘 述 執 行 位 begin tran save tran item1 update student set name=' 張 參 豐 ' where id=' ' insert into course (id,subject,score) values (' ','LM',79) save tran item2 insert student values (' ',' 孫 九 ',' 台 北 縣 新 店 市 ','05/26/1982','M') insert into course values (' ','LM','80') insert into course values (' ','CO','75') save tran item3 update course set score='85' where id=' ' and subject='co' delete course where id=' ' -- rollback tran item3 -- rollback tran item2 -- rollback tran item1 commit tran 頁 次 :24

25 十 七 SQL 運 算 子 1. 算 術 運 算 子 : 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 運 算 子 說 明 範 例 + - 單 元 運 算 子, 表 示 一 個 正 或 負 的 運 算 式 SELECT * FROM employee WHERE salary<0 * / 二 元 運 算 子, 為 乘 除 運 算 SELECT salary, salary*1.05, (salary*1.05)+comm from employee + - 二 元 運 算 子, 為 加 減 運 算 SELECT salary + comm FROM % 餘 數 employee WHERE GETDATE() hiredate > 字 元 運 算 子 : 運 算 子 說 明 範 例 + 連 接 運 算 子 SELECT 姓 名 : +lastname FROM employee 3. 比 較 運 算 子 : 運 算 子 說 明 範 例 = 相 等 判 斷 SELECT * FROM employee WHERE salary = 35000!= <> 不 等 判 斷 SELECT * FROM employee WHERE > < >= <=!>!< 大 於 判 斷 小 於 判 斷 大 於 等 於 判 斷 小 於 等 於 判 斷 不 大 於 不 小 於 salary!= SELECT * FROM employee WHERE salary > SELECT * FROM employee WHERE salary >= IN 存 在 任 何 成 員 判 斷 SELECT * FROM employee WHERE job IN (670,671) NOT IN 不 存 在 任 何 成 員 判 斷 SELECT * FROM employee WHERE ANY ( 只 能 用 於 子 查 詢 ) salary NOT IN (SELECT salary FROM employee WHERE deptno=30) 對 一 值 與 一 個 表 格 中, 每 一 值 或 查 SELECT * FROM employee WHERE 詢 傳 回 的 每 一 值 做 比 較 在 該 運 算 salary=any (SELECT salary FROM 子 之 前 必 須 有 =,!=,<,>,<=, employee WHERE deptno=30) >= 運 算 子 頁 次 :25

26 SOME ( 只 能 用 於 子 查 詢 ) ALL [NOT] BETWEEN X AND Y EXISTS X [NOT] LIKE Y IS [NOT ] NULL [ 說 明 ] 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 只 要 有 任 一 個 成 立, 即 為 True 例 如 >ANY(1,2,3) 表 示 比 較 對 象 只 要 大 於 1, 2, 3 任 一 數, 也 就 表 示 只 需 大 於 1 即 成 立 [ 其 中 1,2,3 表 示 子 查 詢 之 結 果 ] 只 要 有 任 一 些 成 立, 即 為 True 表 示 方 法 類 似 ANY, 比 較 對 象 對 SELECT * FROM employee WHERE 表 格 中 所 有 值 都 成 立, 才 為 True salary > all (select (salary+comm) from 例 如 比 較 對 象 >ALL(1,2,3) 表 employee where comm >3500) 示 比 較 對 象 必 須 大 於 1, 2, and 3, 也 就 表 示 需 大 於 3 [ 其 中 1,2,3 表 示 子 查 詢 之 結 果 ] [ 不 ] 存 在 X 和 Y 區 間 的 判 斷 SELECT * FROM employee WHERE 子 查 詢 有 獲 得 任 意 數 目 的 資 料 集, 則 傳 回 true > ALL(1,2,3) Ł > 3 true 則 執 行 select 之 結 果 false 則 不 執 行 select 之 結 果 salary BETWEEN AND SELECT * FROM dept WHERE EXISTS (SELECT * FROM employee WHERE dept.id=employee.deptno) 切 截 查 詢, 在 Y 中 : 符 號 % 可 SELECT * FROM employee WHERE 包 含 任 何 0 個 或 多 個 字 元 ; _ firstname LIKE JA% 可 包 含 任 何 單 一 字 元 測 試 空 值 SELECT * FROM employee WHERE comm IS NULL > ANY(1,2,3) Ł > 1 ( 假 設 上 例 中 的 1,2,3 為 子 查 詢 結 果, 因 為 ALL, ANY 必 須 用 於 子 查 詢 結 果 判 斷, 而 IN 則 可 用 於 表 列 或 子 查 詢 結 果 之 判 斷 基 本 上 IN 敘 述 可 等 於 =ANY 敘 述 ) SELECT * FROM EMPLOYEE WHERE EXISTS (SELECT * FROM DEPT WHERE DEPT.ID=EMPLOYEE.DEPTNO AND LOCATION LIKE 一 樓 % ) 相 等 於 JOIN 查 詢 : SELECT EMPLOYEE.* FROM EMPLOYEE, DEPT WHERE EMPLOYEE.DEPT=DEPT.ID AND LOCATION LIKE 一 樓 % 頁 次 :26

27 十 八 SELECT 查 詢 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 檔 案 結 構 : (1) 學 生 修 課 資 訊 (2) 商 品 銷 售 資 訊 (3) 圖 書 採 購 資 訊 * 表 示 主 鍵 (Primary key) FK 表 示 外 來 鍵 (Foreign key) 表 示 外 來 鍵 指 向 資 料 的 來 源 頁 次 :27

28 1. 一 般 查 詢 SELECT NAME, AUTHOR, PRICE, PUBLISHER FROM BOOK SELECT * FROM BOOK SELECT DISTINCT PRICE FROM BOOK 2. 算 數 查 詢 SELECT NAME, PRICE, PRICE*0.8 FROM BOOK 3. 條 件 (WHERE) 子 句 查 詢 SELECT BRN, NAME, AUTHOR, PRICE FROM BOOK WHERE BRN > 105 SELECT BRN, NAME, AUTHOR, PRICE FROM BOOK WHERE BRN IN (101,102,103,104) SELECT BRN, NAME, AUTHOR, PRICE FROM BOOK WHERE BRN BETWEEN 101 AND 104 SELECT * FROM BOOKSTORE WHERE CITY LIKE 台 % SELECT ID, NAME, RANK, CITY FROM BOOKSTORE WHERE NOT ( RANK >=20 AND CITY LIKE 台 % ) SELECT ID, NAME, RANK FROM BOOKSTORE WHERE RANK NOT IN (20,30) SELECT ID, NAME, CITY FROM BOOKSTORE WHERE NOT (CITY IN ( 台 北 市, 台 南 市, 台 中 市 )) SELECT ID, NAME, RANK, CITY FROM BOOKSTORE WHERE RANK IN (20,30) AND CITY IN ( 台 北 市, 台 南 市, 台 中 市 ) 練 習 : 試 列 出 男 性 (M) 學 生 地 址 在 台 北 市 的 修 課 細 節 頁 次 :28

29 4. 合 併 查 詢 (JOIN) SELECT BOOK.NAME, ORDERS.* FROM BOOK, ORDERS WHERE BOOK.BRN=ORDERS.BRN SELECT B.NAME, S.NAME, QUANTITY, QUANTITY*PRICE FROM BOOK B, BOOKSTORE S, ORDERS O WHERE O.BRN=B.BRN AND O.VID=S.ID 5. 別 名 (Alias) 別 名 分 為 欄 位 別 名 ( 標 籤,Label) 與 表 格 別 名 欄 位 別 名 用 於 改 變 資 料 呈 現 時 的 欄 位 標 籤 內 容 ; 表 格 別 名 則 是 用 於 簡 化 SQL 內 表 格 名 稱 的 長 度 欄 位 別 名 宣 告 方 式 : select 欄 位 欄 位 別 名, 表 格 別 名 宣 告 方 式 :select 欄 位,. from 表 格 表 格 別 名, [ 注 意 ] 欄 位 別 名 表 格 別 名 有 效 範 圍 只 在 同 一 SQL 敘 述 內 有 效 ; 使 用 表 格 別 名, 則 該 SQL 敘 述 內 所 有 該 表 格 名 稱 均 要 使 用 該 別 名, 不 可 再 用 原 表 格 名 稱 6. 排 序 查 詢 (ORDER BY) DESC 由 大 至 小 排 序 ASC 由 小 至 大 排 序 ( 預 設 ) SELECT ID, NAME, RANK, CITY FROM BOOKSTORE ORDER BY ID DESC SELECT * FROM BOOK ORDER BY AUTHOR ASC, BRN DESC 7. 聚 合 查 詢 五 項 基 本 函 數 : 函 數 名 稱 說 明 COUNT 計 算 指 定 欄 位 之 資 料 集 數 目 SUM 計 算 欄 位 內 容 之 總 合 AVG 計 算 欄 位 內 容 之 平 均 值 MIN 計 算 欄 位 內 容 之 最 小 值 MAX 計 算 欄 位 內 容 之 最 大 值 計 算 學 生 檔 (STUDENT) 的 人 數 計 算 科 目 CO 所 有 修 課 的 人 數, 總 分, 平 均 成 績, 最 高 分, 最 低 分 計 算 學 生 王 五 的 所 有 修 課 數 目, 總 分, 平 均 成 績, 最 高 分, 最 低 分 頁 次 :29

30 8. 巢 狀 查 詢 (1) 子 查 詢 只 有 一 個 值 * 使 用 BOOKSTORE 檔 : SELECT NAME,RANK FROM BOOKSTORE WHERE RANK < (SELECT AVG(RANK) FROM BOOKSTORE) SELECT NAME,RANK FROM BOOKSTORE WHERE RANK = (SELECT MAX(RANK) FROM BOOKSTORE)-10 * 使 用 EMPLOYEE 檔 : 列 出 和 ( 姓 )Green 同 部 門 的 員 工 資 料 SELECT * FROM EMPLOYEE WHERE DEPTNO = (SELECT DEPTNO FROM EMPLOYEE WHERE LASTNAME='Green') 列 出 比 ( 姓 )Green 薪 水 少 的 員 工 資 料 SELECT * FROM EMPLOYEE WHERE SALARY < (SELECT SALARY FROM EMPLOYEE WHERE LASTNAME='Green') (2) 子 查 詢 傳 回 一 個 集 合 SELECT NAME FROM BOOKSTORE WHERE ID IN (SELECT VID FROM ORDERS WHERE BRN='101') SELECT NAME FROM BOOKSTORE, ORDERS WHERE BOOKSTORE.ID=ORDERS.VID AND BRN='101' SELECT NAME FROM BOOKSTORE WHERE EXISTS (SELECT * FROM ORDERS WHERE ORDERS.VID=BOOKSTORE.ID AND BRN='101') 找 出 沒 人 訂 購 書 的 書 局 SELECT * FROM BOOKSTORE WHERE ID NOT IN (SELECT VID FROM ORDERS) 找 出 沒 人 訂 購 的 書 SELECT * FROM BOOK WHERE BRN NOT IN (SELECT BRN FROM ORDERS) 等 於 SELECT * FROM BOOK WHERE NOT EXISTS (SELECT * FROM ORDERS WHERE BOOK.BRN=ORDERS.BRN) 頁 次 :30

31 列 出 薪 水 比 部 門 編 號 開 頭 為 2 的 員 工 平 均 薪 水 還 高 的 其 他 部 門 員 工 資 料 SELECT * FROM EMPLOYEE WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE WHERE DEPTNO LIKE '2%') AND DEPTNO NOT LIKE '2%' 列 出 與 Green 相 同 部 門 或 薪 水 比 他 高 的 員 工 姓 名 部 門 名 稱 和 工 資 SELECT LastName+' '+FirstName, Description, Salary FROM EMPLOYEE, DEPT WHERE DEPT.ID=EMPLOYEE.DEPTNO AND (DEPTNO=(SELECT DEPTNO FROM EMPLOYEE WHERE LASTNAME='Green') OR SALARY > (SELECT SALARY FROM EMPLOYEE WHERE LASTNAME='Green')) [ 注 意 ] 括 號 時 機, 不 需 特 別 排 除 Green 9. 群 組 功 能 (GROUP BY) 執 行 注 意 原 則 1. 需 出 現 在 select, having, order by 之 後 的 一 般 性 欄 位 ( 非 聚 合 函 數 結 果 ), 必 須 一 定 要 在 group by 有 出 現 group by 的 欄 位, 才 能 使 用 於 select, having,order by 之 處 ; select sex,id,count(*) from student group by sex-- 錯 誤 2. 有 使 用 在 gorup by 分 組 的 欄 位, 可 以 不 一 定 要 出 現 於 select 之 處 ; select count(*) from student group by sex -- 可 以 不 列 出 sex 欄 位 3. 有 多 個 群 組 的 資 料 條 件, 使 用 在 group by 時, 不 需 分 先 後 次 序 ; ----ex. 列 出 依 據 課 目 性 別 分 別 計 算 學 生 人 數 與 平 均 分 數 select subject,sex,count(*),avg(score) from student,course where student.id=course.id group by sex, subject --sex, subject 先 後 次 序 更 換 不 會 影 響 結 果 4. 如 果 group by 的 欄 位 不 包 含 主 鍵, 需 考 量 是 否 有 同 名 的 疑 慮 若 有, 則 須 加 上 主 鍵 ----ex. 請 依 姓 名 分 別 列 出 各 學 生 的 平 均 成 績 與 修 課 數 update student set name=' 張 三 ' where id= 將 資 料 更 動 一 下 以 便 測 試 select name,count(*),avg(score) from student,course where student.id=course.id group by name -- 可 能 資 料 會 有 錯 誤 select name,count(*),avg(score) from student,course where student.id=course.id 頁 次 :31

32 group by name,student.id-- 須 加 上 主 鍵, 否 則 同 名 的 人 會 被 合 併 計 算 select * from course order by id 5. group by 表 示 系 統 掃 描 整 個 檔 案 之 後 才 能 群 聚 指 定 的 資 料, 因 此 可 以 在 select where order by 之 後 直 接 使 用 聚 合 函 數 ; select id,count(*) from course -- 錯 誤! 聚 合 函 數 不 可 與 一 般 欄 位 並 列 select id,count(*) from course group by id order by avg(score) --Correct! 6. having 與 where 均 是 用 於 條 件 判 斷 where 的 條 件 是 執 行 於 群 組 之 前 的 判 斷 ;having 的 條 件 則 是 執 行 於 群 組 後 的 判 斷 --ex. 求 住 在 台 北 地 區 男 女 生 人 數 select sex,count(*) from student where address like ' 台 北 %' group by sex --ex. 列 出 男 生 (sex='m') 中 修 課 數 超 過 3 門 的 學 生 姓 名 與 修 課 數 平 均 成 績 select name,count(*),avg(score) from student, course where student.id=course.id and sex='m' group by student.id, name having count(*)>3 求 訂 單 檔 中 各 書 被 訂 購 的 次 數 SELECT BRN, COUNT(BRN) FROM ORDERS GROUP BY BRN 求 各 書 被 訂 購 的 數 量 SELECT BRN, SUM(QUANTITY) FROM ORDERS GROUP BY BRN 列 出 訂 單 中 各 訂 購 商 購 買 各 種 書 本 的 數 量 SELECT VID,BRN,SUM(QUANTITY) FROM ORDERS GROUP BY VID,BRN ORDER BY VID,BRN 求 各 學 生 的 平 均 成 績 SELECT AVG(SCORE) FROM COURSE GROUP BY ID [ 注 意 ] 以 非 PK 分 組 之 不 足 之 處, 例 如 以 姓 名 分 組 頁 次 :32

33 求 學 生 中 男 生 女 生 的 人 數 SELECT SEX, COUNT(*) FROM STUDENT GROUP BY SEX 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 求 各 訂 購 商 訂 購 書 的 總 數, 列 出 時 請 列 出 訂 購 商 名 稱 SELECT ORDERS.VID, BOOKSTORE.NAME, SUM(QUANTITY) FROM ORDERS, BOOKSTORE WHERE ORDERS.VID=BOOKSTORE.ID GROUP BY ORDERS.VID, BOOKSTORE.NAME 10. 群 組 條 件 (HAVING) HAVING 之 前 一 定 要 有 GROUP BY 敘 述, 用 來 過 濾 掉 GROUP BY 之 條 件 (1) 列 出 訂 單 檔 中 各 商 品 購 買 總 數 超 過 20 的 訂 單 編 號 與 購 買 總 數 ( 依 訂 單 分 組 ) SELECT ID, SUM(QUANTITY) FROM ORDERS GROUP BY ID HAVING SUM(QUANTITY) >20 (2) 請 列 出 同 一 個 書 目 資 料 下 所 有 館 藏 總 和 被 借 超 過 20 次 的 書 目 編 號 書 名 與 作 者 SELECT BIB.BRN,TITLE FROM HOLDING,BIB WHERE HOLDING.BRN=BIB.BRN GROUP BY BIB.BRN, TITLE HAVING SUM(COUNT)>20 (3) [ 依 員 工 各 別 統 計 ] 列 出 本 月 ( 判 斷 年 度 月 份 ) 份 銷 售 單 價 總 計 超 過 的 員 工 姓 名 與 其 銷 售 金 額 總 計 ( 數 量 * 單 價 ) SELECT E.NAME, SUM(PRICE*COUNT) FROM SALES S,EMPLOYEE E WHERE S.ENO=E.ENO AND DATEPART(YY,SDATE)=DATEPART(YY,GETDATE()) AND DATEPART(MM,SDATE)=DATEPART(MM,GETDATE()) GROUP BY E.ENO, E.NAME HAVING SUM(PRICE) >0 [ 注 意 ]: 因 員 工 有 可 能 同 名 同 姓, 因 此 不 可 以 只 用 員 工 姓 名 作 GROUP BY 分 組 的 依 據 頁 次 :33

34 (4) 請 依 據 各 部 門 分 別 統 計 各 商 品 銷 售 數 量 超 過 100 份 部 門 名 稱 與 商 品 名 稱 [ 資 料 庫 無 此 檔 案 ] SELECT D.ID, P.NAME, SUM(COUNT) FROM SALES S, EMPLOYEE E, DEPT D, PRODUCT P WHERE S.ENO=E.ENO AND D.ID=E.DEPT AND S.PID=P.ID GROUP BY D.ID, P.ID, P.NAME HAVING SUM(COUNT) > 1000 (5) 列 出 修 課 人 數 最 多 的 老 師 姓 名 修 課 人 數 與 平 均 成 績 SELECT SUBJECT, J.DESCRIPTION,COUNT(*), AVG(SCORE) FROM COURSE S,SUBJECT J WHERE S.SUBJECT=J.ID GROUP BY SUBJECT,J.DESCRIPTION HAVING COUNT(*) >= ALL(SELECT COUNT(*) FROM COURSE GROUP BY SUBJECT) (6) 列 出 修 課 平 均 成 績 最 高 的 科 目 名 稱 與 老 師 姓 名 SELECT SUBJECT, J.DESCRIPTION, T.DESCRIPTION, AVG(SCORE) FROM COURSE S,SUBJECT J,TEACHER T WHERE S.SUBJECT=J.ID AND J.TEACHER=T.ID GROUP BY SUBJECT,J.DESCRIPTION, T.DESCRIPTION HAVING AVG(SCORE) >= ALL(SELECT AVG(SCORE) FROM COURSE GROUP BY SUBJECT) [ 練 習 ] (1) 列 出 家 住 在 台 北 的 男 生, 且 平 均 成 績 高 於 80 分 的 姓 名 地 址 平 均 成 績 與 修 課 數 (2) 列 出 部 門 人 數 超 過 4 人 以 上 的 部 門 編 號 人 數 與 最 高 最 低 的 薪 資 (3) 列 出 部 門 平 均 薪 水 超 過 的 員 工 資 料 群 組 之 後, 資 料 庫 系 統 便 以 組 為 單 位, 可 以 列 出 各 組 的 基 本 資 料, 但 無 法 列 出 各 組 內 容 的 細 節 如 果 要 列 出 群 組 後 各 組 的 細 節, 則 該 群 組 的 敘 述 要 以 子 查 詢 方 式 處 理 頁 次 :34

35 單 元 練 習 : ( 請 先 自 行 繪 出 STUDENT, COURSE, SUBJECT, TEACHER 四 個 表 格 的 檔 案 結 構 ) 1. 連 續 題 : (1) 列 出 各 科 修 課 人 數 (2) 列 出 學 生 的 修 課 科 目 數 量 平 均 成 績 (3) 列 出 修 課 人 數 超 過 8 人 的 修 課 科 目 代 碼 (4) 列 出 修 課 人 數 超 過 8 人 的 修 課 科 目 代 碼 學 生 姓 名 及 成 績 (5) 列 出 修 課 人 數 超 過 8 人 的 修 課 科 目 名 稱 學 生 姓 名 及 成 績 (6) 列 出 修 課 人 數 超 過 8 人 的 修 課 科 目 名 稱 學 生 姓 名 及 成 績, 並 依 科 目 名 稱 成 績 學 號 排 序 2. 列 出 學 生 平 均 成 績 低 於 80 分 的 學 生 學 號 姓 名 平 均 成 績 3. 列 出 科 目 平 均 成 績 高 於 75 分 的 科 目 名 稱 授 課 老 師 姓 名 平 均 分 數 4. 列 出 修 課 平 均 成 績 比 平 均 成 績 還 高 的 學 生 學 號 及 其 平 均 成 績 5. 列 出 修 課 男 生 女 生 的 平 均 成 績 6. 求 資 料 庫 分 數 最 高 學 生 的 所 有 科 目 成 績 7. 列 出 老 師 的 開 課 數 量 8. 列 出 有 開 課 成 功 的 老 師 姓 名 與 開 課 數 量 ( 與 第 7 題 比 較 ) 9. 列 出 老 師 的 姓 名 開 課 科 目 數 量 10. 列 出 老 師 的 姓 名 開 課 科 目 名 稱 各 科 目 修 課 學 生 人 數 修 課 的 平 均 成 績 頁 次 :35

36 9.XML SQL Server2000 提 供 在 SELECT 敘 述 執 行 並 輸 出 成 XML 的 功 能, 而 產 生 的 方 式 只 須 在 SELECT 敘 述 最 後 加 上 相 關 的 指 令 宣 告 即 可 指 令 宣 告 : FOR XML {RAW AUTO EXPLICIT [, XMLData] [, ELEMENTS] [, BINARY base64]} 關 鍵 字 說 明 : (1) FOR XML: 指 定 將 查 詢 結 果 輸 出 成 XML (2) RAW: 指 定 將 查 詢 結 果 每 一 列 資 料 以 通 用 的 <row> 元 素 表 示, 各 欄 位 內 容 以 屬 性 方 式 表 示 (3) AUTO: 指 定 將 多 種 表 格 查 詢 結 果 轉 換 成 一 個 XML 的 巢 狀 元 素, 各 欄 位 內 容 以 屬 性 方 式 表 示 ( 不 支 援 group by) (4) EXPLICIT: 傳 回 應 建 立 之 XML 樹 狀 形 式 (5) XMLData: 指 定 將 查 詢 結 果 產 生 之 XML 內 包 含 該 表 格 Schema 之 DTD (6) ELEMENTS: 指 定 將 查 詢 結 果 之 各 欄 位 以 元 素 型 態 傳 回 ( 須 配 合 AUTO) (7) BINARY base64: 指 定 將 傳 回 之 二 進 位 資 料 以 標 準 的 base64 編 碼 頁 次 :36

37 十 九 SQL 函 數 常 用 的 SQL Server 資 料 庫 函 數 : 名 稱 說 明 匯 總 函 數 : 計 算 表 格 內 某 一 欄 位 的 加 總 值 平 均 值 最 大 值 最 小 值 AVG() COUNT() MAX() MIN() SUM() GETDATE() DAY(date) MONTH(date) YEAR(date) DATEPART(datepart, date) select AVG(unit_price) from pur_item where prod_id= P001 select COUNT(*) from employee select prod_id,count(*) from sale_item group by prod_id having count(*) > 3 select * fom employee where salary = (select MAX(salary) from employee) select * fom employee where salary = (select MIN(salary) from employee) select order_date,sum(tot_amt),avg(tot_amt),count(*) from sales group by order_date order by order_date 日 期 函 數 取 得 系 統 日 期 select DAY( 05/21/2002 ) select MONTH( 05/21/2002 ) select MONTH( 05/21/2002 ) 語 法 : DATEPART( datepart 參 數, date) YEAR(YY) QUARTER(QQ) 1-4 MONTH(MM) 1-12 DAYOFYEAR(DY) DAY(DD) 1-31 WEEK(WK) 1-53 WEEKDAY(DW) 1-7( 星 期 日 - 星 期 六 ) HOUR( 不 能 用 HR) 0-23 MINUTE(MI) 0-59 SECOND(SS) 0-59 MILLISECOND(MS) 統 計 每 月 訂 單 總 額 與 訂 單 筆 數 : select DATEPART(MONTH, order_date),sum(tot_amt),count(*) from sales group by 頁 次 :37

38 DATEDIFF(datepart, startdate, enddate) DATEADD(datepart,number,date) DATENAME(datepart,date) DATEPART(MONTH,order_date) order by DATEPART(MONTH,order_date) 計 算 startdate 至 enddate 距 離 多 少 個 datepart 單 位 日 期 加 上 指 定 的 日 期 值 例 : DATEADD(DAY,10, 1996/12/24 ) 1997 年 1 月 3 日 DATEADD(MONTH,2, 1996/12/24 ) 1997 年 2 月 24 日 DATEADD(WEEK,3, 1996/12/24 ) 1997 年 1 月 14 日 顯 示 日 期 個 別 組 成 部 分 的 名 稱 例 : LEN(str) ASCII(str) CHAR(int) LOWER(str) UPPER(str) LTRIM(str) RTRIM(str) STR(float,[len,[decimal]]) DATENAME(YEAR, 1996/09/24 ) 1996 DATENAME(QUARTER, 1996/09/24 ) 3 DATENAME(WEEK, 1996/09/24 ) 39 DATENAME(WEEKDAY, 1996/09/24 ) Tuesday DATENAME(DAYOFYEAR, 1996/09/24 ) 268 字 串 函 數 求 字 串 內 容 的 長 度 求 字 串 最 左 字 元 的 ASCII 值 將 ASCII 值 轉 為 ASCII 碼 將 字 串 全 部 轉 為 小 寫 將 字 串 全 部 轉 為 大 寫 去 除 字 串 前 置 空 白 去 除 字 串 後 方 空 白 將 數 字 轉 為 字 串,len 為 字 串 總 長 度,decimal 為 小 數 位 數 STUFF(string1,start,len,string2) 將 string1 字 串 由 start 位 置 處 刪 除 len 個 字 元, 並 將 string2 字 串 由 start 處 插 入 RIGHT(str_expr, int_expr) LEFT(str_expr, int_expr) 從 字 串 的 最 右 邊 往 回 取 int_expr 個 字 元 從 字 串 的 最 左 邊 位 置 取 int_expr 個 字 元 RIGHT( abcdefgh,5) LEFT( abcdefg,5) 結 果 為 defgh 結 果 為 abcde SUBSTRING(str_expr,start,len) 由 字 串 左 邊 算 起 第 start 位 置 取 長 度 為 len 的 字 串 REPLACE(str_expr, str1,str2) 將 字 串 str_expr 的 內 容 為 str1 取 代 成 str2 例 :select name, replace(name,' 台 ',' 臺 ') from book 頁 次 :38

39 系 統 函 數 ISNULL(expr, val) 將 expr 中 為 NULL 值 者 以 val 值 取 代 SELECT SUM(SALARY+COMM), SUM(SALARY+ISNULL(COMM,0)) FROM EMPLOYEE 頁 次 :39

40 本 單 元 介 紹 流 程 : 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 建 立 檔 案 / 刪 除 檔 案 新 增 / 修 改 / 刪 除 紀 錄 (DDL) 異 動 管 理 (TCL) 建 立 視 界 / 索 引 二 十 資 料 建 立 1. 檔 案 建 立 CREATE TABLE [ database_name.[ owner ]. owner. ] table_name ( { < column_definition > column_name AS computed_column_expression < table_constraint > ::= [ CONSTRAINT constraint_name ] } ) [ { PRIMARY KEY UNIQUE } [,...n ] [ ON { filegroup DEFAULT } ] [ TEXTIMAGE_ON { filegroup DEFAULT } ] < column_definition > ::= { column_name data_type } [ COLLATE < collation_name > ] [ [ DEFAULT constant_expression ] [ IDENTITY [ ( seed, increment ) [ NOT FOR REPLICATION ] ] ] ] [ ROWGUIDCOL] [ < column_constraint > ] [...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL NOT NULL ] [ { PRIMARY KEY UNIQUE } [ CLUSTERED NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup DEFAULT} ] ] ] [ [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE NO ACTION } ] [ ON UPDATE { CASCADE NO ACTION } ] [ NOT FOR REPLICATION ] ] CHECK [ NOT FOR REPLICATION ] ( logical_expression ) } < table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY UNIQUE } [ CLUSTERED NONCLUSTERED ] { ( column [ ASC DESC ] [,...n ] ) } [ WITH FILLFACTOR = fillfactor ] 頁 次 :40

41 [ ON { filegroup DEFAULT } ] ] FOREIGN KEY [ ( column [,...n ] ) ] REFERENCES ref_table [ ( ref_column [,...n ] ) ] [ ON DELETE { CASCADE NO ACTION } ] [ ON UPDATE { CASCADE NO ACTION } ] [ NOT FOR REPLICATION ] CHECK [ NOT FOR REPLICATION ] ( search_conditions ) } 2. DML 資 料 維 護 的 語 法 : 新 增 資 料 :INSERT INTO 檔 案 ( 欄 位, 欄 位, ) VALUES ( 資 料, 資 料, ) 修 改 資 料 :UPDATE 檔 案 SET 欄 位 = 資 料, 欄 位 = 資 料, WHERE 條 件 刪 除 資 料 :DELETE FROM 檔 案 WHERE 條 件 DML DDL TCL/DCL INSERT 新 增 CREATE ROLLBACK DELETE 刪 除 DROP COMMIT UPDATE 修 改 ALTER SELECT 選 擇 無 檔 案 建 立 的 基 本 語 法 : CREATE TABLE 檔 案 名 稱 ( 欄 位 名 稱 資 料 型 態 [ 限 制 ], ) 欄 位 名 稱 資 料 型 態 [ 限 制 ], [ 主 鍵 宣 告,] [ 外 來 鍵 宣 告 ] 3. 常 使 用 的 限 制 (Constraint) 宣 告 : (1) 宣 告 主 鍵 ( 當 該 檔 案 的 主 鍵 只 有 一 個 欄 位 時 ):PRIMARY KEY (2) 預 設 值 :DEFAULT 值 (3) 檢 查 ( 當 資 料 輸 入 時 驗 證 的 語 法 ):CHECK ( 條 件 ) (4) 不 允 許 虛 值 :NOT NULL 頁 次 :41

42 若 檔 案 的 主 鍵 包 含 不 只 一 個 欄 位, 則 主 鍵 必 須 單 獨 宣 告 ( 若 主 鍵 僅 一 個 欄 位, 亦 可 使 用 此 種 宣 告 方 式 ): PRIMARY KEY ( 欄 位, 欄 位, ), 若 該 檔 案 的 某 些 欄 位 為 外 來 鍵, 則 外 來 鍵 的 宣 告 為 : FOREIGN KEY ( 欄 位, 欄 位, ) REFERENCES 主 檔 檔 名 ( 欄 位, 欄 位, ) [ ON DELETE CASCADE ON UPDATE CASCADE] 例 : CREATE TABLE STUDENT ( ID VARCHAR(10) PRIMARY KEY, NAME VARCHAR(10) NOT NULL, AGE INT CHECK (AGE >10 AND AGE <60), BIRTH DATETIME DEFAULT GETDATE()); INSERT INTO STUDENT (ID,NAME,AGE) VALUES ('A001',' 張 三 ',20) INSERT INTO STUDENT (ID,NAME,BIRTH) VALUES ('A002',' 李 四 ','2/12/1981') INSERT INTO STUDENT (ID,NAME,AGE,BIRTH) VALUES ('A003',' 王 五 ',21,'4/8/1980') INSERT INTO STUDENT VALUES ('A004',' 錢 六 ',22,'7/1/1979') CREATE TABLE STUDENT_SCORE (ID VARCHAR(10), SUBJECT VARCHAR(10), SCORE INT CHECK (SCORE > 0 AND SCORE< 100), PRIMARY KEY (ID,SUBJECT), FOREIGN KEY (ID) REFERENCES STUDENT(ID) ON DELETE CASCADE); INSERT INTO STUDENT_SCORE VALUES ('A001','ENG',80); INSERT INTO STUDENT_SCORE VALUES ('A001','CHI',92); [ 新 增 資 料 之 錯 誤 練 習 ] (1) 遺 漏 欄 位 (2) 欄 位 與 資 料 型 態 不 符 (3) 輸 入 資 料 超 過 資 料 型 態 範 圍 (4) 超 過 CHECK 值 (5) 重 覆 KEY 值 (6) 輸 入 不 存 在 的 欄 位 (7) 輸 入 不 存 在 的 FOREIGN KEY 值 頁 次 :42

43 [ 比 較 ] (1) 能 否 執 行 INSERT INTO COURSE VALUES ('A005','ENG',70); (2) (2) DELETE FROM STUDENT WHERE ID= A001 之 後,COURSE 是 否 仍 存 在 A001 的 成 績 資 料? (3) 能 否 執 行 DROP TABLE STUDENT 4. 檔 案 修 改 ALTER TABLE 檔 名 修 改 類 型 欄 位 [ 範 例 ] alter table department add position varchar(20) // 新 增 一 個 欄 位 的 定 義 alter table department drop column position // 刪 除 一 個 欄 位 的 定 義 alter table department alter column position varchar(30) // 修 改 一 個 欄 位 的 定 義 5. 檔 案 刪 除 DROP TABLE tablename [ 練 習 ] 檔 案 建 立 及 建 立 的 先 後 順 序 (1) 建 立 27 頁 之 相 關 檔 案, 建 立 時 包 含 宣 告 Primary key, Foreign key, 並 考 慮 建 立 所 須 之 索 引 檔 (2) 逐 一 刪 除 檔 案 注 意 Foreign key 所 造 成 的 刪 除 次 序 限 制 6. SQL Server 存 取 使 用 Unicode 字 碼 雖 然 SQL Server 已 經 支 援 Unicode, 資 料 處 理 的 模 式 亦 是 依 據 字 元 而 非 位 元 組, 不 過 實 際 儲 存 資 料 是 若 非 指 名 使 用 Unicode, 系 統 預 設 仍 是 以 資 料 一 般 的 字 碼 處 理 ( 例 如 台 灣 就 會 以 Big5 字 碼 為 預 設 字 元 ) 參 考 下 列 範 例, 先 建 立 一 個 包 含 兩 個 欄 位 的 表 格, 其 中 NOTE 欄 位 宣 告 為 變 長 字 串, 長 度 9: CREATE TABLE TEMP (ID CHAR(3) PRIMARY KEY, NOTE VARCHAR(9) ); 接 著, 請 試 著 輸 入 下 列 資 料, 並 予 以 執 行 : INSERT INTO TEMP VALUES ('001',' 三 個 字 '); INSERT INTO TEMP VALUES ('002',' 四 個 words'); INSERT INTO TEMP VALUES ('003',' 這 有 五 個 字 '); 依 據 宣 告,NOTE 應 該 可 以 存 放 9 個 字 元 的 資 料, 但 實 際 輸 入 第 三 筆 資 料 時, 卻 出 現 下 列 訊 息 : 伺 服 器 : 訊 息 8152, 層 級 16, 狀 態 9, 行 1 頁 次 :43

44 字 串 或 二 進 位 資 料 會 被 截 斷 陳 述 式 已 經 結 束 表 示 已 經 超 過 允 許 長 度 若 是 以 函 數 LEN( ) 檢 查 資 料 內 容, 系 統 能 夠 很 正 確 地 依 據 字 元 數 目 計 算 出 : SELECT NOTE,LEN(NOTE) FROM TEMP 得 到 下 列 結 果 : SQL Server 如 何 存 取 Unicode 字 碼 的 方 法 : 1. 宣 告 的 欄 位 名 稱 必 須 使 用 'n', 如 nchar, nvarchar 2. 存 入 資 料 時 必 須 在 資 料 前 加 上 一 個 N 字 元 ( 必 須 大 寫 ) 例 如 : CREATE TABLE TEMP (sql integer, id nchar(5), name nvarchar(10), title varchar(10)) INSERT INTO TEMP VALUES (1, ' 山 东 ',' 包 兆 茏 ',' 经 理 ') INSERT INTO TEMP VALUES (2, N' 山 东 ',N' 包 兆 茏 ',N' 经 理 ') INSERT INTO TEMP VALUES (3, ' 山 東 ', N' 包 兆 茏 图 书 馆 ',N' 經 理 ') select * from Temp 的 結 果 如 下 : 山? 包 兆?? 理 2 山 东 包 兆 茏? 理 3 山 東 包 兆 茏 图 书 馆 經 理 可 以 看 出 輸 入 資 料 時 在 前 面 加 一 N 字 元, 就 算 是 該 欄 位 為 非 Unicode 亦 可 ( 如 範 例 中 的 title 欄 位, 並 非 宣 告 為 nvarchar) 縱 使 欄 位 宣 告 為 Unicode( nchar 或 nvarchar), 若 沒 在 字 串 前 加 上 'N' 字 元, 則 一 樣 不 會 存 入 Unicode 7. SQL Server 如 何 於 欄 位 自 動 編 流 水 號 (identify) 方 法 : 使 用 IDENTITY ( 起 始 值, 遞 增 ) ex. CREATE TABLE new_std ( id int IDENTITY(1,1), name varchar (20)); 之 後 可 不 需 指 定 id 欄 位 的 值, 則 系 統 會 補 上 流 水 號 若 欲 取 得 最 近 產 生 的 識 別 值 編 號, 可 使 用 : 頁 次 :44

45 SELECT IDENT_CURRENT(' 表 格 名 稱 '); 插 入 資 料 時 如 何 自 訂 識 別 值 的 值? 1. 開 啟 identity_insert set identity_insert 表 格 名 稱 on ; 2. 開 始 輸 入 資 料 3. 關 閉 identity_insert set identity_insert 表 格 名 稱 off ; 頁 次 :45

46 4. 視 界 (View) 建 立 VIEW 可 以 視 為 另 一 種 形 式 的 表 格 和 表 格 一 樣,VIEW 也 是 由 數 個 欄 位 定 義 所 組 成, 只 不 過 VIEW 的 欄 位 是 來 自 其 他 表 格 內 的 欄 位, 它 並 無 自 己 定 義 的 的 欄 位 使 用 者 可 以 對 VIEW 執 行 SELECT, INSERT, UPDATE 和 DELETE 的 動 作, 利 用 GRANT 指 令 將 視 界 的 使 用 權 開 放 給 特 定 的 使 用 者 等 等 CREATE VIEW [ < database_name >.[ owner.] view_name [ ( column [,...n ] ) ] [ WITH < view_attribute > [,...n ] ] AS select_statement [ WITH CHECK OPTION ] CREATE VIEW 指 令 中 的 SELECT 有 以 下 的 限 制 : (1) 不 能 使 用 order by, compute 或 compute by 語 句 (2) 不 能 使 用 union 語 句 (3) 不 能 使 用 into 語 句 視 界 檔 案 的 資 料 來 源, 且 視 界 檔 案 的 欄 位 必 須 與 SELECT 輸 出 結 果 的 欄 位 數 量 一 致 當 SELECT 輸 出 結 果 的 欄 位 名 稱 沒 有 重 複 且 均 有 名 稱 時, 可 以 省 略 視 界 檔 案 的 欄 位 宣 CREATE VIEW 視 界 檔 名 ( 欄 位, 欄 位, ) 告, 沿 用 原 先 的 欄 位 名 稱 AS SELECT 欄 位, 欄 位, FROM 檔 案, 檔 案, WHERE 練 習 1: STUDENT, COURSE, SUBJECT, TEACHER 表 格 之 間 有 建 立 foreign key 之 關 係 BOOK, ORDERS, BOOKSTORE, PUBLISHER 表 格 之 間 沒 有 建 立 foreign key 之 關 係 ( 參 見 p.27 之 檔 案 結 構 ) [ 比 較 ] (1) 建 立 單 純 的 VIEW 建 立 下 列 查 詢 的 VIEW 檔 : (1.1) 應 用 Orders 表 格 建 立 包 含 所 有 出 貨 日 期 距 訂 貨 日 期 超 過 100 天 資 料 的 VIEW (1.2) 應 用 Student, Course 表 格 建 立 包 含 所 有 學 生 姓 名 與 其 平 均 成 績 的 VIEW (2) 建 立 VIEW 的 VIEW (3) 透 過 join 所 結 合 的 VIEW 能 否 執 行 insert, update, delete 指 令 (3.1) 有 foreign key 情 況 之 資 料 異 動 結 果 頁 次 :46

47 (3.2) 沒 有 foreign key 情 況 之 資 料 異 動 結 果 (4) 透 過 aggregation 所 結 合 的 VIEW 能 否 執 行 insert, update, delete 指 令 5. 刪 除 視 界 DROP VIEW viewname 練 習 2: (1) 使 用 INFORMATION_SCHEMA.VIEWS 列 出 此 一 資 料 庫 有 哪 一 些 VIEW 表 格 (2) 使 用 INFORMATION_SCHEMA.TABLES 列 出 此 一 資 料 庫 有 哪 一 些 VIEW 表 格 (TABLE_TYPE 欄 位 內 容 :BASE TABLE/VIEW) 頁 次 :47

48 二 十 一 索 引 (Index) 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 對 關 連 式 資 料 庫,INDEX 是 相 當 重 要 的, 系 統 透 過 INDEX 直 接 指 向 我 們 所 需 的 資 料 其 存 在 資 料 庫 內 的 主 要 目 的 是 : 改 善 資 料 的 存 取 速 度 若 設 定 為 唯 一 性 的 索 引, 則 可 強 制 資 料 在 單 一 檔 案 內 的 唯 一 性 (1) 沒 有 INDEX, 資 料 庫 管 理 系 統 必 須 為 找 尋 一 筆 資 料, 而 掃 描 整 個 Table (2) 有 INDEX, 資 料 庫 透 過 管 理 系 統 所 管 理 的 索 引 表, 計 算 出 資 料 儲 存 在 Table 中 的 位 置 後, 直 接 讀 取 出 (3) 系 統 必 須 花 費 時 間 去 更 新 維 護 任 何 INDEX, 所 以 在 產 生 INDEX 之 前 必 須 確 定 需 要 任 何 對 Table 新 增 修 改 和 刪 除 動 作 均 會 觸 發 系 統 更 新 所 屬 的 INDEX, 因 此 越 多 的 INDEX 會 造 成 系 統 效 率 降 低 1. 建 立 新 索 引 檔 CREATE [ UNIQUE ] [ CLUSTERED NONCLUSTERED ] INDEX index_name ON { table view } ( column [ ASC DESC ] [,...n ] ) 索 引 檔 建 立 之 觀 念 : (1) 一 個 檔 案 (Table) 可 以 有 0~n 個 索 引 檔 (2) 索 引 檔 一 定 屬 於 某 一 個 Table (3) 索 引 檔 種 類 包 含 一 般 索 引 與 唯 一 性 索 引 (Unique) 兩 種, 唯 一 性 即 表 示 建 立 該 索 引 之 欄 位 內 容 不 可 重 複 (4) 宣 告 之 主 鍵 (Primary key), 系 統 會 自 動 依 據 主 鍵 欄 位 宣 告 一 個 唯 一 性 索 引 檔 系 統 管 理 者 (DBA) 可 依 實 際 所 需, 手 動 建 立 索 引 檔, 建 立 後 DBMS 會 依 檔 案 內 容 的 異 動 自 行 維 護 索 引 檔, 不 需 人 工 維 護 刪 除 檔 案 時,DBMS 系 會 自 動 刪 除 該 檔 案 所 屬 的 所 有 索 引 檔 (Table) 一 般 索 引 檔 宣 告 語 法 : CREATE INDEX 索 引 檔 名 ON 檔 案 名 稱 ( 欄 位 名 稱, 欄 位 名 稱, ) 唯 一 性 索 引 檔 宣 告 語 法 : CREATE UNIQUE INDEX 索 引 檔 名 ON 檔 案 名 稱 ( 欄 位 名 稱, 欄 位 名 稱, ) *UNIQUE 對 資 料 表 或 檢 視 表 建 立 一 個 唯 一 的 索 引 ( 亦 即 任 何 兩 個 資 料 列 都 不 許 可 有 相 同 索 引 值 的 索 引 ) 建 立 UNIQUE 索 引 時, 會 將 多 個 NULL 值 視 為 重 複 * 排 序 不 是 遞 增 asc 就 是 遞 減 desc, 若 未 註 明, 則 預 設 為 內 定 的 asc column_name 頁 次 :48

49 從 左 至 右 的 順 序 表 示 索 引 主 要 到 次 要 的 順 序 2. 刪 除 索 引 檔 DROP INDEX table.index 註 : 索 引 檔 案 資 訊 記 錄 於 系 統 檔 SYSINDEXES 內, 可 以 透 過 預 儲 程 序 SP_HELPINDEX 獲 知 特 定 某 一 個 表 格 的 索 引 檔, 或 使 用 SP_STATISTICS 列 出 特 定 某 一 個 表 格 索 引 檔 的 較 多 細 節 SP_HELPINDEX student 列 出 student 索 引 檔 的 index 明 細 SP_STATISTICS student 列 出 student 索 引 檔 的 index 明 細 ( 索 引 的 統 計 資 料 ) 頁 次 :49

50 二 十 二 預 儲 程 序 (Stored Procedure) 預 儲 程 序 是 儲 存 在 DBMS 內 的 資 料 庫 物 件, 在 SQL Server 的 預 儲 程 序 中 包 含 了 一 組 Transaction-SQL 敘 述 式 以 便 在 往 後 重 複 使 用 它 們 就 和 其 他 程 式 語 言 的 副 程 式 (subroutine) 及 函 數 (function) 擁 有 相 同 的 作 用 邏 輯 上 來 說, 預 儲 程 序 包 含 了 : (1) 一 個 檔 頭 (Header), 當 中 定 義 了 預 儲 程 序 的 名 稱 輸 入 和 輸 出 參 數, 以 及 一 些 其 他 的 處 理 選 項 你 可 以 把 它 想 像 成 一 個 API(Application Programming Interace) 或 預 儲 程 序 的 宣 告 (2) 一 個 主 體 (Body), 當 中 包 含 了 當 預 儲 程 序 被 呼 叫 時, 所 應 該 執 行 的 Transaction-SQL 敘 述 式 預 儲 程 序 的 檔 頭 和 主 體 是 由 AS 這 個 關 鍵 字 來 區 隔 預 儲 程 序 的 檔 頭 包 含 了 參 數 的 清 單, 而 每 個 參 數 之 間 則 使 用 逗 號 "," 加 以 區 隔 每 個 參 數 的 定 義 都 包 含 了 一 個 識 別 項 和 資 料 型 別 參 數 的 識 別 項 必 須 字 元 做 為 開 頭 1. 建 立 預 儲 程 序 語 法 : CREATE PROC[EDURE] procedure_name [{@parameter data_type} [ = default] [OUTPUT] ] [, n] AS sql-statement [ n] 範 例 : create proc varchar(50) as select * from bib where title=@tit 此 範 例 建 立 一 個 叫 做 gettitle 的 預 儲 程 序, 當 中 包 含 了 一 個 輸 入 參 數 當 gettitle 執 行 時, 它 會 傳 回 一 個 結 果 集 (resultset), 當 中 包 含 了 所 有 在 Bib 檔 案 中,Title 資 料 行 的 值 對 於 輸 入 參 數 的 所 有 紀 錄 預 儲 程 序 比 較 不 一 樣 的 地 方 是 它 們 的 實 際 設 計 預 儲 程 序 事 實 上 是 用 來 建 立 預 儲 程 序 的 Transact-SQL 敘 述 在 其 他 的 程 式 員 中, 程 序 只 是 列 出 所 有 的 動 作, 而 不 會 建 立 任 何 東 西 在 SQL Server 中, 預 儲 程 序 實 際 上 建 立 了 他 們 本 身 2. 刪 除 預 儲 程 序 Drop Proc gettitle 頁 次 :50

51 3. 修 改 預 儲 程 序 修 改 預 儲 程 序 的 一 種 方 式 是 重 新 建 立, 另 一 種 方 式 則 是 使 用 ALTER PROCEDURE 敘 述 來 修 改 預 儲 程 序 (1) 使 用 刪 除 在 新 增 方 式 : Drop proc gettitle go create proc int as select * from bib where price 如 果 不 確 定 一 個 預 儲 程 序 是 否 存 在 時, 可 以 先 撰 寫 一 段 程 式 來 加 以 檢 查 如 果 不 這 麼 做 的 話, 當 在 刪 除 一 個 並 不 存 在 的 預 儲 程 序 時,SQL Server 將 會 產 生 一 個 錯 誤 訊 息 if exists (select * from sysobjects where id=object_id('gettitle') and OBJECTPROPERTY(id,'isProcedure')=1) Drop proc gettitle go create proc int as select * from bib where price (1) 使 用 修 改 方 式 : Alter proc int as select * from bib where price 頁 次 :51

52 4. 呼 叫 預 儲 程 序 預 儲 程 序 的 主 要 目 的 之 一 就 是 以 有 用 的 格 式, 而 從 SQL Server 的 資 料 庫 中 傳 回 資 訊 Execute gettitle 400 Execute( 可 省 略 為 exec) 關 鍵 字 後 面 出 現 的 就 是 預 儲 程 序 的 名 稱 由 於 上 述 這 個 預 儲 程 序 只 需 要 一 個 參 數, 我 們 必 須 把 它 加 入 在 預 儲 程 序 之 後 create proc Varchar(20) AS select * from ProductOrder where OrderDate and ShipCountry exec getorder '1997/8/1', 'USA' 上 述 這 個 預 儲 程 序 範 例 在 執 行 時, 需 要 兩 個 參 數 : 一 個 是 日 期, 一 個 是 字 串, 所 以 我 們 必 須 在 參 數 內 容 的 前 後 加 上 單 引 號 註 : 預 儲 程 序 名 稱 儲 存 在 sysobjects 系 統 資 料 表 中, 而 CREATE PROCEDURE 陳 述 式 的 文 字 則 儲 存 於 syscomments 中 可 以 透 過 系 統 內 建 的 預 儲 程 序 sp_stored_procedures 獲 知 此 一 資 料 庫 已 宣 告 的 預 儲 程 序 清 單 SP_STORED_PROCEDURES 頁 次 :52

53 二 十 三 觸 發 程 序 (Trigger) 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) CREATE TRIGGER trigger_name ON tablename FOR [DELETE, INSERT, UPDATE] AS SET NOCOUNT ON VARCHAR(10) = (SELECT seq_id FROM Inserted) UPDATE TableName2 set counter=counter+1 where seq_id 以 上 就 是 做 : 當 表 格 有 任 何 資 料 插 入, 則 去 另 一 表 格 對 應 欄 位 去 累 加 頁 次 :53

54 二 十 四 資 料 庫 設 計 概 念 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 1. 正 規 化 法 (Normalization) 一 般 在 設 計 資 料 庫 時, 正 規 化 (Normalize) 是 必 經 過 程, 它 可 以 儘 可 能 減 少 資 料 重 覆 問 題 一 旦 消 除 了 大 部 分 的 資 料 重 覆 問 題, 卻 衍 生 出 另 一 個 問 題 : 即 資 料 查 詢 速 度 變 慢! 通 常 正 規 化, 我 們 會 將 資 料 表 由 一 個 細 分 成 數 個 表 格, 若 要 找 出 其 中 一 筆 資 料, 很 可 能 需 要 join 相 關 表 格, 而 join 動 作, 將 直 接 影 響 系 統 效 率, 造 成 查 詢 速 度 變 慢 以 一 步 步 正 規 化 組 織 之 檔 案 資 料 以 設 計 資 料 庫 之 方 法, 將 資 料 庫 的 Table 分 解 為 較 小 的 Table 直 到 每 個 Table 的 每 個 欄 位 都 依 賴 該 Table 的 主 鍵 目 的 : 清 除 不 一 致 性 (Consistency) /* 指 資 料 之 異 動 */ (1) 第 一 正 規 化 (First Normal Form): 一 筆 記 錄 沒 有 重 覆 的 資 料 項 第 一 正 規 化 的 表 格 必 須 合 以 下 條 件 : 1. 必 須 為 row-column 的 二 維 式 table 2. table 的 每 一 筆 資 料 (row) 只 描 述 一 件 事 情 3. 每 一 欄 位 只 含 有 單 一 事 物 的 特 性 ( 欄 位 的 唯 一 性 ) 4. 每 一 筆 row 的 欄 位 內 只 允 許 存 放 單 一 值 5. 每 個 欄 位 名 稱 必 須 是 獨 一 無 二 的 6. 沒 有 任 何 兩 筆 資 料 是 相 同 的 7. row 或 欄 位 的 先 後 順 予 是 無 關 緊 要 的 結 論 : 降 低 重 複 性 (redundancy) /* 指 資 料 之 儲 存 */ (2) 第 二 正 規 化 (Second Normal Form): 已 1NF, 且 記 錄 中 每 筆 資 料 可 由 主 鍵 單 一 辨 視, 但 不 能 由 部 份 主 鍵 來 辨 識 結 論 : 消 除 功 能 相 依 (Functional Dependency) 所 謂 功 能 相 依 是 指 表 格 和 表 格 之 間 的 相 互 關 係, 若 某 個 表 格 中 有 兩 個 欄 位 A 及 B, 當 A 欄 位 值 可 推 導 出 B 欄 位 值, 稱 功 能 相 依 性 即 若 一 關 連 R, 其 屬 性 Y 功 能 相 關 於 屬 性 X, 記 作 R.X R.Y; 若 且 唯 若 R 中 有 二 個 X 值 相 同 時, 其 Y 值 亦 相 同 (3) 第 三 正 規 化 (Third Normal Form): 已 2NF, 且 所 有 和 主 鍵 無 關 之 資 料 項 彼 此 間 獨 立 結 論 : 消 除 遞 移 相 依 (Transitive Dependency) 並 連 結 主 檔 所 謂 遞 移 相 依 是 指 在 一 個 表 格 中, 如 果 某 一 欄 位 值 可 決 定 其 他 欄 位 值, 但 這 些 欄 位 中 又 存 在 某 一 欄 位 可 以 決 定 剩 餘 欄 位 值, 稱 遞 移 相 依 性 若 有 上 述 情 況 存 在, 在 刪 除 資 料 時, 可 能 會 造 成 其 他 資 料 損 毀 若 R.A R.B 且 R.B R.C, 則 R.A R.C 成 立, 此 種 相 關 性 稱 為 遞 移 相 依 頁 次 :54

55 除 此 之 外, 還 有 Boyce-Codd 及 第 四 第 五 種 正 規 化 格 式, 但 實 務 上 不 常 發 生 Boyce-Codd 正 規 化 : 將 多 個 候 選 鍵 中 挑 出 一 個 決 定 因 子 作 為 主 鍵 4NF : 去 除 多 值 相 依 性 5NF : 克 服 合 併 相 依 性 [ 練 習 ] 1. 假 設, 欲 建 立 商 品 銷 售 資 料 庫, 於 需 求 分 析 後 客 戶 購 買 細 目 應 包 含 之 資 料 範 例 摘 錄 如 下 表 所 示 : 客 戶 姓 名 地 址 電 話 客 戶 類 型 說 商 品 商 品 名 商 品 實 際 購 買 購 買 日 期 時 間 編 號 類 型 明 代 碼 稱 定 價 售 價 數 量 A001 張 三 台 北 市 文 N 普 級 11 雞 精 May 2003 山 區 XX 路 維 他 命 Jul 2003 A002 李 四 台 北 市 士 N 普 級 11 雞 精 Jul 2003 林 區 XX 路 12 魚 肝 油 Oct 維 他 命 Oct 雞 精 Nov 2003 A003 王 五 台 北 縣 XX G 金 級 12 魚 肝 油 Jun 200 路 A004 錢 六 新 莊 市 XX V 白 金 級 12 魚 肝 油 Jul 2003 路 維 他 命 Sep 2003 A005 趙 七 台 北 市 景 美 區 XX 街 G 金 級 11 雞 精 Jan 奶 粉 Dec 2003 請 標 示 出 第 一 第 二 第 三 正 規 化 之 結 果 頁 次 :55

56 2. 欲 建 立 圖 書 館 流 通 作 業, 於 使 用 者 需 求 分 析 後 借 閱 資 料 應 包 含 之 資 料 範 例 如 下 表 所 示, 設 計 下 列 訂 單 之 資 料 庫 檔 案 : ( 可 分 別 假 設 還 書 後 是 否 清 除 借 閱 紀 錄 ) 讀 者 讀 者 讀 者 系 所 系 所 說 明 讀 者 類 型 借 閱 資 料 書 目 書 名 作 者 借 閱 日 期 應 還 日 期 編 號 姓 名 系 所 代 碼 ( 全 稱 ) 類 型 說 明 編 號 編 號 ( 登 錄 號 ) A001 張 三 資 傳 IC A002 李 四 會 計 AC 資 訊 傳 播 學 系 會 計 及 國 際 貿 易 學 系 C 大 學 職 場 導 向 張 三 21 May Jul 2002 生 資 料 庫 理 論 李 四 21 May Jul 2002 T 老 師 職 場 導 向 張 三 18 Jul Sep 程 式 設 計 王 五 20 Jul Sep XML 與 錢 六 20 Jul Sep 2002 JAVA 密 碼 學 趙 七 20 Jul Sep 2002 A003 王 五 資 管 IM 資 訊 管 理 U 研 究 程 式 設 計 王 五 05 Jun Jul 2002 學 系 生 A004 錢 六 資 管 IM 資 訊 管 理 學 系 T 老 師 程 式 設 計 王 五 10 Jun Aug 密 碼 學 趙 七 10 Jun Aug 一 美 容 公 司, 希 望 規 劃 一 個 客 戶 資 料 管 理 的 系 統 包 括 記 錄 客 戶 的 姓 名 生 日 地 址 與 性 別 以 及 客 戶 的 子 女 姓 名 生 日 與 性 別 希 望 能 藉 以 管 理 客 戶 在 公 司 的 編 號 消 費 總 金 額 何 時 到 店 內 做 過 何 種 保 養, 以 及 該 次 保 養 的 花 費 與 美 容 師 名 字 請 規 劃 出 此 一 系 統 的 資 料 庫 檔 案 與 欄 位, 並 予 以 正 規 化 後, 畫 出 其 實 體 關 係 圖 ( 假 設 每 次 保 養 只 由 一 位 美 容 師 負 責 ) 頁 次 :56

57 二 十 五 資 料 庫 設 計 分 析 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) 資 料 庫 設 計 是 在 某 特 定 的 使 用 者 環 境 及 應 用 中, 進 行 資 料 庫 結 構 的 設 計 工 作, 以 期 能 滿 足 使 用 者 所 有 應 用 過 程 的 資 訊 需 求 (Batini, et al, 1986) 一 般 而 言, 資 料 庫 設 計 可 分 為 四 個 階 段 : 1. 資 料 需 求 的 規 格 涉 及 到 不 同 使 用 者 及 群 體 有 關 資 訊 需 求 的 確 認 2. 觀 念 設 計 (Conceptual design) 對 使 用 者 及 應 用 系 統 的 資 訊 觀 點 進 行 模 型 的 建 立, 亦 即 建 立 實 體 - 關 係 模 型 (Entity-Relation model, 簡 稱 ER model) 或 UML 的 類 別 關 係, 同 時 亦 包 括 資 料 如 何 處 理 如 何 使 用 的 設 計 3. 邏 輯 設 計 (Logical design) 在 邏 輯 設 計 階 段 中, 係 將 觀 念 架 構 轉 換 成 所 選 定 的 DBMS 之 邏 輯 資 料 模 式 邏 輯 設 計 的 結 果 可 產 生 邏 輯 架 構 (schema), 早 期 可 能 是 關 聯 式 網 狀 式 或 階 層 式 的 邏 輯 架 構 中 的 一 種, 不 過 現 今 主 要 均 是 關 聯 式 資 料 庫 4. 實 體 設 計 (Physical design) 將 邏 輯 資 料 模 式 轉 換 成 某 特 定 硬 體 及 所 選 用 的 DBMS 所 適 用 的 形 式 實 體 設 計 係 決 定 資 料 儲 存 的 結 構 及 檢 索 的 路 徑 實 體 設 計 的 結 果 可 產 生 實 體 架 構, 包 括 儲 存 的 表 示 (representation) 檢 索 路 徑 及 績 效 最 佳 化 的 參 數 值 ( 一 ) 傳 統 方 式 : 1. 系 統 需 求 說 明 : 說 明 軟 硬 體 設 備 與 使 用 環 境 之 需 求 2. 系 統 架 構 圖 : 以 全 觀 (overall) 的 方 式 描 述 系 統 整 體 3. 環 境 圖 : 環 境 圖 是 定 義 與 系 統 有 關 的 外 部 實 體 及 系 統 與 這 些 外 部 實 體 的 介 面 4. 資 料 流 程 圖 (Data Flow Diagram, DFD): 資 料 流 程 圖 是 結 構 化 資 訊 系 統 分 析 的 主 要 工 具, 將 一 組 處 理 或 程 序 的 邏 輯 資 料 流 程 記 錄 成 文 件, 包 括 資 料 的 外 部 來 源 和 目 的 地 轉 換 資 料 的 活 動, 以 及 保 留 資 料 的 儲 存 區 或 集 合 它 表 達 出 使 用 者 的 功 能 處 理 需 求, 以 及 功 能 處 理 項 目 間 資 料 的 流 出 與 流 入 系 統 資 料 的 邏 輯 轉 換 功 能 因 此, 從 資 料 流 程 圖 中, 可 以 了 解 各 項 外 部 實 體 的 資 料 流 通 介 面, 並 且 知 道 需 要 那 些 資 料 儲 存 處 可 用 來 儲 存 資 料, 以 支 援 處 理 過 程 所 需 的 資 料 或 所 產 生 的 資 料 資 料 流 程 圖 (Data Flow Diagram,DFD) 主 要 有 二 種 目 的 : (1) 顯 示 資 料 在 系 統 中 的 流 向,(2) 描 述 處 理 資 料 流 程 的 功 能 項 目 通 常 我 們 用 資 料 流 來 表 示 程 式 中 各 個 敘 述 之 間 所 傳 遞 的 訊 息, 資 料 流 程 圖 則 是 將 這 個 傳 遞 的 關 係 以 圖 形 來 表 示, 通 常 它 以 類 似 網 路 的 結 構 來 表 示 一 個 系 統, 頁 次 :57

58 DFD 包 含 了 四 個 項 目 : (1) 資 料 流 : 以 箭 頭 來 表 示 (2) 處 理 單 元 : 以 圓 圈 來 表 示 (3) 檔 案 : 以 直 線 三 邊 方 框 來 表 示 資 料 庫 系 統 授 課 講 義 ( 世 新 資 傳 系 Seljuk) (4) 外 部 實 體 : 資 料 來 源 和 去 處, 以 矩 形 來 表 示 EN_TOPIC 選 擇 檢 索 項 輸 入 查 詢 內 容 依 據 EN_INDEX 判 斷 需 查 詢 的 索 引 點 AUTHORITY EN_INDEX 判 斷 是 否 符 合 AUTHORITY 檔 使 用 Widecard 不 處 理 關 鍵 字 查 詢 Y ( 完 全 符 合 查 詢 ) N ( 關 鍵 詞 查 詢 ) 顯 示 結 果 [ 條 列 式 ] 選 擇 顯 示 格 式 PARAM_SYNONYM EN_FORMAT EN_DISPLAY 取 同 義 詞 查 詢 METAKWD EN_LIST 反 正 規 檔 ( 加 快 顯 示 速 度 ) 有 找 到 資 料 沒 找 到 資 料 顯 示 結 果 [ 內 容 ] METAKWD_MRN 顯 示 無 符 合 的 資 料 選 擇 確 認 顯 示 結 果 傳 回 MRN 供 呼 叫 之 程 式 處 理 5. 資 料 字 典 : 使 用 在 資 料 庫 上 描 述 資 料 庫 結 構 與 表 格 欄 位 的 名 稱 內 容 與 格 式 等 資 料 的 定 義 系 統 名 稱 : 線 上 考 試 與 查 詢 系 統 日 期 :2001 Feb 02 檔 案 名 稱 : 使 用 者 基 本 資 料 檔 檔 案 組 織 : 索 引 循 序 檔 資 料 元 素 名 稱 中 文 英 文 帳 號 Sid 文 字 7 密 碼 PW 文 字 8 姓 名 Sname 文 字 10 性 別 Sex 文 字 2 主 鍵 值 : 帳 號 項 次 :1/6 型 態 長 度 小 數 點 備 註 頁 次 :58

59 E_mail 文 字 30 電 話 Tel 數 字 14 住 址 Address 文 字 60 年 級 Grade 文 字 2 班 級 Class 文 字 2 6 實 體 關 係 圖 (Entity-relationship diagram, ERD) 描 述 資 料 物 件 之 間 的 關 係 在 ERD 中 使 用 data object description 描 述 各 資 料 物 件 的 屬 性 ERD- 使 用 圖 形 方 式 標 示 資 料 物 件 之 間 的 關 係 (1) 資 料 物 件 軟 體 必 須 了 解 的 任 何 綜 合 資 訊 (2) 屬 性 資 料 物 件 的 特 性, 通 常 具 有 三 種 特 性 (a) 資 料 物 件 實 體 的 名 稱 實 體 的 描 述 與 其 他 表 格 中 實 體 的 關 聯 性 (b) 必 須 使 用 一 個 或 一 個 以 上 的 屬 性 用 來 標 示 此 一 資 料 物 件 的 實 體 (c) 關 係 資 料 物 件 之 間 的 結 合 關 係 (3) 資 料 物 間 之 間 使 用 的 兩 個 標 示 (Martin/Odell) (a)cardinality 數 集 是 列 舉 出 一 個 物 件 與 另 一 物 件 間 相 關 的 最 大 數 量 1 對 1(1:1) 1 對 多 (1:N) 多 對 多 (M:N) (b)modality 必 備 關 係, 當 物 件 之 間 並 無 關 係 存 在 或 關 係 並 非 強 制 性 時, 其 關 係 的 modality 為 零 (zero) Cardinality Modality 1..N 0..N (4) 圖 示 : 頁 次 :59

60 (5) 範 例 ( 二 ) 標 準 方 式 : 統 一 塑 模 語 言 (Unified Modeling Language, UML) UML 是 由 三 位 世 界 級 物 件 技 術 大 師,James Rumbaugh Grady Booch 和 提 出 OOSE (Object-Oriented Software Engineering) 方 法 的 Ivar Jacobson 所 其 同 研 究 開 發 出 來 的 物 件 導 向 分 析 與 設 計 的 標 準 語 言 過 去 由 於 軟 體 業 界 沒 有 一 個 共 通 的 物 件 導 向 分 析 與 設 計 的 標 準, 因 此 不 同 的 開 發 者 及 使 用 者 間, 要 進 行 溝 通 是 一 件 很 困 難 的 事 情 UML, 就 是 為 了 要 把 軟 體 開 發 初 期 所 進 行 的 物 件 導 向 分 析 與 設 計, 用 一 套 大 家 皆 遵 循 的 標 準 化 語 言 來 開 立 規 格, 並 且 利 用 圖 示 法 (Notation) 表 達 來 建 立 及 保 存 一 個 完 善 的 文 件 紀 錄 因 此, 將 開 發 軟 體 系 統 初 期 所 必 須 進 行 的 物 件 分 析 與 設 計, 用 一 套 標 準 化 的 使 用 UML 來 建 立 規 格, 並 且 利 用 圖 示 法 表 達 來 建 立 架 構 和 做 文 件 紀 錄, 運 用 以 元 件 為 基 礎 的 物 件 導 向 技 術 來 開 發 軟 體 UML 總 共 從 五 種 觀 點 定 義 了 九 種 不 同 的 圖 形, 分 別 是 使 用 者 觀 點 的 使 用 者 案 例 圖 (Use Case Diagram); 結 構 觀 點 的 類 別 圖 (Class Diagram) 物 件 圖 (Object Diagram); 行 為 觀 點 的 循 序 圖 (Sequence Diagram) 合 作 圖 (Collaboration Diagram) 狀 態 圖 (State Diagram) 活 動 圖 (Activity Diagram); 實 作 觀 點 的 元 件 圖 (Component Diagram) 以 及 環 境 觀 點 的 部 署 圖 (Deployment Diagram) 以 便 從 各 種 不 同 的 角 度 將 概 念 透 過 符 號 表 示, 並 將 概 念 間 的 相 互 關 係 藉 由 符 號 的 路 徑 來 描 繪 出 整 個 系 統 頁 次 :60

61 以 類 別 圖 (Class diagram) 表 示 學 校 學 生 老 師 系 所 課 程 之 關 係 圖 如 下 : 在 軟 體 系 統 裡 面, 透 過 程 式 語 言 可 以 將 各 種 非 軟 體 的 概 念 性 事 務 與 程 式 設 計 作 對 照, 像 客 戶 交 易 或 是 對 話 等 1. 類 別 2. 關 係 (Relationship) (1) 相 依 關 係 (dependency) 頁 次 :61

62 Dependency 是 一 種 使 用 關 係, 它 代 表 某 一 事 物 (event 類 別 ) 規 格 的 改 變 有 可 能 會 影 響 到 另 一 個 使 用 該 事 物 的 事 物 (Window 類 別 ) 規 格 但 反 過 來 則 不 見 的 成 立 當 需 要 表 現 某 一 個 事 物 使 用 另 一 個 事 物 時, 就 可 以 利 用 dependency 來 表 現 (2) 一 般 化 關 係 (generalization) generalization 是 一 般 性 事 物 ( 父 類 別 ) 和 其 特 殊 性 事 物 ( 子 類 別 ) 之 間 的 關 係 每 一 個 類 別 均 可 以 具 有 零 個 一 個 或 多 個 父 類 別 只 要 是 沒 有 父 類 別 但 具 有 一 個 或 多 個 子 類 別 的 類 別 就 稱 之 為 根 類 別 (root class) 或 基 底 類 別 (base class); 而 沒 有 子 類 別 的 類 別 稱 為 葉 類 別 (leaf class) 而 只 有 單 一 父 類 別 的 類 別, 稱 此 兩 類 別 之 關 係 為 單 一 繼 承 (single inheritance); 而 有 多 個 父 類 別 的 繼 承 則 稱 為 多 重 繼 承 (multiple inheritance) (3) 結 合 關 係 (association) Association 是 一 種 結 構 關 係, 它 可 以 訂 定 某 一 種 事 物 的 物 件 是 如 何 與 另 一 種 事 物 的 物 件 之 間 互 相 連 接 的 名 稱 (name) 每 一 種 結 合 關 係 都 可 以 具 有 名 稱, 透 過 此 一 名 稱 可 以 描 述 這 種 結 合 的 本 質, 亦 可 使 此 一 結 合 關 係 比 較 清 楚 角 色 (role) 頁 次 :62

63 當 某 一 個 類 別 參 與 結 合 關 係 時, 它 就 會 在 此 結 合 關 係 理 扮 演 某 種 角 色 角 色 所 代 表 的 其 實 就 是 在 結 合 關 係 一 端 的 類 別 對 另 一 端 類 別 所 呈 現 出 來 的 一 面 如 圖 Person 和 Company 在 此 一 結 合 關 係 裡, 分 別 扮 演 了 員 工 (employee) 和 雇 主 (employeeloyer) 的 角 色 多 重 性 / 數 集 (multiplicity) 結 合 關 係 代 表 了 物 件 之 間 的 結 構 關 係, 有 時 我 們 進 行 塑 模 時 必 須 要 描 述 出 有 幾 個 物 件 慧 根 每 一 個 實 例 相 結 合, 其 中 有 幾 個 物 件 就 是 結 合 關 係 裡 的 multiplicity, 這 種 多 重 性 可 以 使 用 單 一 值 或 某 一 區 間 值 來 表 示 當 在 association 某 一 端 指 定 該 物 件 的 multiplicity 時, 同 樣 地 也 必 須 指 定 另 一 端 會 有 幾 個 物 件 與 之 對 應 指 定 的 關 係 可 以 是 唯 一 (1) 零 到 一 (0..1) 零 到 多 (0..*) 一 到 多 (1..*), 甚 至 固 定 一 個 數, 例 如 3 聚 合 關 係 (aggregation) 一 般 的 結 合 關 係 是 由 兩 個 類 別 所 組 成, 且 兩 者 之 間 在 概 念 上 是 屬 於 同 一 層 級 的, 不 會 有 哪 一 個 類 別 比 另 一 個 重 要 但 有 時 會 有 需 要 塑 造 整 體 和 部 分 的 關 係, 在 這 種 關 係 裡 面 會 有 一 個 類 別 是 較 大 的 事 物 ( 整 體 ), 這 個 事 物 是 由 較 小 的 事 物 ( 部 分 ) 所 構 成 的, 而 這 種 關 係 稱 之 為 aggregation, 所 代 表 的 是 一 種 包 含 關 係 (has-a relationship) 頁 次 :63

64 [ 練 習 ] 1. 設 計 下 列 之 資 料 庫 檔 案 : 因 應 SARS, 政 府 規 定 機 場 需 建 立 各 航 班 旅 客 資 料, 建 立 內 容 如 下 : [ 其 中 國 別 地 點 需 自 行 另 建 立 代 碼 檔 ] 航 班 到 港 旅 客 資 訊 紀 錄 表 航 班 資 料 航 空 公 航 空 公 公 司 國 別 航 班 編 號 起 始 地 點 到 達 地 點 飛 機 機 型 機 型 名 稱 最 大 載 客 量 抵 達 日 期 司 代 碼 司 名 稱 CN 中 華 航 twn CN520 MACAU TAIPE B747 波 音 廣 體 /5/10 空 747 乘 客 資 料 # 護 照 號 碼 姓 名 國 別 性 別 出 生 年 月 日 1. M Brown twn M 1955/07/03 2. M Mary twn F 1960/04/21 3. M John jpn M 1970/02/28 [ 假 設 每 航 班 每 日 到 港 最 多 一 次 ] 請 : 1. 分 別 標 示 出 第 一 第 二 第 三 正 規 化 之 結 果 2. 依 據 UML 之 類 別 圖 繪 出 其 檔 案 結 構 3. 以 SQL 宣 告 檔 案 (tables) 之 建 立, 並 宣 告 所 需 建 立 之 主 鍵 外 來 鍵 與 索 引 檔 (index tables) 4. 請 將 範 例 之 資 料 加 入 你 所 建 立 的 檔 案 內 ( 每 一 個 table 各 輸 入 一 筆 記 錄 即 可 ) 5. 依 範 例 輸 出 之 內 容 建 立 一 個 View 檔 6. 刪 除 2003/5/1~2003/5/30 所 有 航 班 的 乘 客 資 料 ( 注 意 有 無 on delete cascade, 不 要 多 刪, 也 不 要 少 刪 ) 頁 次 :64

65 頁 次 :65

Database講義.docx

Database講義.docx 一 資 料 庫 系 統 資 料 庫 系 統 授 課 講 義 (Shien-chiang Yu) 在 一 個 資 料 庫 系 統 (Database System) 中 可 分 為 資 料 庫 (Database) 與 資 料 庫 管 理 系 統 (Database Management System, DBMS) 兩 個 部 份 資 料 庫 簡 單 的 說 就 是 一 群 經 過 電 腦 整 合 後

More information

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘 ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client

More information

untitled

untitled Database System Principle Database System Principle 1 SQL 3.1 SQL 3.2-3.3 3.4 3.5 3.6 Database System Principle 2 3.1 SQL SQL Structured Query Language SQL Database System Principle 3 SQL 3.1.1 SQL 3.1.2

More information

untitled

untitled OO 1 SQL Server 2000 2 SQL Server 2000 3 SQL Server 2000 DDL 1 2 3 DML 1 INSERT 2 DELETE 3 UPDATE SELECT DCL 1 SQL Server 2 3 GRANT REVOKE 1 2 1 2 3 4 5 6 1 SQL Server 2000 SQL Server SQL / Microsoft SQL

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 1/54 数 据 库 系 统 基 础 哈 尔 滨 工 业 大 学 2011.~2012. 数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 3/54 第 6 章 数 据 库 管 理 与 维 护 6.1 数 据 库 管 理 员 的 基 本 职 责 6.2 数 据 库 存 储 与 性 能 管 理 6.3 数 据 库

More information

untitled

untitled http://idc.hust.edu.cn/~rxli/ 1.1 1.2 1.3 1.4 1.5 1.6 2 1.1 1.1.1 1.1.2 1.1.3 3 1.1.1 Data (0005794, 601,, 1, 1948.03.26, 01) (,,,,,) 4 1.1.1 Database DB 5 1.1.1 (DBMS) DDL ( Create, Drop, Alter) DML(

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

习题1

习题1 习 题 1 数 据 库 系 统 基 本 概 念 1.1 名 词 解 释 DB DB 是 长 期 存 储 在 计 算 机 内 有 组 织 的 统 一 管 理 的 相 关 数 据 的 集 合 DB 能 为 各 种 用 户 共 享, 具 有 较 小 冗 余 度 数 据 间 联 系 紧 密 而 又 有 较 高 的 数 据 独 立 性 等 特 点 DBMS 是 位 于 用 户 与 操 作 系 统 之 间 的

More information

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S 9 DB2 优化器 DB2 SQL select c1 c2 from ( DB2 )??? DB2?!?, no no DB2 I/O ( transrate overhead ) SQL DML (INSERT UPDATE DELETE) DB2 (access plan) DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( 728 747 ) SQL

More information

123

123 資 訊 管 理 系 資 料 庫 教 學 帄 台 MTA 資 料 庫 國 際 證 照 題 庫 分 析 指 導 教 授 : 馮 曼 琳 教 授 組 員 名 單 : 陳 雅 紋 學 號 998C030 蔡 宥 為 學 號 998C114 陳 韋 婷 學 號 998C168 中 華 民 國 一 零 三 年 五 月 I 誌 謝 本 專 題 報 告 得 以 順 利 完 成, 首 先 要 感 謝 恩 師 馮 曼

More information

幻灯片 1

幻灯片 1 沈 阳 工 业 大 学 2014 年 6 月 第 7 章 数 据 库 技 术 基 础 主 要 内 容 : 7.1 数 据 库 概 述 数 据 库 基 本 概 念 数 据 模 型 逻 辑 数 据 模 型 数 据 库 系 统 的 产 生 和 发 展 常 用 的 数 据 库 管 理 系 统 7.2 Access 2010 数 据 库 创 建 及 维 护 创 建 Access 2010 数 据 库 创 建

More information

ebook 165-5

ebook 165-5 3 5 6 7 8 9 [ 3. 3 ] 3. 3 S Q L S Q 4. 21 S Q L S Q L 4 S Q 5 5.1 3 ( ) 78 5-1 3-8 - r e l a t i o n t u p l e c a r d i n a l i t y a t t r i b u t e d e g r e e d o m a i n primary key 5-1 3 5-1 S #

More information

Oracle Database 10g: SQL (OCE) 的第一堂課

Oracle Database 10g: SQL (OCE) 的第一堂課 商 用 資 料 庫 的 第 一 堂 課 中 華 大 學 資 訊 管 理 系 助 理 教 授 李 之 中 http://www.chu.edu.tw/~leecc 甲 骨 文 俱 樂 部 @Taiwan Facebook 社 團 https://www.facebook.com/groups/365923576787041/ 2014/09/15 問 題 一 大 三 了, 你 為 什 麼 還 在 這

More information

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w 1 1.1 D B M S To w e r C D 1. 1 968 I B M I M S 2 0 70 Cullinet Software I D M S I M S C O D A S Y L 1971 I D M S containing hierarchy I M S I D M S I M S I B M I M S I D M S 2 2. 18 R D B M S O R D B

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

第4单元 创建数据类型和表

第4单元  创建数据类型和表 138 MCSE 2000 SQL 2000 8.1 Stored Procedures Microsoft SQL Server 2000 ( ) 8.1.1 Transact-SQL SQL Server (System Stored Procedures,sp_), master ( sp_prefix ) (Local Stored Procedures), (Temporary Stored

More information

Microsoft PowerPoint - Ch6

Microsoft PowerPoint - Ch6 第 六 章 基 本 的 SQL 目 的 SQL 的 關 聯 模 式 SQL 的 資 料 定 義 語 言 CREATE TABLE DROP TABLE ALTER TABLE 基 本 的 SQL 查 詢 SELECT FROM WHERE SQL 的 更 新 INSERT UPDATE DELETE 6-1 目 的 關 聯 模 式 定 義 嚴 謹 簡 潔, 但 好 用 性 和 執 行 效 率 必 須

More information

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa 6 01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS 6-1 06 228 6-1 SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysadmin 6-1 SQL Server 2008 SSIS SQL Server (dbo) master

More information

Microsoft Word - 序+目錄.doc

Microsoft Word - 序+目錄.doc ORACLE 公 司 的 專 業 認 證 是 當 今 市 場 上 公 認 價 值 最 高, 最 具 鑑 別 力 的 認 證 目 前 全 球 有 超 過 50 萬 以 上 人 已 透 過 Oracle Certification Program 取 得 專 業 認 證, 成 為 職 場 新 鮮 人 的 首 選 認 證, 它 具 有 以 下 三 大 優 勢 : 一 更 多 的 工 作 機 會, 二 更

More information

untitled

untitled Chapter 01 1.0... 1-2 1.1... 1-2 1.1.1...1-2 1.1.2...1-4 1.1.2.1... 1-6 1.1.2.2... 1-7 1.1.2.3... 1-7 1.1.2.4... 1-7 1.1.2.5... 1-8 1.1.2.6... 1-8 1.1.3??...1-8 1.1.4...1-9 1.2...1-12 1.3...1-14 1.4...1-17

More information

國家圖書館典藏電子全文

國家圖書館典藏電子全文 EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

untitled

untitled 21 Visual FoxPro Visual FoxPro 6.0 11 Visual FoxPro Visual FoxPro CIP Visual FoxPro 2004 21 ISBN 7-03-014834-7 V Visual FoxPro TP311.138 CIP 2004 143035 16 100717 http://www.sciencep.com * 2004 12 7871092

More information

未命名

未命名 附录三 ADS- MySQL 基础语法偏表 类别语法偏类 MySQL 语法 ADS 语法备注 型 Utility DESCRIBE {DESCRIBE DESC} tbl_name [col_name wild] {DESCRIBE DESC} dbname.tbl_name EXPLAIN 负偏 {EXPLAIN} [explain_type] explainable_stmt {EXPLAIN}

More information

( Version 0.4 ) 1

( Version 0.4 ) 1 ( Version 0.4 ) 1 3 3.... 3 3 5.... 9 10 12 Entities-Relationship Model. 13 14 15.. 17 2 ( ) version 0.3 Int TextVarchar byte byte byte 3 Id Int 20 Name Surname Varchar 20 Forename Varchar 20 Alternate

More information

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S 一 個 SQL Injection 實 例 的 啟 示 頁 1 / 6 你 的 網 站 在 裸 奔 嗎? 一 個 SQL Injection 實 例 的 啟 示 作 者 : 李 明 儒 SQL Injection( 資 料 隱 碼 攻 擊 ) 問 題 早 就 不 是 什 麼 新 聞, 但 前 陣 子 在 一 個 頗 具 知 名 度 的 活 動 網 站 上, 赫 然 發 現 它 大 刺 刺 地 現 身!

More information

ebook10-5

ebook10-5 Oracle 7.x RDBMS 5 Oracle S Y S S Y S T E M O r a c l e 5.1 O r a c l e R D B M S O r a c l e O r a c l e 5.2 SYS SYSTEM S Y S S Y S T E M O r a c l e S Y S V $ D B A C O N N E C T R E S O U R C E S Y

More information

SQL: Interactive Queries (2)

SQL: Interactive Queries (2) SQL: Interactive Queries (2) Prof. Weining Zhang Cs.utsa.edu Aggregate Functions Functions that take a set of tuples and compute an aggregated value. Five standard functions: count, min, max, avg, sum

More information

PowerPoint Presentation

PowerPoint Presentation 数 据 库 培 训 项 目 研 究 Oracle 索 引 探 究 B*tree 索 引 与 位 图 索 引 的 特 点 作 者 : 赵 超 2008 年 12 月 18 日 实 验 环 境 Windows-server2003 内 存 :2G Oracle 10.2.0 ORACLE_SID=orcl 索 引 类 型 B*tree 索 引 ( 默 认 方 式 ) 位 图 索 引 (bitmap) 反

More information

MySQL資料庫教學

MySQL資料庫教學 SQL: 結 構 化 查 詢 語 言 國 立 聯 合 大 學 資 訊 管 理 學 系 陳 士 杰 老 師 Outlines Database Languages SQL 資 料 型 態 Data Query Language, DQL ( 資 料 查 詢 語 言 ) Data Definition Language, DDL ( 資 料 定 義 語 言 ) Data Manipulation Language,

More information

「人名權威檔」資料庫欄位建置表

「人名權威檔」資料庫欄位建置表 ( version 0.2) 1 3 3 3 3 5 6 9.... 11 Entities - Relationship Model..... 12 13 14 16 2 ( ) Int Varchar Text byte byte byte Id Int 20 Name Surname Varchar 20 Forename Varchar 20 Alternate Type Varchar 10

More information

ebook 96-16

ebook 96-16 16 13 / ( ) 16-1 SQL*Net/Net8 SQL*Net/Net8 SQL*Net/Net8 16-1 / S Q L SQL*Net V2 N e t 8 S Q L * N e t N e t ( ) 16.1 S Q L O r a c l e S Q L 16 401 ) ( H R _ L I N K create database link p u b l i c (

More information

untitled

untitled 1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider

More information

ebook 132-2

ebook 132-2 2 SQL Server 7.0 SQL Server SQL Server 7 SQL Server 7 5 2.1 SQL Server 7 SQL Server 7 SQL Server SQL Server SQL Server 2.1.1 SQL Server Windows NT/2000 Windows 95/98 ( r a n d o m access memory R A M )

More information

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY 0 SQL SQL SELECT DISTINCT city, state FROM customers; SQL SQL DBMS SQL DBMS SQL 0-1 SQL SQL 0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT

More information

ebook 165-1

ebook 165-1 1 2 A N S I / S PA R C 3 4 S Q L 1 1.1 1-1 C E L L A R 1-2 1-3 ( i n s e r t ) ( c h a n g e ) ( d e l e t e ) 3 4 5 1) 1-1 C E L L A R ( t a b l e ) (relational table) 1. 3 1. 6 2 1-1 CELLAR 1-2 1-3 /

More information

第6章  数据库技术基础

第6章  数据库技术基础 第 六 章 数 据 库 技 术 基 础 本 章 要 点 数 据 库 系 统 概 述 关 系 数 据 库 数 据 库 设 计 数 据 库 系 统 概 述 数 据 管 理 技 术 的 发 展 数 据 管 理 技 术 的 发 展 分 三 个 阶 段 : 人 工 管 理 阶 段 文 件 系 统 管 理 阶 段 数 据 库 系 统 管 理 阶 段 数 据 库 系 统 概 述 数 据 库 数 据 库 管 理 系

More information

epub 61-6

epub 61-6 6 We b 6.1 6.1.1 R e c o r d s e t 6-1 6-1 6.1.2 166 Dreamweaver UltraDev 6-2 6-2 6-3 3 6-3 I I S 6 167 Tr a i n M i s 6-4 6-4 6.1.3 10 000 1 K 10 000K 10 M 6-5 Dreamweaver UltraDev Repeat Region 6-5 168

More information

untitled

untitled -JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP

More information

starter_pdfmerge

starter_pdfmerge 許 致 學 本 場 次 內 容 效 能 調 校 與 規 劃 SQL Server 2008 提 升 效 能 的 新 功 能 SQL Server 2008 效 能 調 校 工 具 效 能 不 佳 之 影 響 法 滿 足 使 用 者 需 求 無 業 生 產 力 客 戶 忠 誠 度 企 資 訊 人 員 績 效 不 彰 痛 醫 頭 腳 痛 醫 腳 頭 急 亂 投 醫 硬 體 升 級 不 一 定 可 以 獲

More information

untitled

untitled 2006 6 Geoframe Geoframe 4.0.3 Geoframe 1.2 1 Project Manager Project Management Create a new project Create a new project ( ) OK storage setting OK (Create charisma project extension) NO OK 2 Edit project

More information

Oracle9i 的查询优化

Oracle9i 的查询优化 Oracle9i Oracle 2002 2 Oracle9i...4...4...4 Oracle?...4 SQL...5...6...6...6...7...8...9...9 CUBE...10...11...11...11 OR...12...12...14...14...15...15...16...16...18...18...18...19...19...19...20...20 OLAP...20...21...21

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: [email protected] 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更 AX5000 Version 1.0 2006 年 9 錄...1 說...2 說...3...4 說...5 六...6 6.1 率...7 6.2 POST PAY...8 6.3 PREPAY DEPOSIT...9 6.4...10 6.5...11 更...12...12 LCD IC LED Flash 更 兩 RJ11 ( ) DC ON OFF ON 狀 狀 更 OFF 復 狀 說

More information

ebook45-5

ebook45-5 5 S Q L SQL Server 5.1 5-1 SQL Server 5-1 A B S A C O S A S I N ATA N AT N 2 C E I L I N G C O S C O T D E G R E E S E X P F L O O R L O G L O G 10 P I P O W E R R A D I A N S R A N D R O U N D S I G N

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

untitled

untitled 1 .NET 料.NET 料 料來 類.NET Data Provider SQL.NET Data Provider System.Data.SqlClient 料 MS-SQL OLE DB.NET Data Provider System.Data.OleDb 料 Dbase FoxPro Excel Access Oracle Access ODBC.NET Data Provider 料

More information

Front 2 Polar F11 ( ) : Polar F11 Polar F11 Polar F11 Polar (Keeps U Fit - Own Workout Program) Polar Polar F11 Polar F11 Polar F11 Polar (

Front 2 Polar F11 ( ) : Polar F11 Polar F11 Polar F11 Polar (Keeps U Fit - Own Workout Program) Polar Polar F11 Polar F11 Polar F11 Polar ( Front 1 - Polar F11 Light OK Back Front 2 Polar F11 ( ) : Polar F11 Polar F11 Polar F11 Polar (Keeps U Fit - Own Workout Program) Polar Polar F11 Polar F11 Polar F11 Polar (www.polarfitnesstrainer.com)

More information

untitled

untitled [email protected] http://idc.hust.edu.cn/~rxli/ 2 3 ( ) (Distributed System) Integrated System () 4 5 6 System Integration 7 8 Integrated System 9 1.1 CIMS IDEF CSCW STEP MIS MRPII ERP CRM SCM MIS:

More information

使用SQL Developer

使用SQL Developer 使 用 SQL Developer 达 成 的 目 标 / 方 案 1 创 建 一 个 新 的 数 据 库 连 接 ; 2 在 SQL Developer 中 查 看 数 据 库 对 象 的 信 息 修 改 数 据 ; 3 在 SQL Developer 中 创 建 表 ; 4 在 SQL Developer 中 创 建 索 引 ; 5 在 SQL Developer 中 创 建 函 数 ; 6 在

More information

前 言 学 习 计 算 机 的 我 们 无 时 无 刻 不 在 和 数 据 打 交 道, 怎 么 有 效 的 管 理 这 些 数 据 变 成 我 们 必 须 要 谈 论 的 话 题 这 个 问 题 也 正 是 本 书 需 要 探 讨 的 问 题 : 数 据 库 技 术, 目 前 的 数 据 技 术

前 言 学 习 计 算 机 的 我 们 无 时 无 刻 不 在 和 数 据 打 交 道, 怎 么 有 效 的 管 理 这 些 数 据 变 成 我 们 必 须 要 谈 论 的 话 题 这 个 问 题 也 正 是 本 书 需 要 探 讨 的 问 题 : 数 据 库 技 术, 目 前 的 数 据 技 术 2010 开 发 者 智 慧 之 mysql 数 据 库 作 者 :TelesLi 思 想 有 多 远 就 可 以 走 多 远 2010 前 言 学 习 计 算 机 的 我 们 无 时 无 刻 不 在 和 数 据 打 交 道, 怎 么 有 效 的 管 理 这 些 数 据 变 成 我 们 必 须 要 谈 论 的 话 题 这 个 问 题 也 正 是 本 书 需 要 探 讨 的 问 题 : 数 据 库 技

More information

ebook 165-6

ebook 165-6 6 6.1 C o d d 5.1, 6.1 3 r e s t r i c t p r o j e c t j o i n 6. 1 C o d d 6-1 8 o r i g i n a l C o d d 8 8 6. 10 C o d d 8 6-1 8 1) u n i o n i n t e r s e c t i o n d i ff e r e n c e Cartesian product

More information

Oracle高级复制冲突解决机制的研究

Oracle高级复制冲突解决机制的研究 Oracle dbms_rectifier_diff Oracle : eygle ([email protected] dbms_rectifier_diff Oracle dbms_rectifier_diff : http://www.eygle.com/archives/2005/01/eoadbms_rectifi.html DIFFERENCES Oracle dbms_rectifier_diff.differences

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

目錄... ivv...vii Chapter DETECT

目錄... ivv...vii Chapter DETECT ... ivv...vii Chapter 1 1.1... 5 1.2... 6 1.3 DETECT... 11 1.3.1... 12 1.3.1.1...12 1.3.1.2...13 1.3.1.3...14 1.3.1.4...15 1.3.1.5...15 1.3.1.6...16 1.3.2 DETECT... 17 1.3.3... 19 1.3.4... 20... 22 Chapter

More information

Microsoft Word - 100118002.htm

Microsoft Word - 100118002.htm 100 年 度 11800 電 腦 軟 體 應 用 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 選 擇 題 : 1. (3)

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

第四章 SQL 介紹

第四章 SQL 介紹 第 四 章 SQL 介 紹 黃 仁 鵬 2009/3/26 資 料 庫 系 統 理 論 與 實 務 - 使 用 Oracle 1 4-1 資 料 庫 共 通 的 語 言 -SQL 像 大 多 數 資 料 庫 相 同,ORACLE 只 會 說 一 種 共 通 的 語 言, 而 這 種 語 言 就 是 SQL (Structural Query Language, 結 構 化 查 詢 語 言 ) 2009/3/26

More information

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访 发 行 公 告 jconnect for JDBC 7.0 文 档 ID:DC74874-01-0700-01 最 后 修 订 日 期 :2010 年 3 月 2 日 主 题 页 码 1. 访 问 最 新 发 行 公 告 信 息 2 2. 产 品 摘 要 2 3. 特 殊 安 装 说 明 2 3.1 查 看 您 的 jconnect 版 本 3 4. 特 殊 升 级 指 导 3 4.1 迁 移 3

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-007 Title : Introduction to Oracle9i: SQL Version : DEMO 1 / 10 1. What does the FORCE option for creating a view do? A.creates a view

More information

支付宝2011年 IT资产与费用预算

支付宝2011年 IT资产与费用预算 OceanBase 支 持 ACID 的 可 扩 展 关 系 数 据 库 [email protected] 2013 年 04 月 关 系 数 据 库 发 展 1970-72:E.F.Codd 数 据 库 关 系 模 式 20 世 纨 80 年 代 第 一 个 商 业 数 据 库 Oracle V2 SQL 成 为 数 据 库 行 业 标 准 可 扩 展 性 Mainframe: 小 型 机 =>

More information

Value Chain ~ (E-Business RD / Pre-Sales / Consultant) APS, Advanc

Value Chain ~ (E-Business RD / Pre-Sales / Consultant) APS, Advanc Key @ Value Chain [email protected] 1 Key@ValueChain 1994.6 1996.6 2000.6 2000.10 ~ 2004.10 (E- RD / Pre-Sales / Consultant) APS, Advanced Planning & Scheduling CDP, Collaborative Demand Planning

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

自动化接口

自动化接口 基 于 文 件 的 数 据 交 换 的 注 意 事 项 1 SPI 2 COMOS Automation 操 作 手 册 通 用 Excel 导 入 3 通 过 OPC 客 户 端 的 过 程 可 视 化 4 SIMIT 5 GSD 6 05/2016 V 10.2 A5E37093378-AA 法 律 资 讯 警 告 提 示 系 统 为 了 您 的 人 身 安 全 以 及 避 免 财 产 损 失,

More information

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 容 分 发 网 络 Alibaba Cloud Content Delivery Network 一

More information

f2.eps

f2.eps 前 言, 目 录 产 品 概 况 1 SICAM PAS SICAM 电 力 自 动 化 系 统 配 置 和 使 用 说 明 配 置 2 操 作 3 实 时 数 据 4 人 机 界 面 5 SINAUT LSA 转 换 器 6 状 态 与 控 制 信 息 A 版 本 号 : 08.03.05 附 录, 索 引 安 全 标 识 由 于 对 设 备 的 特 殊 操 作 往 往 需 要 一 些 特 殊 的

More information

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost //192.0.0.10:9500 / /dbserver.somedomain.com /an_alias /enrollme

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost //192.0.0.10:9500 / /dbserver.somedomain.com /an_alias /enrollme sh -x path/to/hsqldb start > /tmp/hstart.log 2>&1 第 4 章 高 级 话 题 4.1 本 章 目 的 许 多 在 论 坛 或 邮 件 组 中 重 复 出 现 的 问 题 将 会 在 本 文 档 中 进 行 解 答 如 果 你 打 算 在 应 用 程 序 中 使 用 HSQLDB 的 话, 那 么 你 应 该 好 好 阅 读 一 下 本 文 章 本 章

More information

計畫書封面範例

計畫書封面範例 致 理 技 術 學 院 資 訊 管 理 系 專 題 期 末 報 告 書 藝 網 情 深 學 生 : 陳 暐 儒 (19810202) 陳 志 蒂 (19810138) 李 翊 菡 (19810117) 陳 志 萱 (19810237) 林 宛 柔 (19810218) 胡 肇 群 (19810213) 本 成 果 報 告 書 經 審 查 及 口 試 合 格 特 此 證 明 指 導 老 師 : 中 華

More information