11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第6章 数据库管理软件Access 年秋.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
關聯查詢.
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
第2章 SQL语言初步 2.1 SQL的基本概念 2.2 基本表、索引的创建、删除和修改操作 2.3 SQL的查询语句——SELECT
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术 实践.
高等院校计算机教材系列 数据库原理与应用(第2版) 任课教师:刘雅莉
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
第3章 SQL语言初步 2017/3/14.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
資料庫 (Database) SQL Server 2008實作
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
文科计算机小公共课规划教材 Access 程序设计.
Chap 13 視界與資料庫程式設計.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
计算机应用基础 上海大学计算中心.
第3章 数据查询与SQL命令.
第五讲 利用视图进行查询优化.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
第 8 章 資料的 新增、修改與刪除.
課程名稱:資料庫系統 授課老師:李春雄 博士
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
Chap 10 SQL定義、操作與控制指令.
第 11 章 建立檢視表.
第 7 章 建立資料表與 資料庫圖表.
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
Transact-SQL 語言設計教學.
第 16 章 觸發程序.
SQL Server 2000 数据库入门.
課程名稱:資料庫系統 授課老師:李春雄 博士
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
国家“十一五”规划教材 数据库原理与应用教程(第3版).
SQL SERVER 一些经典语句 1.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
Ch4.SQL Server 2005資料庫組成員元件介紹
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
数据库技术.
数据库应用技术 SQL Server 2005.
第20章 MySQL数据库.
数据库技术与应用.
ORACLE 第九讲 触发器.
20 SQL Server全文檢索搜尋 20-1 SQL Server全文檢索搜尋 20-2 全文檢索目錄的建立 20-3 建立全文檢索索引
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
資料庫系統 李翊豪 2017/12/21 Reference
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
6 SQL語言與資料庫建置 6-1 SQL語言的基礎 6-2 SQL Server的資料庫結構 6-3 建立使用者資料庫
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
8 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
第9章 视 图 教学提示:用户在查询数据库中的数据时,除了直接查看数据库中的表中的数据以外,还可以通过视图来查看表中的数据,也就是说,视图为用户提供了另外一种查看表中的数据的方式。 视图是一种虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成。
SQL語法教學 2015/10/15 John.
第4章 数据查询.
Presentation transcript:

11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容

11-1 檢視表的基礎 11-1-1 SQL Server檢視表 11-1-2 檢視表的種類 11-1-3 檢視表的優缺點

11-1-1 SQL Server檢視表-說明 SQL Server檢視表是一個虛擬資料表,因為它本身並沒有儲存資料,而只有定義資料,定義從哪些資料表或檢視表挑出哪些欄位或記錄。我們一樣可以在檢視表執行記錄新增、刪除和更新,當然,這些操作都是作用在其定義的來源資料表。 檢視表顯示的資料是從基底資料表(Base Tables)所取出,只是依照定義過濾掉不屬於檢視表的資料,如果檢視表的資料是從其他檢視表導出,也只是重複再過濾一次。所以檢視表如同是一個從不同資料表或檢視表抽出的資料積木,然後使用這些積木拼出所需的資料表。

11-1-1 SQL Server檢視表-圖例

11-1-2 檢視表的種類 列欄子集檢視表(Row-and-Column Subset Views):從單一資料表或其他檢視表所導出的檢視表,只挑選資料表或其他檢視表中所需的欄位和記錄。換句話說,建立的檢視表是資料表或其他檢視表的子集。 合併檢視表(Join Views):使用合併查詢從多個資料表或其他檢視表所導出的檢視表,合併檢視表的欄位和記錄是來自多個資料表或其他檢視表。 統計摘要檢視表(Statistical Summary Views):一種特殊的列欄子集檢視表或合併檢視表,只是再使用聚合函數(Aggregate Function)產生指定欄位所需的統計資料。

11-1-3 檢視表的優缺點-優點1 達成邏輯資料獨立:檢視表的定義相當於外部與概念對映(External/Conceptual Mapping),就算更改資料表的定義資料,也只需同時更改檢視表的外部與概念對映的定義資料,就可以讓使用者檢視相同觀點的資料,而不會影響外部綱要。 增加資料安全性:檢視表可以隱藏和過濾資料,只讓使用者看到它允許看到的資料,可以增加資料的安全性。例如:在【員工】資料表擁有【薪水】欄位,使用檢視表就可以隱藏員工的薪水資料,只讓使用者看到其他部分的員工資料。

11-1-3 檢視表的優缺點-優點2 簡化資料查詢:將常用和複雜的查詢定義成檢視表,即可簡化資料查詢,因為我們不再需要每次重複執行複雜的SQL查詢指令,直接開啟現成的檢視表即可。 簡化使用者觀點:檢視表可以增加資料的可讀性,讓資料庫使用者專注於所需的資料,例如:替欄位更名成使用者觀點的欄位名稱。

11-1-3 檢視表的優缺點-缺點 執行效率差:檢視表並沒有真正儲存資料,只是一個虛擬資料表,資料是在使用時才從資料表導出,因為經過一道轉換手續,其執行效率比不過直接存取資料表。 更多的操作限制:檢視表雖然也是一種資料表,不過在新增、更新和刪除資料時,為了避免違反完整性限制條件,在操作上有更多的限制。 增加管理的複雜度:檢視表可以一層一層的從其他檢視表導出,例如:B_檢視表和C_檢視表是從D_檢視表導出,A_檢視表是從B_檢視表導出,複雜的檢視表關聯將增加管理眾多資料表和檢視表的複雜度,因為不小心刪錯檢視表,可能會造成嚴重後果。

11-2 建立檢視表 11-2-2 使用T-SQL指令建立檢視表 11-2-3 從其他檢視表建立檢視表 11-2-1 使用Management Studio建立檢視表 11-2-2 使用T-SQL指令建立檢視表 11-2-3 從其他檢視表建立檢視表

11-2-1 使用Management Studio 建立檢視表

11-2-2 使用T-SQL指令建立檢視表-語法 T-SQL語言是使用CREATE VIEW指令來建立檢視表,其基本語法如下所示: [WITH ENCRYPTION ][ WITH SCHEMABINDING ] AS SELECT指令敘述

11-2-2 使用T-SQL指令建立檢視表- 建立列欄子集檢視表(說明) 列欄子集檢視表是指檢視表的內容是資料表記錄或欄位的子集合,它是從資料表的欄位和記錄集合中,取出所需子集合的檢視表。列欄子集檢視表依選擇的範圍,可以分為三種,如下所示: 欄子集檢視表(Column Subset Views):指檢視表的欄位是資料表欄位集合的子集合。 列子集檢視表(Row Subset Views):指檢視表的記錄是資料表記錄集合的子集合。 列欄子集檢視表(Row-and-Column Subset Views):指檢視表的欄位和記錄都是資料表欄位和記錄集合的子集合。

11-2-2 使用T-SQL指令建立檢視表- 建立列欄子集檢視表(範例1) SQL指令碼檔:Ch11_2_2_01.sql 在【學生】資料表建立學生電話聯絡資料的【學生聯絡_檢視】的檢視表,並且指定檢視表的別名,如下所示: CREATE VIEW 學生聯絡_檢視 (學號,學生姓名,學生電話) AS SELECT 學號, 姓名, 電話 FROM 學生 GO SELECT * FROM 學生聯絡_檢視

11-2-2 使用T-SQL指令建立檢視表- 建立列欄子集檢視表(範例2) SQL指令碼檔:Ch11_2_2_02.sql 在【員工】資料表建立薪水超過50000員工資料的【高薪員工_檢視】的加密檢視表,如下所示: CREATE VIEW 高薪員工_檢視 WITH ENCRYPTION AS SELECT * FROM 員工 WHERE 薪水 > 50000 GO SELECT * FROM 高薪員工_檢視

11-2-2 使用T-SQL指令建立檢視表- 建立列欄子集檢視表(範例3) SQL指令碼檔:Ch11_2_2_03.sql 在【員工】資料表建立薪水超過50000員工資料,而且只有身份證字號、姓名和電話三個欄位的【高薪員工聯絡_檢視】檢視表,並且使用結構描述繫結選項,如下所示: CREATE VIEW 高薪員工聯絡_檢視 WITH SCHEMABINDING AS SELECT 身份證字號, 姓名, 電話 FROM dbo.員工 WHERE 薪水 > 50000 GO

11-2-2 使用T-SQL指令建立檢視表- 建立合併檢視表(說明) 合併檢視表(Join Views)是多個資料表執行合併查詢所建立的檢視表。

11-2-2 使用T-SQL指令建立檢視表- 建立合併檢視表(範例1) SQL指令碼檔:Ch11_2_2_04.sql 在【學生】、【課程】、【教授】和【班級】四個資料表建立合併檢視表的【學生_班級_檢視】檢視表,可以用來顯示學生的上課資料,如下所示: CREATE VIEW 學生_班級_檢視 AS SELECT 學生.學號, 學生.姓名, 課程.*, 教授.* FROM 教授 INNER JOIN (課程 INNER JOIN

11-2-2 使用T-SQL指令建立檢視表- 建立合併檢視表(範例2) (學生 INNER JOIN 班級 ON 學生.學號=班級.學號) ON 班級.課程編號 = 課程.課程編號) ON 班級.教授編號 = 教授.教授編號 GO SELECT * FROM 學生_班級_檢視

11-2-2 使用T-SQL指令建立檢視表- 建立統計摘要檢視表(說明) 統計摘要檢視表(Statistical Summary Views)是一種特殊的列欄子集檢視表或合併檢視表,只是再使用聚合函數(Aggregate Function)產生指定欄位所需的統計資料。

11-2-2 使用T-SQL指令建立檢視表- 建立統計摘要檢視表(範例1-1) SQL指令碼檔:Ch11_2_2_05.sql 建立【學生】、【課程】和【班級】三個資料表的統計摘要檢視表【學分_檢視】,它是一個合併檢視表,因為使用COUNT()和SUM()的聚合函數來顯示每位學生的上課數和所修的總學分,如下所示: CREATE VIEW 學分_檢視 AS SELECT 學生.學號, COUNT(*) AS 修課數, SUM(課程.學分) AS 學分數 FROM 學生, 課程, 班級

11-2-2 使用T-SQL指令建立檢視表- 建立統計摘要檢視表(範例1-2) WHERE 學生.學號 = 班級.學號 AND 課程.課程編號 = 班級.課程編號 GROUP BY 學生.學號 GO SELECT * FROM 學分_檢視

11-2-2 使用T-SQL指令建立檢視表- 建立統計摘要檢視表(範例2-1) SQL指令碼檔:Ch11_2_2_06.sql 請修改統計摘要【學分_檢視】檢視表,建立只顯示學生所修總學分超過6個學分的學生上課總數和學分數的合併檢視表【高學分_檢視】,如下所示: CREATE VIEW 高學分_檢視 AS SELECT 學生.學號, COUNT(*) AS 修課數, SUM(課程.學分) AS 學分數 FROM 學生, 課程, 班級

11-2-2 使用T-SQL指令建立檢視表- 建立統計摘要檢視表(範例2-2) WHERE 學生.學號 = 班級.學號 AND 課程.課程編號 = 班級.課程編號 GROUP BY 學生.學號 HAVING SUM(課程.學分) >= 6 GO SELECT * FROM 高學分_檢視

11-2-3 從其他檢視表建立檢視表-說明 檢視表不只可以從資料表導出,如果有已經存在的檢視表,我們也可以從現有檢視表來建立新檢視表。

11-2-3 從其他檢視表建立檢視表-範例 SQL指令碼檔:Ch11_2_3.sql 在上一節【學分_檢視】檢視表只顯示學號,我們可以再次使用此檢視表和【學生】資料表,建立合併檢視表【學生_學分_檢視】來顯示學生姓名和電話欄位的詳細資料,如下所示: CREATE VIEW 學生_學分_檢視 AS SELECT 學分_檢視.*, 學生.姓名, 學生.電話 FROM 學生, 學分_檢視 WHERE 學生.學號 = 學分_檢視.學號 GO SELECT * FROM 學生_學分_檢視

11-2-3 從其他檢視表建立檢視表-圖例

11-3 修改與刪除檢視表 11-3-1 修改檢視表 11-3-2 刪除檢視表

11-3-1 修改檢視表- 在Management Studio修改檢視表 修改檢視表的設計 更改檢視表名稱

11-3-1 修改檢視表- 使用T-SQL指令修改檢視表(語法) T-SQL語言是使用ALTER VIEW指令來修改檢視表,其基本語法如下所示: ALTER VIEW 檢視表名稱 [(欄位別名清單)] [WITH ENCRYPTION ][ WITH SCHEMABINDING ] AS SELECT指令敘述 語法是使用ALTER VIEW指令來修改已經存在檢視表,它和CREATE VIEW語法完全相同,簡單的說,修改檢視表就是重新定義檢視表設計。

11-3-1 修改檢視表- 使用T-SQL指令修改檢視表(範例) SQL指令碼檔:Ch11_3_1.sql 修改【學生聯絡 _檢視】檢視表,取消別名且新增性別欄位,如下所示: ALTER VIEW 學生聯絡_檢視 AS SELECT 學號, 姓名,性別, 電話 FROM 學生 GO SELECT * FROM 學生聯絡_檢視

11-3-2 刪除檢視表- 使用Management Studio 對於資料表中不再需要的檢視表,我們可以使用Manament Studio工具的「物件總管」視窗的檢視表上,執行【右】鍵快顯功能表的【刪除】指令,就可以刪除檢視表。

11-3-2 刪除檢視表-使用T-SQL T-SQL語言是使用DROP VIEW指令來刪除檢視表,其基本語法如下所示: SQL指令碼檔:Ch11_3_2.sql 刪除Ch13_3_1_01.sql建立的【學生連絡_檢視】檢視表,如下所示: DROP VIEW 學生聯絡_檢視

11-4 編輯檢視表的內容 11-4-1 在檢視表新增記錄 11-4-2 在檢視表更新記錄 11-4-3 在檢視表刪除記錄

11-4 編輯檢視表的內容-說明 檢視表雖然是一個虛擬資料表,不過,如同資料表一般,我們一樣可以在檢視表執行新增、更新和刪除操作。 編輯檢視表需要滿足一些限制條件,如下所示: 檢視表需要包含資料表的主鍵。 在CREATE VIEW指令的SELECT指令敘述不可包含DISTINCT、聚合函數、GROUP BY和HAVING子句,如果有,檢視表就只能查詢。換句話說,統計摘要檢視表因為擁有聚合函數,所以只能查詢,而不能新增、更新和刪除記錄。 因為檢視表是從資料表所導出,所以新增、更新和刪除操作仍然需要遵守來源資料表的完整性限制條件。

11-4 編輯檢視表的內容- WITH CHECK OPTION子句 CREATE VIEW指令的WITH CHECK OPTION子句是一個選項,表示其建立的檢視表在新增、更新和刪除記錄時,需要檢查完整性限制條件,如果不符合條件,就顯示錯誤訊息。基本語法如下所示: CREATE VIEW 檢視表名稱 AS SELECT指令敘述 WITH CHECK OPTION

11-4-1 在檢視表新增記錄-1 【生日_檢視_有主鍵】檢視表因為擁有主鍵,滿足前述限制條件,換句話說,我們可以在此檢視表新增記錄。 SQL指令碼檔:Ch11_4_1_01.sql 在【生日_檢視_有主鍵】檢視表新增一筆學生記錄,如下所示: INSERT INTO 生日_檢視_有主鍵 VALUES ('S016', '江峰', '1997-10-01' ) GO SELECT * FROM 學生

11-4-1 在檢視表新增記錄-2 【生日_檢視_沒有主鍵】檢視表因為沒有主鍵,並不滿足前述限制條件。換句話說,我們並不允許在此檢視表新增記錄。 SQL指令碼檔:Ch11_4_1_02.sql 在【生日_檢視_沒有主鍵】檢視表新增一筆學生記錄,如下所示: INSERT INTO 生日_檢視_沒有主鍵 VALUES (‘江峰峰’, ‘1997-10-01’) 因為在建立檢視表時使用WITH CHECK OPTION指令,所以SQL Server會出現錯誤訊息。

11-4-2 在檢視表更新記錄-1 【生日_檢視_有主鍵】檢視表因為擁有主鍵,滿足前述限制條件,換句話說,我們可以在此檢視表更新記錄。 SQL指令碼檔:Ch11_4_2_01.sql 在【生日_檢視_有主鍵】檢視表將學號S016學生的生日改為 '1996-10-01',如下所示: UPDATE 生日_檢視_有主鍵 SET 生日 = '1996-10-01' WHERE 學號 = 'S016' GO SELECT * FROM 學生

11-4-2 在檢視表更新記錄-2 【生日_檢視_沒有主鍵】檢視表因為沒有主鍵,並不滿足前述限制條件。 SQL指令碼檔:Ch11_4_2_02.sql 在【生日_檢視_沒有主鍵】檢視表將學生江峰的生日改為'1994-10-01',如下所示: UPDATE 生日_檢視_沒有主鍵 SET 生日 = '1994-10-01' WHERE 姓名 = '江峰' GO SELECT * FROM 學生 SQL Server仍然會更新【學生】資料表的記錄,理論上,資料庫管理系統應該避免在沒有主鍵的視界執行更新操作。

11-4-3 在檢視表刪除記錄-1 【生日_檢視_有主鍵】檢視表因為擁有主鍵,滿足前述限制條件,換句話說,我們可以在此檢視表刪除記錄。 SQL指令碼檔:Ch11_4_3_01.sql 在【生日_檢視_有主鍵】檢視表刪除學號S016的學生資料,如下所示: DELETE FROM 生日_檢視_有主鍵 WHERE 學號='S016' GO SELECT * FROM 學生

11-4-3 在檢視表刪除記錄-2 【生日_檢視_沒有主鍵】檢視表因為沒有主鍵,不滿足前述限制條件。 SQL指令碼檔:Ch11_4_3_02.sql 在【生日_檢視_沒有主鍵】檢視表刪除學生王美麗,如下所示: DELETE 生日_檢視_沒有主鍵 WHERE 姓名='王美麗' GO SELECT * FROM 學生 SQL Server仍然會刪除【學生】資料表的記錄,理論上,資料庫管理系統應該避免在沒有主鍵的視界執行刪除操作。