【SQL server】视图和索引的创建与管理

这篇具有很好参考价值的文章主要介绍了【SQL server】视图和索引的创建与管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本实验数据来源课参照一下本专栏文章:

【SQL server】进行简单查询分组、连接查询子查询和汇总(含teaching数据库创建及实验拓展)_Deep-sea shark的博客-CSDN博客_sql 分组汇总

在SSMS中创建视图

视图是一张虚表,数据库中只存储视图的定义,而不存储视图对应的数据(除非是索引视图)。

视图可作为一种安全机制,通过使用视图可以集中、简化和定制用户的数据库显示,用户可以通过视图访问数据,而不被授予直接访问视图基础表的权限。

实验7-1在SSMS中创建视图

实验要求

在“teaching”数据库创建所有在年龄大于22岁(含22岁)的所有男生的学生信息视图,视图中

只显示学号、姓名、性别和年龄,视图命名为view_s。

实验步骤

(1)在“对象资源管理器”中展开“teaching”数据库,展开“视图”选项。右键单击“视图”选

项,在弹出的快捷菜单中选择“新建视图”菜单,此时弹出“添加表”对话框,选择“表”选项卡中的student表,然后单击“添加”按钮,就可以将其添加到视图设计界面中了。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

(2)添加表后,单击“关闭”按钮,进入视图设计器。该界面分为四个子窗口,最上面的子窗口显

示添加的表结构,读者可以通过勾选列名前的复选框让某列显示在创建的视图中,此处选择sno,sname,ssex和sage四列。第二个子窗口显示用户选择的列、列的别名、表、是否输出、排序类型、排序顺序、筛选器等属性。通过设置第二个子窗口,可以进一步设置视图显示的内容,对显示内容进行筛选。根据实验要求,在第二个窗口“筛选器”中把ssex设置为“=男”,把sage设置为“>=22”。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

使用T-SQL语句创建视图

实验要求

1.在“teaching”数据库创建“S_C_SC_XJ”视图,包括“信息计算”专业的学生的学号、姓名,和他们选修的课程号、课程名和成绩。

2.创建male_view视图,用于存放所有男生的学生信息,同时使用WITH CHECK OPTION选项。

实验步骤

在查询命令窗口中输入以下的T-SQL语句:

use teaching
go
create view S_C_SC_XJ
as
select student.sno,sname,COURSE.cno,cname,score
from student,sc,COURSE
where student.sno=sc.sno and sc.cno=COURSE.cno
go
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

3.单击单击(分析)按钮,分析有无语法错误,当在结果窗口中显示“命令已成功完成”时,表示创建视图的T-SQL语句没有语法错误。否则,如有语法错误,则要修改创建视图的T-SQL语句。当没有语法错误时,单击执行按钮,完成视图的创建。

4.在查询命令窗口中输入以下T-SQL语句,并执行。

create view male_view2  
as
select sno,sname,ssex,sage,en_time,specialty,grade
from student where ssex='男'
with check option

分析with check option的作用:

暂时不分析,自主完成。

使用T-SQL语句修改视图

实验要求

在“teaching”数据库,修改“S_C_SC_XJ”视图,要求包括每个学生的学号、姓名和选修的课程总数。

实验步骤

1.打开SSMS,单击“新建查询”按钮,打开查询命令窗口。

2.在查询命令窗口中输入以下T-SQL语句,并执行。

use teaching
go
alter view S_C_SC_XJ
as
    select student.sno,sname,count(sc.cno) as 课程总数
    from student,sc
    where student.sno=sc.sno
    group by student.sno,sname
go
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

执行结束后,通过查看并执行视图,可以明显看到视图发生了变化,与之前创建的视图明显的不同。

使用视图

实验要求

1.在查询窗口中查询View_1视图,统计男生的平均年龄。

2.分别通过male_view视图插入一条男生信息和一条女生信息。

实验步骤

1.在查询命令窗口中输入以下T-SQL语句,并执行。

USE teaching
SELECT avg(sage) as 平均年龄
FROM view_s
GO
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

可以看到,在View_1视图中男生的平均年龄为22岁。

2.在查询命令窗口中输入以下T-SQL语句,并执行。

INSERT INTO male_view VALUES ('20195301', '张三', '男', 20)
--该语句能顺利执行。
INSERT INTO male_view VALUES ('20195312', '李思', '女',17)
--请读者注意该语句将不能执行。
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

分析原因可知筛选器中的限制条件会限制视图的插入功能,必须满足要求才能插入成功。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
消息 550,级别 16,状态 1,第 34 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
语句已终止。

这个报错主要意思就是,性别不符合约束条件。

删除视图

实验要求

1.在SSMS删除视图view_s

2.在查询窗口中执行T-SQL语句删除视图S_C_SC_XJ

实验步骤

1.在SSMS的“对象资源管理器”选中要删除的视图,单击右键,在弹出菜单中选择“删除”命令,进入“删除对象”对话框,单击“确定”按钮就能删除视图。

2.在查询命令窗口中输入以下T-SQL语句,并执行。

        USE teaching
        GO 
        DROP VIEW S_C_SC_XJ
        GO 
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

执行完成后刷新视图可以看见S_C_SC_XJ已经不见了,说明此时删除成功了。

在SSMS中创建带索引的视图

实验要求

在“teaching”数据库为“student”表创建在sname上的非聚集不唯一的索引。

实验步骤

1.启动SSMS,在“对象资源管理器”面板中,展开teaching数据库中的student表前面的“+”号,选中“索引”选项右击,在弹出的快捷菜单中选择“新建索引”命令。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

2.选择“新建索引”命令,选择“非聚集索引”,进入“新建索引”对话框。由于student表中已经建立主键,自动建立了聚集索引,一个表只能有一个聚集索引,因此这里只能建非聚集索引。

3.在“新建索引”对话框中的“常规”选择页中可以创建索引,在“索引名称”文本框中输入索引名称,确定是否选择“唯一”复选框等。例如输入“索引名称”为“index_sname”。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

4.通过选择索引设置按钮,可以为新建的索引添加、删除、移动索引列。例如,选择“添加”按钮,进入“添加索引列”窗口。选中“sname”列前的多选按钮,单击“确定”按钮即可添加一个按“sname”列升序排序的非聚集索引。再选择“确定”按钮,索引创建完成。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

5.索引创建完成后,在SSMS的“对象资源管理器”面板中,选择创建了索引的表(student表),展开student表的“索引”选顶前面的“+”号,就会出现新建的索引“index_sname”.

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

使用T-SQL创建视图

实验要求

在“teaching”数据库为“student”表,根据姓名sname列和专业specialty创建一个名为index_sname_specialty的唯一索引,要求姓名升序排序,专业降序排序。

实验步骤

1)打开SSMS,单击“新建查询”按钮,打开查询命令窗口。

  1. 在查询命令窗口中输入以下T-SQL语句,并执行。

ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
use teaching
go --nonclustered表示非聚集的
create unique nonclustered index index_name_specialty
on student(sname asc,sage desc)
go

创建索引视图。

实验要求

创建一个“female_view”视图,该视图用于显示女生的学生信息,并为该视图按“sno”升序创建一个具有唯一性的聚集索引。

实验步骤

1.创建视图,在查询命令窗口中输入以下T-SQL语句,并执行。

USE teaching 
GO
CREATE VIEW female_view
WITH schemabinding --模式绑定
AS
SELECT sno,sname,ssex,specialty FROM dbo.student
WHERE ssex='女'

2.创建索引,在查询命令窗口中输入以下T-SQL语句,并执行。

CREATE UNIQUE CLUSTERED INDEX index_female ON female_view(sno)
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

查看索引信息

使用T_SQL语句查看索引信息

在查询命令窗口中输入以下T-SQL语句,使用系统存储过程sp_helpindex,并执行。

USE teaching
GO
EXEC  sp_helpindex  student
或使用系统存储过程sp_help,
USE teaching
GO
EXEC sp_help student
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

删除索引

使用T-SQL语句删除“student”表中的“Index_sname”索引

在查询命令窗口中输入以下T-SQL语句,并执行。

USE teaching
DROP  INDEX student.Index_sname
GO

使用T-SQL语句创建触发器

在查询命令窗口中输入以下T-SQL语句并执行,将在student表上创建DML触发器NO_UP_S,禁止修改student表的数据。

use teaching
go
create trigger NO_UP_S on student
for update
as 
    print '禁止修改student表!'
    rollback
go

验证触发器,在查询窗口中输入修改sc表的语句:

update student
set sage=20
where sno='20190211'
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

由于此时发生了UPDATE事件,自动触发NO_UP_S触发器。触发器执行后,查询窗口的消息栏将显示触发器消息。

在查询命令窗口中输入以下T-SQL语句并执行,为course表中创建DML触发器C_NO_UP_CNOCNAME,禁止修改课程号cno和课程名cname字段。

use teaching 
go 
create trigger C_NO_UP_CNOCNAME on COURSE
for update
as    
    if update(cno) or update(cname)
    begin
        print '亲,不能修改课程号和课程名哦!'
        rollback
    end
go
ssms创建视图,数据库学习,数据库,前端,Powered by 金山文档

在查询命令窗口中输入以下T-SQL语句并执行,为course表创建一个DML触发器C_XS,在插入和更新数据时自动显示提示信息。

use teaching
go 
create trigger C_XS on COURSE
after insert,update
as    
    print'你正在给course表插入或更新数据!'
go

在查询命令窗口中输入以下T-SQL语句并执行,为course表创建一个DML触发器C_PRINT,在插入和修改数据时,都会自动显示所有学生的信息。

use teaching
go
create trigger C_PRINT on COURESE
for insert,update
as 
    select * from COURSE
go

在查询命令窗口中输入以下T-SQL语句并执行,在学生表course上创建一个DELETE类型的触发器C_DEL_COU,删除数据时显示删除记录的个数。文章来源地址https://www.toymoban.com/news/detail-767508.html

use teaching
go
create trigger C_DEL_COU on COURSE
for delete 
as 
    declare @count varchar(50)
    select  @count=str(@@rowcount)+'个课程被删除'
    select  @count
return

到了这里,关于【SQL server】视图和索引的创建与管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

    【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

    2023年,第34周,第1篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! SQL SERVER 官方本身就有数据库可视化管理工具SSMS,所以大部分都会使用SSMS。以前版本是直接捆绑, 安装完成就自带有,最近版本可以不捆绑,需要单独下载安装对应版本。 除了 Microsoft SQL S

    2024年02月12日
    浏览(11)
  • SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置

    SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置

    目录 (一)前言 (二)下载与安装 1. 下载 (1)下载地址 (2)SSMS对操作系统的要求 2. 安装 (1)存放下载好的安装包 (2) 双击进入安装 3. SSMS的简单使用 (1)打开SSMS (2)SSMS登录配置框填写 (3)删除登录界面上的记录 (三)卸载SSMS 1. 进入控制面板 2.  找到卸载软件

    2024年02月03日
    浏览(14)
  • SQL Server数据库 -- 表的创建与管理

    SQL Server数据库 -- 表的创建与管理

    一、数据表的组成 二、创建数据表 表的创建 表的查看 表的增加 表的修改 表的删除、 三、表的架构操作 四、总结 上次博客写到了数据库的创建与管理,但是创建的库里面什么东西都没有,现在我们需要在库里面添加数据表内容   在创建表之前,我们需要先知道表里面有哪

    2024年02月11日
    浏览(8)
  • SQL Server 数据操控,视图和索引

    SQL Server 数据操控,视图和索引

    此查询过程相当于: (1)理解索引的概念: 当表的数据量比较大时,查询操作会比较耗时。这时候建立索引是加快查询速度的有效手段,它能快速定位到需要查询的内容。用户可以根据需要在基本表上建立一个或多个索引,用来提供多种存取路径,加快查找速度。 (2)建立

    2024年02月01日
    浏览(12)
  • 数据库实验——通过SQL Server Management Studio创建及管理数据库

    数据库实验——通过SQL Server Management Studio创建及管理数据库

    (1)熟悉SQL Server Management Studio。 (2)掌握通过SQL Server Management Studio管理数据库的方法。 (3)掌握数据库及其物理文件的结构关系。 (4)掌握通过SQL Server Management Studio管理数据表的方法。 1.通过SQL Server Management Studio创建数据库 创建一个名称为学生管理信息Student_info数

    2024年02月08日
    浏览(13)
  • 数据库sql语句(视图的创建)

    数据库sql语句(视图的创建)

    例题:  建表:要注意各表之间的索引联系,建表先后顺序很重要,不然建不了,例如先建dept,在建其他表,先在dept插入数据,再在其他表插入数据 (1) (2)  (3)  (4) (5)    插入数据如下图 sql语句: 在 Student 表中加入属性 SAGE(INT 型 )  将 Student 表中的属性 SA

    2024年02月04日
    浏览(40)
  • 浅谈SQL Server索引视图(物化视图)以及索引视图与查询重写

    浅谈SQL Server索引视图(物化视图)以及索引视图与查询重写

    目录 (一)前言 (二)正文 1. 物化视图(索引视图)与查询重写的基本概念 2. 创建测试环境 (1)建表 (2)写数据 3. 索引视图创建 (1)创建语法 (2)为索引视图创建索引  4. 查询重写 5. 为什么查询会被重写  6. 索引视图什么时候更新 7. 改变基于视图的查询 之前做

    2024年02月05日
    浏览(40)
  • SQL Server判断数据库、表、列、视图、存储过程、函数是否存在

    在写一些业务逻辑相对复杂点的存储过程的时候,经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时,往往想不起完整的SQL写法。因此,记录一些常用的数据库对象是否存在的判断方法,可以达到快速查找的目的。正是:好记性不如烂笔头。

    2024年02月02日
    浏览(212)
  • SQL Server 索引和视图

    SQL Server 索引和视图

    难度指数:* * * 目录 1.索引 什么是索引? 索引的作用? 索引的分类 1. 唯一索引 2. 主键索引 3. 聚集索引 4.非聚集索引 5.复合索引 6.全文搜索 索引的创建(命令+图形) 2. 视图 创建视图 查询视图 更新视图 删除视图 实例 什么是索引? 索引(Index)是数据库中一种用于加速对

    2024年02月04日
    浏览(15)
  • SQL server设置用户只能访问特定数据库、访问特定表或视图

    SQL server设置用户只能访问特定数据库、访问特定表或视图

    在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我

    2023年04月09日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包