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

Slides:



Advertisements
Similar presentations
2014 年 10 月. 学生入学考试 15 位编号 号工号 ****** 北科 MBA 网址: 如: 初试密码为身份证 后六位,登录成功 后可进行修改。
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Chapter 3: SQL.
第4章T-SQL与可编程对象 SQL语言是结构化查询语言(Structure Query Language)的简称,它是一个通用的、功能强大的关系数据库操作语言,最初由IBM公司在20世纪70年代中期开发成功。并被国际标准化组织采纳为关系数据库语言的国际标准。 Transact-SQL( 简称T-SQL)是SQL.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
数据库原理与SQL Server 第6章 全面掌握SQL Server 2000.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
(第11讲) Mysql 简介和创建新的数据库 本讲大纲: 1、MYSQL简介与概要 2、访问MYSQL的几种途径
第3章 SQL Server 2005 的应用.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
6 存储过程与触发器 (1)存储过程是T-SQL语句的集合,它作为数据库对象之一被存储在数据库中。
An Introduction to Database System An Introduction to Database System
課程名稱:資料庫系統 授課老師:李春雄 博士
第 16 章 觸發程序.
SQL Server 2000 数据库入门.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
第7章 ADO.NET操作SQL Server数据库
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第1章 数据库基础.
SQL Injection.
辅导课程六.
第5章 SQL的高级应用 教学目标:通过本章学习,明确索引与视图的作用,掌握索引及视图的使用方法;掌握存储过程与触发器的创建及使用方法。
SQL SERVER 一些经典语句 1.
6 存储过程与触发器 (1)存储过程是T-SQL语句的集合,它作为数据库对象之一被存储在数据库中。
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据库基础 1.
第一讲: 基本流程(1).
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第9章 存储过程和触发器 本章导读: 存储过程和触发器都不是标准的SQL语句,不同的数据库管理系统在具体实现时语法会有所不同。存储过程是一组Transact-SQL语句和可选控制语句的预编译集合,它是按名存储并运行于服务器上,独立于表的数据库对象。而触发器是一种在关系表上定义,伴随用户修改相关数据而自动执行的特殊存储过程,主要用于强化复杂的规则和要求。
数据库技术.
实验二讲评 … 张榆….
数据库技术.
数据库应用技术 SQL Server 2005.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
ORACLE 第九讲 触发器.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL 范引娣.
VisComposer 2019/4/17.
SQL查询语句 蔡海洋.
第10章 触发器的创建和使用 10.1 触发器概述 10.2 创建触发器 10.3 修改触发器 10.4 删除触发器.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
第三章 SQL Server数据管理.
Web安全基础教程
第07章 操作查询和SQL查询 操作查询是Microsoft Access 2007查询中的重要组成部分,利用它可以对数据库中的数据进行简单的检索、显示和统计,而且可以根据需要对数据库进行修改。SQL是一种结构化查询语言,也是一种功能极其强大的关系数据库语言。本章将介绍在Access中创建操作查询和SQL查询。
数据库系统与应用实验 基于SQL Server 2005.
第3章 关系数据库的创建与维护 Microsoft SQL Server2008 概述 SQL Server数据库基础 数据库的创建与维护
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
VRP教程 2011.
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
Polarization of electro- magnetic wave after reflection
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
YOUR SUBTITLE GOES HERE
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
培训课件 AB 变频器的接线、操作及参数的备份 设备动力科.
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)如要删除,单击【删除】按钮,在弹出的确认对话框中单击【是】,即删除了所选择的触发器。