实验案例三:创建视图
方法一:在图形界面下创建视图(以Myschool数据库为例)
创建一个视图,分别来自三个的表的三个列,并重命名列,生成的视图名为student_info,如下图所示:
通过查询语句查看视图:select * from student_info
方法二:使用语句创建视图(以schoolDB数据库为例)
进行数据库设计的时候,一个表有很多列,我们可以在表上创建视图,只显示指定的列。
Select语句可以作为一个视图
selectSname,sex,Classfromdbo.TStudentwhereClass='网络班'
1、创建视图,筛选行和列
createviewnetstudent
as
selectSname,sex,Classfromdbo.TStudentwhereClass='网络班'
从视图中查找数据:
select*fromnetstudentwheresex='男'
创建视图,更改列的表头,计算列,产生计算列
selectStudentID,Sname,sex,cardID,Birthday,Email,Class
fromdbo.TStudent
2、创建视图,更改列的表头
createviewV_Tstudent1
as
selectStudentID学号,Sname姓名,sex性别,cardID身份证号码,Birthday生日,Class班级fromdbo.TStudent
select*fromV_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='喜洋洋
领取专属 10元无门槛券
私享最新 技术干货