4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。

Slides:



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

2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
教学网站: 数据库及应用 授课教师:岳静 Tel: 教学网站:
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
第2章 SQL语言初步 2.1 SQL的基本概念 2.2 基本表、索引的创建、删除和修改操作 2.3 SQL的查询语句——SELECT
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术及应用 ——SQL Server 任课教师: 毕丛娣 电话: 年3月.
Access数据库程序设计 总复习.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
資料庫 (Database) SQL Server 2008實作
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
文科计算机小公共课规划教材 Access 程序设计.
数据库原理及应用 第10章 事务与锁 10.1 事务 10.2 锁.
Chap 13 視界與資料庫程式設計.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
数据库原理与SQL Server 第9章 保证数据完整性.
计算机应用基础 上海大学计算中心.
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
数据库应用与程序设计.
第五讲 利用视图进行查询优化.
第六章 學習SQL語言.
第 8 章 資料的 新增、修改與刪除.
課程名稱:資料庫系統 授課老師:李春雄 博士
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
Chap 10 SQL定義、操作與控制指令.
第 11 章 建立檢視表.
第 14 章 預存程序.
第三章 关系数据库标准查询语言SQL 3.1 SQL概述 3.2数据定义语言(DDL) 3.3 SQL的数据查询(DML)
第 7 章 建立資料表與 資料庫圖表.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Transact-SQL 語言設計教學.
第8章 数据库的安全和完整性约束 数据库的破坏一般来自: 1.系统故障; 2.并发所引起的数据不一致; 3.人为的破坏;
課程名稱:資料庫系統 授課老師:李春雄 博士
第 16 章 觸發程序.
SQL Server 2000 数据库入门.
第7章 ADO.NET操作SQL Server数据库
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第三章:包   包(package)是一个可以将相关对象存储在一起的PL/SQL结构。包包含了两个分离的部件------包说明(specification)和包主体(body)。每个部件都单独被存储在数据字典中。包只能存储在数据库中,不能是本地的。除了可以将相关对象作为一组存在一起以外,包也是十分有用的,因为它们在依赖性方面的限制是比较小的。也有许多性能上的优点。
SQL SERVER 一些经典语句 1.
实验4:PL-SQL编程 1.实验目的 2.实验原理 PL/SQL是一种过程化语言,属于第三代语言,本实验在与熟悉使用PL/SQL编程.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
医院职工公费医疗系统.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
第3章 关系数据库标准语言SQL.
iRepor报表设计基础 IReport安装 普通实体报表 数据结果集报表 工作流主从报表 饼状图报表 柱状图,曲线图报表 条形码报表
实验二讲评 … 张榆….
数据库技术.
数据库应用技术 SQL Server 2005.
数据库技术与应用.
ORACLE 第九讲 触发器.
第11章 事务与锁 11.1 事务Transact 11.2 数据并发的问题 11.3 锁Lock 11.4 事务隔离级别.
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL查询语句 蔡海洋.
OceanBase 0.4:从API到SQL 日照
17 交易處理與鎖定 17-1 交易的基礎 17-2 交易處理 17-3 並行控制 17-4 資料鎖定 17-5 死結問題.
第三章 SQL Server数据管理.
第9章 存储过程的创建和使用 9.1 存储过程简介 9.2 创建存储过程 9.3 修改存储过程 9.4 删除存储过程 9.5 执行存储过程.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第4章 数据查询.
Presentation transcript:

4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。 (2) 视图的行和列数据来自于定义视图的查询所引用的表,并在引用表时动态生成。 (3) 视图的结构和显示的数据行并没有实际地以视图结构存储在数据库中,而是存储在视图所引用的基本表中。 (4)视图集中、简化和自定义每个用户对数据库的不同认识,是数据库的外模式。用户可以将数据库中自己感兴趣的特定数据展现在视图中。 (5) 视图也可作为一种安全机制,允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。

4.2 视图 数据库的三级模式结构

4.2 视图 视图示例:

4.2 视图 4.2.1创建视图 创建视图的方法: 1)在SSMS中使用向导创建; 2)使用T-SQL的CREATE VIEW语句。 创建视图时必须遵循以下原则: 只能在当前数据库中创建视图。 视图在数据库中作为一个对象存储,视图名称不得与数据库中的表重名。

4.2.1 创建视图 1.在SSMS中使用向导创建视图 【例4-45】在数据库School中,建视图V_StudentGrade,查询学生成绩情况。 1)展开School数据库文件夹,右击“视图”,在右键菜单上选择“新建视图”命令,打开新建视图对话框。 2)在添加表对话框中选择与视图有关的表、视图或函数(通过Ctrl或Shift键可选择多项),然后单击【添加】按钮;或者直接双击要添加的表等,即可将其添加到视图的查询中。这里选择表:Student、Course和Grade。单击“关闭”按钮,进入视图设计窗口。

4.2.1 创建视图 3)选择的表添加到窗口的上格,单击每个表字段前的复选框,可将该字段添加到视图中。也可在所示窗口的第二个子窗口选择视图字段,并可指定列的别名、排序方式和规则等。在选择过程中,第三个子窗口中的SELECT语句也会随之自动改变。也可直接在该子窗口中输入SELECT语句。这里选择StudentName、CourseName和Grade三个字段。 4)单击工具栏上的  按钮执行,结果显示窗口的第三个子窗口。 5)单击工具栏上的  按钮,在弹出的另存为对话框中为视图命名,本例输入“V_StudentGrade”,单击【确定】按钮保存视图,从而完成视图创建。

4.2.1 创建视图 【例4-46】在数据库School中,建立视图V_StudentAvgGradExcellent, 选拔优培生(平均成绩大于等于90的学生),并要求按平均成绩从高到低排列。 1) 在新建视图窗口中“视图”标签中选择视图V_StudentGrade 2) 在视图设计窗口中,选择“姓名”和“成绩”字段 3) 在第二个窗口中右击“姓名”,在右键菜单中“添加分组依据”;右击“成绩”,在“分组依据”中选择“Avg”在“筛选器”列中输入“>=90”,“排序类型”选“降序” 4) 运行查看视图结果,保存该视图为V_StudentAvgGradExcellent 。

4.2.1 创建视图 2. 使用SQL语句创建视图 在查询编辑窗口中执行CREATE VIEW语句创建视图 语法: AS SQL语句 【例4.47】创建一个性别为“男”的学生视图V_StudentSexMale,显示男学生的学号、姓名、班号和性别

4.2 视图 4.2.2 使用视图 创建后的视图跟的表的用法相同,可以通过视图查询和修改数据库。 【例4-48】在数据库School中,从视图V_StudentGrade查询陈佳迪的成绩。 SELECT * FROM V_StudentGrade WHERE 姓名='张三'

4.2 视图 4.2.3修改和删除视图 (1)修改视图 (2)删除视图 1)在SSMS中展开相应数据库和视图,右单击要修改的视图,在弹出的快捷菜单上选择“设计视图” 。 2)在弹出的“设计视图”窗口中,可以用在SSMS中创建视图相同的方法修改已定义好的视图。修改完毕存盘。   (2)删除视图 1)在SSMS中展开相应数据库和视图,右单击要删除的视图,在弹出的快捷菜单上选择“删除”。 2)单击【确定】按钮,即可删除选择的视图。

4.3 存储过程 (1)存储过程是T-SQL语句的集合,它作为数据库对象之一被存储在数据库中。 (2)存储过程的作用和使用方式类似于一些编程语言中的过程。 使用存储过程有以下优点: 1)可以在一个存储过程中执行多条SQL语句; 2)可通过输入参数的变化调用存储过程进行动态执行; 3)存储过程在创建时就在服务器端进行了编译,节省SQL语句的运行时间; 4)提供了安全机制,它限制了用户访问SQL语句的权利,只为特定用户开放存储过程。

4.3.1 创建存储过程 1.使用T-SQL语句创建存储过程 可以直接在SQL查询分析器中定义和调用存储过程。 常用存储过程的语法格式: CREATE PROC[DURE] 存储过程名 {@形式参数 数据类型}[VARYING][=默认值][OUTPUT] AS SQL语句1 … SQL语句n 说明: “形式参数”名称必须符合标识符规则;OUTPUT表示该参数是可以返回的,可将信息返回调用者;如果有多个参数,可以依次按以上参数定义规则列出,用逗号“,”隔开。

4.3.1 创建存储过程 【例4-49】在School中创建一个的存储过程proc_Student,查询所有学生的信息。 CREATE PROC proc_Student AS SELECT * FROM Student 执行存储过程 EXEC proc_Student

4.3.1 创建存储过程 2.使用SSMS模板创建视图 【例4-50】在School数据库中,创建带输入参数的存储过程proc_SearchStudent, 查询指定学生姓名的学生信息。 1)打开SSMS,展开School数据库文件夹,右单击“存储过程”,在弹出的快捷菜单上选择“新建存储过程”命令,打开新建存储过程对话框。 2)将“<Procedure_Name, sysname, ProcedureName>” 参数替换成存储过程存储过程的名称。 3)在“—Add Parameters”行下添加输入参数。 4)在BEGIN…END中输入查询语句后,运行SQL语句。 5)执行存储过程:EXEC proc_SearchStudent '张三'

4.3.1 创建存储过程 【例4-51】在School中创建存储过程proc_CountStudent,根据课程编号统计选修该课程的学生人数。 CREATE PROC proc_CountStudent @ccode varchar(20), -- 课程号,输入参数 @number int OUTPUT -- 选课人数,输出参数 AS SELECT @number=COUNT(Grade.StudentCode) FROM Grade WHERE Grade.CourseCode=@ccode 执行方法: 在SSMS中右击存储过程proc_CountStudent,在右键菜单中点击“执行存储过程” 输入@ccode的值后,点击“确定”

4.3.1 创建存储过程 【例4-52】在School中创建存储过程proc_StuAvgGrade,查询某个学生的选课数目和平均成绩。 CREATE PROC proc_StuAvgGrade @stcode varchar(20), @stcount int OUTPUT, @stavg int OUTPUT AS SELECT @stcount=COUNT(StudentCode),@stavg=AVG(Grade) FROM Grade WHERE StudentCode=@stcode 调用存储过程proc_StuAvgGrade,查询‘2015141442001’学生的选课数目和平均成绩。 DECLARE @scount int ,@savg int EXEC proc_StuAvgGrade '2015141442001', @scount OUTPUT,@savg OUTPUT PRINT '选课数目为'+CAST(@scount AS char(2))+'门' PRINT '平均成绩为'+STR(@savg,5,2)+'分'

4.3.2 查看、修改和删除存储过程 1.查看存储过程 2.修改存储过程 修改存储过程的T-SQL语句 3.删除存储过程 在SSMS中点击展开School数据库->“可编程性”->“存储过程”,右击要查看的存储过程,在右键菜单中选择“编写存储过程脚本为”->“Create到”->“新查询编辑窗口”命令 2.修改存储过程 右击存储过程,选择“修改”命令,然后与创建存储过程类似,可修改存储过程 修改存储过程的T-SQL语句 ALTER PROC 存储过程名 变量定义 AS SQL语句 3.删除存储过程 SSMS中点击存储过程,在右键菜单中选“删除”命令 DROP PROC 存储过程名

4.4 触发器 4.4.1 DML触发器 触发器是一种特殊的存储过程。 SQL Server提供了两类DML触发器: (1)AFTER触发器:是在表中数据被修改之后才被触发,触发器对变动的数据进行检查,如果发现错误,将拒绝或回滚变动的数据。 (2)INSTEAD OF触发器:在数据修改以前被触发,并取代修改数据的操作,转去执行触发器定义的操作。

4.4.1 DML触发器 1. 应用范围 (1)实现由主键、外键不能保证的复杂的一致性约束 (2)级联修改数据库中相关的表 (3)防止恶意或错误的Insert、Update、Delete操作 (4)根据数据表修改前后的状态采取相应的操作 2. 临时触发事件表 (1)deleted表:存储被删除的数据 (2)inserted表:存储被插入到表中的数据 (3)触发器执行结束后,deleted表和inserted表自动被删除

4.4.1 DML触发器 3. 创建DML触发器 CREATE TIGGER 触发器名 ON 表名|视图名 FOR [INSERT], [UPDATE], [DELETE] AS SQL 语句 【例4.53】在School数据库中创建一个简单的触发器tri_StudentInsDel,当用户插入或删除T_Student表中学生记录时,能自动显示表中的内容。 CREATE TRIGGER tri_StudentInsDel ON Student FOR INSERT, DELETE AS SELECT * FROM Student

4.4.1 DML触发器 【例4-54】在School数据库的Student表上创建一个触发器tri_StudentCodeUpdate,当对学号列进行修改时,给出提示信息并取消修改操作。 CREATE TRIGGER tri_StudentCodeUpdate ON Student FOR UPDATE AS DECLARE @text varchar(50) IF UPDATE(StudentCode) BEGIN SET @text='学生数据被修改!!!' RAISERROR(@text,16,1) ROLLBACK TRANSACTION END 返回用户定义的错误信息,并给出与信息关联的严重级别(1~18)和有关错误调用状态的信息(1~127 ) 。 取消修改操作

【例4-54】在School数据库的Grade表上创建一个触发器tri_Grade,当向Grade表中插入一条记录时,检查该记录的学号是否在Student表中,如果不存在则取消插入操作,否则显示“插入操作成功完成”。 CREATE TRIGGER tri_Grade ON Grade FOR INSERT AS DECLARE @text varchar(50) IF EXISTS(SELECT * FROM inserted WHERE inserted.StudentCode NOT IN (SELECT StudentCode FROM Student)) BEGIN SET @text='学号不存在,将取消该插入操作 ' RAISERROR(@text,16,1) ROLLBACK TRANSACTION END Else SET @text='插入操作成功完成' SELECT @text

4.4.1 DML触发器 4. 使用模板创建触发器 1)在SSMS中,展开“表”文件夹,右击触发器所属的表,在弹出的快捷菜单上选择“新建触发器”命令。 2)在打开的查询编辑容器中,修改代码,然后执行代码,即将创建触发器。 【例4.55】在School数据库的Course表上创建触发器tri_UpdateCourse,当修改Course表LeftSeats时,检查LeftSeats是否等于TotalSeats减去统计Grade所得的该课程选课人数。相等,则确认修改,否则取消修改 1)在SSMS中,展开“数据库”->“School”->“表”->“Course”->“触发器” ,右击“触发器”,在弹出的快捷菜单上选择“新建触发器”命令。 2)在打开的查询编辑容器中,修改代码,然后执行代码,即创建触发器tri_UpdateCourse。

4.4.2 DDL触发器 1. DDL触发器简介 2. DDL触发器的创建 当数据库中发生DDL事件(如修改表结构)时触发 用于审核、控制对数据库的操作,存储于数据库中 主要用途: 防止对数据库结构和对象进行某些更改 执行某些操作以响应数据库结构中的更改 记录数据库架构中更改或事件 2. DDL触发器的创建 CREATE TRIGGER 触发器名 ON {ALL SERVER|DATABASE} {FOR|AFTER} {event_type|event_group}[,…] AS SQL语句

4.4.2 DDL触发器 【例4.56】在School数据库中创建DDL触发器,防止数据表结构被修改或删除 CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT '本触发器禁止修改表结构或删除表' ROLLBACK

4.4.3 查看、修改和删除触发器 1)在SSMS中,展开触发器所在表的“触发器”文件夹,点击要修改的触发器,在弹出的右键快捷菜单上选择“修改”命令,显示触发器修改代码。修改方法同使用SSMS创建触发器方法相同。 2)如要删除,单击【删除】按钮,在弹出的确认对话框中单击【是】,即删除了所选择的触发器。