《《數(shù)據(jù)庫原理與應(yīng)用》08.視圖的創(chuàng)建和使用》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫原理與應(yīng)用》08.視圖的創(chuàng)建和使用(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 數(shù) 據(jù) 庫 原 理 與 應(yīng) 用 第 八 講 視 圖 的 創(chuàng) 建 和 使 用 視 圖 概 述 創(chuàng) 建 視 圖 查 看 視 圖 信 息 修 改 和 重 命 名 視 圖 使 用 視 圖 本 講 主 要 內(nèi) 容 概 述視 圖 的 概 念 視 圖 是 一 種 數(shù) 據(jù) 庫 對 象 , 是 從 一 個 或 者 多 個 數(shù) 據(jù) 表 或 視圖 中 導(dǎo) 出 的 虛 表 , 視 圖 的 結(jié) 構(gòu) 和 數(shù) 據(jù) 是 對 數(shù) 據(jù) 表 進 行 查 詢 的結(jié) 果 。視 圖 被 定 義 后 便 存 儲 在 數(shù) 據(jù) 庫 中 , 通 過 視 圖 看 到 的 數(shù) 據(jù)只 是 存 放 在 基 表 中 的 數(shù) 據(jù) 。 當 對 通 過 視
2、圖 看 到 的 數(shù) 據(jù) 進 行 修改 時 , 相 應(yīng) 的 基 表 的 數(shù) 據(jù) 也 會 發(fā) 生 變 化 , 同 時 , 若 基 表 的 數(shù)據(jù) 發(fā) 生 變 化 , 這 種 變 化 也 會 自 動 地 反 映 到 視 圖 中 。視 圖 可 以 是 一 個 數(shù) 據(jù) 表 的 一 部 分 , 也 可 以 是 多 個 基 表 的聯(lián) 合 。 使 用 視 圖 的 優(yōu) 點 和 作 用 可 以 使 視 圖 集 中 數(shù) 據(jù) 、 簡 化 和 定 制 不 同 用 戶 對 數(shù) 據(jù) 庫 的 不 同 數(shù) 據(jù) 要 求 。 使 用 視 圖 可 以 屏 蔽 數(shù) 據(jù) 的 復(fù) 雜 性 , 用 戶 不 必 了 解 數(shù) 據(jù) 庫 的 結(jié) 構(gòu)
3、, 就 可 以方 便 地 使 用 和 管 理 數(shù) 據(jù) , 簡 化 數(shù) 據(jù) 權(quán) 限 管 理 和 重 新 組 織 數(shù) 據(jù) 以 便 輸 出 到 其他 應(yīng) 用 程 序 中 。 視 圖 可 以 使 用 戶 只 關(guān) 心 他 感 興 趣 的 某 些 特 定 數(shù) 據(jù) 和 他 們 所 負 責(zé) 的 特 定 任務(wù) , 而 那 些 不 需 要 的 或 者 無 用 的 數(shù) 據(jù) 則 不 在 視 圖 中 顯 示 。 視 圖 大 大 地 簡 化 了 用 戶 對 數(shù) 據(jù) 的 操 作 。視 圖 可 以 讓 不 同 的 用 戶 以 不 同 的 方 式 看 到 不 同 或 者 相 同 的 數(shù) 據(jù) 集 。 在 某 些 情 況 下 ,
4、由 于 表 中 數(shù) 據(jù) 量 太 大 , 因 此 在 表 的 設(shè) 計 時 常 將 表 進 行 水平 或 者 垂 直 分 割 , 但 表 的 結(jié) 構(gòu) 的 變 化 對 應(yīng) 用 程 序 產(chǎn) 生 不 良 的 影 響 。 視 圖 提 供 了 一 個 簡 單 而 有 效 的 安 全 機 制 。 概 述視 圖 的 優(yōu) 點1.視 圖 可 以 屏 蔽 數(shù) 據(jù) 的 復(fù) 雜 性 , 簡 化 用 戶 對 數(shù) 據(jù) 庫 的 操 作 。 2.視 圖 可 以 讓 不 同 的 用 戶 以 不 同 的 方 式 看 到 不 同 或 者 相 同的 數(shù) 據(jù) 集 。3.可 以 使 用 視 圖 重 新 組 織 數(shù) 據(jù) 。 4.視 圖 可 以
5、 定 制 不 同 用 戶 對 數(shù) 據(jù) 的 訪 問 權(quán) 限 。 創(chuàng) 建 視 圖 視 圖 的 名 稱 只 能 在 當 前 數(shù) 據(jù) 庫 中 創(chuàng) 建 視 圖 。一 個 視 圖 中 行 、 列 的 限 制 。如 果 視 圖 中 某 一 列 是 函 數(shù) 、 數(shù) 學(xué) 表 達 式 、 常 量 或 者 來 自 多 個表 的 列 名 相 同 , 則 必 須 為 列 定 義 名 稱 。 視 圖 與 基 表 的 關(guān) 系不 能 在 視 圖 上 創(chuàng) 建 索 引 , 不 能 在 規(guī) 則 、 默 認 的 定 義 中 引 用 視圖 。 創(chuàng) 建 視 圖1、 使 用 企 業(yè) 管 理 器 創(chuàng) 建 視 圖 2、 使 用 Transac
6、t-SQL語 句 創(chuàng) 建 視 圖 CREATE VIEW . . view_name ( column ,.n ) WITH ,.n ASs e l e c t _ s t a t e m e n t WITH CHECK OPTION := ENCRYPTION | SCHEMABINDING | VIEW_METADATA 3、 使 用 向 導(dǎo) 創(chuàng) 建 視 圖 查 看 視 圖 信 息 1 使 用 企 業(yè) 管 理 器 查 看 視 圖 信 息 2 使 用 系 統(tǒng) 存 儲 過 程 查 看 視 圖 信 息 sp_help 數(shù)據(jù)庫對象名稱sp_helptext 視圖(觸發(fā)器、存儲過程)sp_depe
7、nds 數(shù)據(jù)庫對象名稱 修 改 和 重 命 名 視 圖 1 使 用 企 業(yè) 管 理 器 修 改 視 圖 2 使 用 Transact-SQL語 句 修 改 視 圖 ALTER VIEW view_name (column,.n) WITH ENCRYPTIONA S s e l e c t _ s t a t e m e n t WITH CHECK OPTION 修 改 和 重 命 名 視 圖1 使 用 企 業(yè) 管 理 器 重 命 名 視 圖2使用系統(tǒng)存儲過程重命名視圖 sp_rename old_name,new_name 使 用 視 圖 1. 修 改 視 圖 中 的 數(shù) 據(jù) 時 每 次
8、修 改 都 只 能 影 響 一 個 基 表 。2. 不 能 修 改 那 些 通 過 計 算 得 到 的 字 段 。3. 如 果 在 創(chuàng) 建 視 圖 時 指 定 了 WITH CHECK OPTION選 項 , 那 么所 有 使 用 視 圖 修 改 數(shù) 據(jù) 庫 信 息 時 , 必 須 保 證 修 改 后 的 數(shù) 據(jù) 滿 足視 圖 定 義 的 范 圍 。4. 執(zhí) 行 UPDATE、 DELETE命 令 時 , 所 刪 除 與 更 新 的 數(shù) 據(jù) 必 須 包含 在 視 圖 的 結(jié) 果 集 中 。5. 如 果 視 圖 引 用 多 個 表 時 , 無 法 用 DELETE命 令 刪 除 數(shù) 據(jù) , 若
9、使用 UPDATE命 令 則 應(yīng) 與 INSERT操 作 一 樣 , 被 更 新 的 列 必 須 屬于 同 一 個 表 。 使 用 視 圖 通 過 視 圖 添 加 表 數(shù) 據(jù)1 插 入 數(shù) 據(jù) 記 錄 1 使 用 企 業(yè) 管 理 器 在 視 圖 中 插 入 記 錄 2 使 用 Transact-SQL語 句 通 過 視 圖 插 入 記 錄可 以 使 用 insert語 句 向 視 圖 中 添 加 表 數(shù) 據(jù) 。 但 是 ,使 用 insert語 句 在 視 圖 中 添 加 的 數(shù) 據(jù) , 將 存 儲 在視 圖 參 照 的 數(shù) 據(jù) 表 中 。由 于 視 圖 的 特 性 , 通 過 視 圖 向 數(shù)
10、 據(jù) 表 中 添 加 數(shù)據(jù) , 必 須 滿 足 下 列 條 件 : 使 用 視 圖 插 入 數(shù) 據(jù) 記 錄1、 使 用 insert語 句 向 數(shù) 據(jù) 表 中 插 入 數(shù) 據(jù) 的 用 戶 必 須 在 數(shù) 據(jù) 表 中 有插 入 數(shù) 據(jù) 的 權(quán) 限 。2、 由 于 視 圖 通 常 只 引 用 表 中 的 部 分 字 段 , 那 些 在 視 中 未 引 用 的字 段 必 須 知 道 在 沒 有 指 定 取 值 的 情 況 下 如 何 填 充 數(shù) 據(jù) 。 如 :允 許 空 、有 默 認 值 等 。3、 視 圖 中 不 能 包 含 多 個 字 段 值 的 組 合 , 或 包 含 了 使 統(tǒng) 計 函 數(shù)
11、的結(jié) 果 。4、 不 能 包 含 distinct或 group by子 句5、 若 使 用 了 with check option,則 須 符 合 where子 句 的 插 入 條 件 。6、 若 視 圖 引 用 了 多 個 數(shù) 據(jù) 表 , 則 通 過 視 圖 向 數(shù) 據(jù) 表 添 加 數(shù) 據(jù) 時 , 這 個 語 句 只 能 指 定 同 一 個 表 中 的 字 段 。 若 希 望 通 過 一 個 引 用 了 多 個 數(shù) 據(jù) 表 的 視 圖 中 添 加 數(shù) 據(jù) 時 , 必 須寫 多 個 insert語 句 。 使 用 視 圖 更 新 視 圖 中 的 數(shù) 據(jù)2 更 新 數(shù) 據(jù) 記 錄 1 使 用
12、企 業(yè) 管 理 器 在 視 圖 中 更 新 記 錄2 使 用 Transact-SQL語 句 通 過 視 圖 更 新 記 錄同 樣 , 可 以 使 用 update語 句 , 通 過 視 圖 對 數(shù) 據(jù) 表 中 的數(shù) 據(jù) 進 行 更 新 。注 意 :通 過 使 用 多 個 表 的 視 圖 對 數(shù) 據(jù) 表 進 行 更 新 也 需要 書 寫 多 個 update語 句 。適 用 與 insert操 作 的 許 多 限 制 同 樣 適 用 與 update操 作 。 使 用 視 圖 刪 除 數(shù) 據(jù) 記 錄 3 刪 除 數(shù) 據(jù) 記 錄 1 使 用 企 業(yè) 管 理 器 在 視 圖 中 刪 除 記 錄 2
13、 使 用 Transact-SQL語 句 通 過 視 圖 刪 除 記 錄 使 用 視 圖 刪 除 記 錄 時 , 可 以 直 接 利 用 Transact-SQL語 言 的 DELETE語句 刪 除 視 圖 中 的 記 錄 。 但 應(yīng) 該 注 意 , 必 須 指 定 在 視 圖 中 定 義 過 的 字 段 來 刪除 記 錄 。 使 用 delete可 以 通 過 視 圖 將 數(shù) 據(jù) 表 中 的 數(shù) 據(jù) 刪 除 , 但 是 若 視 圖 應(yīng) 用 了兩 個 或 兩 個 以 上 的 數(shù) 據(jù) 表 , 則 不 允 許 刪 除 視 圖 中 的 數(shù) 據(jù) 。 通 過 視 圖 刪 除 的 記 錄 也 不 能 違 背 視 圖 定 義 的 子 句 中 的 條 件 限 制 。 刪 除 視 圖 1 使 用 企 業(yè) 管 理 器 刪 除 視 圖 2 使 用 Transact-SQL語 句 刪 除 視 圖 DROP VIEW view_name , n