目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
使用T-SQL语句创建视图

使用T-SQL语句创建视图

上面介绍了使用图形工具创建视图的步骤,下面将介绍使用T-SQL语句进行视图的创建,其语法格式如下:

  CREATE [<owner>] VIEW_name [ (column [, ...n] )] [WITH <attribute> [, ...n] ]

AS

select_statement

 [WITH CHECK OPTION]

<attribute>::=

{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA}


*语法:

CREATE VIEW 视图名[(列名[,...n])]  --指定视图列名

AS  SELECT查询语句

视图创建的说明:

*准则

*可以在其他视图的基础上创建视图。

*SELECT查询语句如果包含ORDER BY子句,则必须在SELECT子句后加TOP参数。

*不能为视图定义全文索引。

必须指定视图中列的名称

*视图中的列是从算术表达式、内置函数或常量派生而来的。

*视图中存在两列或多列具有相同的名称(由于定义中通常涉及多个基表的连接)。

*希望为视图中的列指定一个与基表列不同的名称,视图列将继承基表列的数据类型。

*若无需在创建视图时指定列名,SQL Server会为视图中的列指定与创建视图的查询所引用的列,拥有相同的名称和数据类型。

在图书管理数据库Library中,由图书表Book创建出人民邮电出版社出版的图书视View_BookPostTel

*代码:

USE Library

GO

CREATE VIEW View_BookPostTel       --创建视图

AS                                     --为以下子查询

      SELECT BID,Bname,Author,Publisher,Price

      FROM Book             

      WHERE Publisher='人民邮电出版社'


任务  查看视图信息


视图创建好后,SQL Server会将所创建视图和视图的基本信息保存在系统表中,而且系统允许用户通过查看视图的属性来获得与视图相关的具体信息。视图的信息存放在SQLServer以下几个的系统表中。

sysobjects:存放视图名称等基本信息。

syscolumns:存放视图中定义的列。

sysdepends:存放视图的依接关系。

syscomments:存放定义视图的文本。

、查看视图基本信息

可以使用系统存储过程来显示视图的名称、拥有者及创建时间,其语法格式如下:

sp_help view_ name

语法参数的含义如下。

关键字sp_help:表示查看视图特征。

view_name:是所查看的视图名称。


查看视图文本信息

如果视图在创建或修改时没有加密,那么可以使用系统存储过程来显示视图定义的语句,否则,如果视图被加密,那么连视图的拥有者和系统管理员都无法看到它的定义。其语法格式如下:

sp_helptext view_name

查看视图的依赖关系

有时候需要查看视图与其他数据库对象之间的依赖关系,比如,视图在哪些表的基础上创建、又有哪些数据库对象的定义引用了该视图等。可以使用系统存储过程查看,其语法格式如下:

sp_depends view_name

修改视图和创建视图一样,也有两种方法,即使用SSMS或者使用T-SQL修改视图信息。

通过SSMS修改视图信息

通过T-SQL修改视图信息

除了可以通过SSMS修改视图信息以外,还可以通过T-SQL语句来修改视图的信息,其语法格式如下:

ALTER VIEW view_name [ <column  [, ...n] ) ]

[WITH ENCRYTION]

AS

sele_statement

FROM table name

 [WITH CHECK OPTION]


*语法:

ALTER VIEW 视图名

AS  SELECT 查询语句

*说明:

此命令可以修改已经创建了的视图,除命令不同以外,其他参数与创建视图语句中的参数完全相同。


*4修改人民邮电出版社出版的图书视图View_BookPostTel,为视图指定列名。

*代码:

ALTER VIEW View_BookPostTel(图书编号,书名,作者,出版社,价格)                 --指定视图中每列的名称

AS SELECT BID,Bname,Author,Publisher,Price

      FROM Book

      WHERE Publisher='人民邮电出版社'


*注意:

*不允许修改视图中表达式、聚合函数和GROUP BY子句派生的列。

*视图来自多个表时,不允许插入和删除数据行

*其他操作都可以把视图当做(虚)表来进行


*6*从读者借书应还日期信息视图“View_RBorrow”中查询出读者程鹏所借图书的应还日期等信息。

*代码:

SELECT 读者编号,姓名,图书编号,图书名,应还日期

FROM View_RBorrow               --查询来自视图

WHERE 姓名='程鹏'                   --选择读者为程鹏


任务   通过视图更新数据

创建完视图后不仅可以利用视图查看表中的数据,在满足一定的情况下还可以通过视图来添加、修改、删除表中的数据。更新视图的数据,实际上都是在修改视图的基表中的数据。

使用INSERT插入数据

通过视图插入数据和在基表中插入数据一样,都可以通过INSERT语句来实现。插入数据的操作是针对视图中的列的插入操作,而不是针对基表中所有的列的插入操作。由于进行插入操作视图不同于基表,所以使用视图插入数据需要满足一定的限制条件:

使用INSERT语句进行插入操作的视图必须能够在基表中插入数据,否则插入操作会失败。

如果视图上没有包括基表中所有属性为NOT NULL的行,那么插入操作会由于那些列的NULL值而失败。

如果在视图中包含使用统计函数的结果,或者是包含多个列值的组合,则插入操作不成功。

不能在使用了DISTINCTGROUP BYHAVING的语句的视图中插入数据。


使用INSERT插入数据

如果创建视图的CREATE VIEW语句中使用了WITH CHECK OPTION,那么所有对    视图进行修改的语句必须符合WITH CHECK OPTION中限定的条件。

对于由多个基表连接而成的视图来说,一个插入操作只能作用于一个基表上。

使用INSERT通过视图向基表中插入数据的语法格式如下。

INSERT INTO view_name  [ (column_name  [,…n] ) ]

VALUES  (expression | NULL | DEFAULT  [,…N] )

*7通过视图View_BookPostTel插入一本人民邮电出版社出版的名为“SQL Server 2008数据库设计与实现的图书。

*代码:

INSERT INTO View_BookPostTel(图书编号,书名,作者,出版社,价格)

VALUES('TP311.138/231','SQL Server 2008数据库设计与实现', 'Louis Davidson','人民邮电出版社','89.00')








使用UPDATE更新数据

在视图中更新数据也与在基表中更新数据的操作一样,但是当视图基于多个基表中的数据时,与插入操作一样,每次更新操作只能更新一个基表中的数据。在视图中同样使用UPDATE语句进行更新操作,而且更新操作也受到与插入操作一样的限制条件。其语法格式如下:

UPDATE view_name

SET  column_name=new_expresion  [,…n]

[WHERE conditions]


*8通过视图“View_BookPostTel” 更新人民邮电出版社出版的名为“SQL Server 2008数据库设计与实现的图书为“SQL Server 2008数据库设计

*代码:

UPDATE View_BookPostTel

SET 书名='SQL Server 2008数据库设计'

WHERE 书名='SQL Server 2008数据库设计与实现'


三、 使用DELETE删除数据

通过视图删除数据与通过基表删除数据的方式是一样的,都是使用DELETE语句实现,并且其限制规则与插入、更新操作一样。在视图中删除的数据同时在基表中也被删除。当一个视图连接了两个以上的基表时,对数据的删除操作则是不允许的。但是,如果视图的列来自于常数或几个字符串列值的和,那么尽管在插入和更新操作时是不允许的,但却可以在删除操作中进行。在视图中删除的数据行,无论是否包括某些基表中的列,同样被删除,因为删除操作是针对数据行操作的。

使用DELETE语句删除数据的语法格式如下:

DELETE  [FROM] view_name  [WHERE conditions]

*9通过视图View_BookPostTel删除人民邮电出版社出版的名为SQL Server 2008数据库设计的图书。

*代码:

DELETE FROM View_BookPostTel

WHERE书名='SQL Server 2008数据库设计'





任务    删除视图

在创建视图后,如果不想再需要该视图,就可以将其删除。视图删除后,视图定义及与之相关联的权限将被删除,但视图所基于的表的数据并不受到影响。删除视图有两种方法:

使用SSMS和使用T-SQL语句。

使用SSMS删除视图

下面通过例子介绍使用图形工具删除视图的方法。

【例7-24】删除view_student视图

(1)启动SSMS,在对象资源管理器中展开数据库”|StudentInfo|“视图节点,右击视图列表中的dbo.view_student

(2)在弹出的快捷菜单中选择删除(F)”命令,弹出删除对象对话框。

(3)单击确定按钮,完成对view_student视图的删除。

、使用T-SQL语句删除视图

上面介绍了使用图形工具删除视图的步骤,下面介绍使用T-SQL语句进行删除视图,格式如下:

DROP  VIEW  name [ , ...n ]

语法参数的含义如下。

DROP VIEW:用来删除视图。

name:是要删除的视图名称,并且可以同时删除多个视图,当删除多个视图时各视图之间用逗号分开。


*语法:

DROP VIEW 视图名

*5删除视图V1_BOOKS

*代码:

DROP VIEW V1_BOOKS


单元七  视图和索引 习题:

一填空题

1.创建唯一性索引时,应保证创建索引的列不包括重复的数据,并且没有两个或两个以上的空值。如果有这种数据,则必须先将其删除,否则索引不能成功创建。

2.一个表最多只可以有_1__个聚集索引。

3.在SQL Server 中,有两种基本类型的索引:简单索引_复杂索引

4.查看视图的基本信息可以使用系统存储过程_ sp_help,查看一个视图order view的定义文本信息,可以使用sp_helptext

5.在SQL Server 2008系统中,可以把视图分成3种类型,即标准视图、索引视图和分区视图

二选择题

1CREATE UNIQUE NONCLUSTERED INDEX indexidON学生表(学号)语句创

建了一个(D )索引。

    A.唯一索引    B.聚集索引

    C.主键索引    D.唯一非聚集索引

2.如果需要加密视图的定义文本,可以使用下面( D)子句。

  AWITH CHECK OPTION    BWITH SCHEMABINDING

  CWITH NOCHECK             DWITH ENCRYPTION

3.使用SQL语句通过视图修改基本表中的数据时,其关键字是( C )

  ACREATE            BUPDATE

  CALTER               DDROP

4.以下关于视图的描述,正确的是( ABD )

  A.视图是从一个或几个基表或视图中导出的虚表

  B.视图并不实际存储数据,只在数据字典中保存其逻辑定义

  C.视图里面的任何数据不可以进行修改

  DSQL中的SELECT语句可以像对基表一样来对视图进行查询

5.下列几种情况适合创建索引的是( C )

  A.列的取值范围很少    B.用作查询条件的列

C.频繁搜索的列      D.连接中频繁使用的列