存储过程和触发器的应用

实验案例三:创建视图

方法一:在图形界面下创建视图(以Myschool数据库为例)

创建一个视图,分别来自三个的表的三个列,并重命名列,生成的视图名为student_info,如下图所示:

通过查询语句查看视图:select * from student_info

方法二:使用语句创建视图(以schoolDB数据库为例)

进行数据库设计的时候,一个表有很多列,我们可以在表上创建视图,只显示指定的列。

Select语句可以作为一个视图

select Sname,sex,Class from dbo.TStudent where Class='网络班'

1、创建视图,筛选行和列

create view netstudent

as

select Sname,sex,Class from dbo.TStudent where Class='网络班'

从视图中查找数据:

select * from netstudent where sex='男'

创建视图,更改列的表头,计算列,产生计算列

selectStudentID,Sname,sex,cardID,Birthday,Email,Class

from dbo.TStudent

2、创建视图,更改列的表头

create view V_Tstudent1

as

select StudentID 学号,Sname姓名,sex 性别,cardID 身份证号码,Birthday 生日,Class 班级 from dbo.TStudent

select * from V_Tstudent1

以后再去查询的时候就非常方便了。

实验案例四:存储过程

1、常用的系统存储过程

exec sp_databases --列出当前系统中的数据库

exec sp_renamedb 'mybank','bank' --改变数据库名称(单用户访问)

use MySchool

go

exec sp_tables --当前数据库中可查询对象的列表

exec sp_columns student --查看表student中列的信息

exec sp_help student --查看表student的所有信息

exec sp_helpconstraint student --查看表student表的约束

exec sp_helptext view_student_result --查看视图的语句文本

exec sp_stored_procedures --返回当前数据库中的存储过程列表

2、常用的扩展存储过程(在C盘下创建一个文件夹bank)

exec xp_cmdshell 'mkdir c:\bank',no_output --创建文件夹c:\bank

exec xp_cmdshell 'dir c:\bank\' --查看文件

如果执行不了上面的语句,请开启下面的功能。然后再次执行上面的两条语句。

若xp_cmdshell作为服务器安全配置的一部分而被关闭,请使用如下语句启用:

exec sp_configure 'show advanced options', 1 --显示高级配置选项(单引号中的只能一个空格隔开)

go

reconfigure --重新配置

go

exec sp_configure 'xp_cmdshell',1 --打开xp_cmdshell选项

go

reconfigure --重新配置

go

3、用户自定义的存储过程(以schoolDB数据库为例,计算网络管理专业的平均分)

use schoolDB

go

if exists (select * from sysobjects where name='usp_getaverageresult')

drop procedure usp_getaverageresult

go

create procedure usp_getaverageresult

as

declare @subjectid nvarchar(4)

select @subjectid=subjectid from dbo.TSubject where subJectName='网络管理'

declare @avg decimal (18,2)

select @avg=AVG(mark) from dbo.TScore wheresubJectID=@subjectid

print '网络管理专业平均分是:'+convert(varchar(5),@avg)

go

exec usp_getaverageresult

实验案例五:触发器

(Myschool数据库为例)

创建触发器(禁止修改admin表中数据):

create trigger reminder

on admin

for update

as

print '禁止修改,请联系DBA'

rollback transaction

go

执行语句,查看错误信息:

update Admin set LoginPwd='123' where LoginId='benet'

select * from Admin

实验案例六:创建触发器

(Myschool数据库为例)

要求:创建一个触发器,以确保student表中的数据不会被删除。

create trigger stu_del

on student

for delete

as

print '你不具备删除管理员信息的权限'

rollback transaction

go

执行一条delete语句,测试结果。

delete from Student where StudentName='喜洋洋

原文发布于微信公众号 - L宝宝聊IT(gh_b0e552aa80db)

原文发表时间:2017-12-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

安全科普:SQLi Labs 指南(Part 3)

Freebuf上有两篇SQLi Labs的教程安全科普:SQLi Labs 指南 Part 1和安全科普:SQLi Labs 指南 Part 2。这两篇教程只讲...

1919
来自专栏晨星先生的自留地

mysql注入高级篇2--sqli lab

1313
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(999)-如何使用这个系统来开发?

前言 这篇文本讲述了这个框架的使用方式,及一些疑问的答疑,更加精准的使用这个框架来建立功能 经过几个版本的迭代,系统使用更加方便,代码更加简洁也更加的智能,...

2396
来自专栏数据库

存储过程和触发器的应用

实验案例三:创建视图 方法一:在图形界面下创建视图(以Myschool数据库为例) 创建一个视图,分别来自三个的表的三个列,并重命名列,生成的视图名为stude...

18410
来自专栏黄Java的地盘

提高开发效率之VS Code基础配置篇

VS Code可以通过名为代码片段的功能像编辑器中插入一段指定的文本,具体操作步骤为首选项->用户代码片段->新建全局代码片段。

802
来自专栏蜉蝣禅修之道

oracle数据库学习之rownum

1522
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)

前言 有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉 虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我...

2505
来自专栏coding for love

在线商城项目02-展示商品列表页面并抽取公共组件

step1:新增存放重构资源的目录 视频提供的重构有点问题,大家可以使用我上传在github上的重构资源。 在根目录下新建一个resources文件夹,用来...

732
来自专栏极客慕白的成长之路

CTF札记二

首先第一层检查需要绕过ereg漏洞,百度可以知道存在截断的问题:ereg读到%00的时候,就截止了, 那么在字符串里面包括%00即可; 接着需要长度小于8但要大...

623
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(61)-如何使用框架来开发

前言 这篇文本讲述了这个框架的使用方式,及一些疑问的答疑,更加精准的使用这个框架来建立功能 经过几个版本的迭代,系统使用更加方便,代码更加简洁也更加的智能,...

2196

扫码关注云+社区