《软件外包服务岗前技能训练(一)》之SQL server数据库基本命令

本文详细介绍了SQLServer中的视图(包括标准、索引和分区视图)、存储过程及其分类和优点,以及触发器(如afterinsert、afterupdate和afterdelete)的概念、语法和应用场景。
摘要由CSDN通过智能技术生成

一、视图

1.1视图介绍

视图:虚拟表,不是实际存在的,由一个或多个表通过查询而定义的,将查询定义保存起来,实际不包含数据。

视图与表的区别:

  • 表:存储数据的地方
  • 视图:存储查询语句(索引视图除外,索引视图存储物理数据)

作用:简化数据查询,增加数据保密性

缺点:只是简化查询,并不提高查询速度,增加维护成本。

视图分类:

  • 标准视图:存储查询语法定义,没有存储数据。
  • 索引视图:【具体化视图,创建索引,显示提高查询性能,聚合了很多行的查询,不太适合经常更新基本数据集】删除索引视图,表的数据也会被删除。
  • 分区视图:一台或多台服务器间水平链接一组成员表的分区数据。
1.2 T-SQL创建视图
1.2.1 标准视图语法
create view 视图名称

as

--T-SQL查询语句

select 列名,列名,列名,列名 

from 表名 a 

inner join 表名b --因为视图数据具有一定保密性,所以通常使用Inner join on

on a.列名=b.列名



--使用标准视图  

select * from 视图名称  

--修改视图

alter view 视图名
1.2.2 创建索引视图语法
create view 视图名称 WITH SCHEMABINDING

as

select 列名,列名,列名 from dbo.表名    --创建索引视图,不允许使用select *  需要写清字段名,表名需要规定所有者 dbo.表名



--索引视图创建唯一聚集索引

create unique clustered index 索引名

on 视图名(视图列)

1.2.3创建分区视图语法
create view 视图名

as

select 列名,列名,列名 from 表名  ---第一组服务器

union all / union   --不去重/去重

select 列名,列名,列名 from 表名  --第二组服务器

二、存储过程

2.1存储过程介绍

定义:为了完成特定功能的一个或一组SQL语句的集合,经编译后存储在服务器段的数据库中,利用存储过程来加速我们对sql语句的执行。

执行逻辑:调用名称,传入参数,执行来完成特定功能。

存储过程分类:

  • 系统存储过程: 记录在master数据库中,但是在其他数据库中也可以直接调用,并且不必在前面加上数据库名,创建数据库时,这些系统存储过程就会在新的数据库中自动创建。
  • 自定义存储过程:用户自己创建的,用以完成特定的功能。可以传入参数,也可以有返回值(通常表明执行是否成功),可以只有一个操作,也可以包括多个。

执行语法: execute / exec 存储过程名,参数(多个参数以逗号隔开)

优点:

1.提高应用程序的通用性和可移植性,多次调用,而不必重新再去编写,维护人员可以随时修改。

2.可以更有效的管理数据库的权限

3.可以提高执行SQL的速度

4.减轻服务器负担。

缺点:需要专门维护,占用数据库空间。

2.2 存储过程语法
create proc 存储过程名称/alter proc修改/drop proc删除

@传入参数

AS

BEGIN

SQL语句集合

END

GO

三、触发器

3.1触发器介绍

触发器是一种特殊类型的存储过程。【对表进行插入、更新、删除时,若定义了触发器,系统则会自动执行触发器】

调用:通过事件触发,自动调用执行。

触发器分类:

DML触发器的分类:

  • after触发器 Insert update delete【操作之后触发 】
  • instead of 触发器 insert updata delete【不执行定义的操作,而执行的是触发器的本身】

【定义了after触发器后,最好不要执行 Instead of】

inserted  deleted:插入表  删除表,逻辑表/虚拟表,系统在内存中创建的,不会存储到数据库中,只读属性,可以读取但不能修改数据。结构与操作的表相同的。触发器执行过程中存在的,并且可以访问,工作完成之后,这两张表会自动删除。

对表的操作Inserteddeleted
insert(插入)存放插入的数据不会存储的数据
update(更新)存放更新后的数据存放更新前的数据
delete(删除)不会存储数据存放被删除的数据

Inserted表  存放插入或更新后的数据

deleted表   存放更新前或删除的数据

触发器执行过程中,都可以访问,提交之前,是不是都可以撤销---事务的回滚? 可以

触发器时一个特殊的事务,一些检查,设置条件,如何不满足,可以回滚

3.2 after触发器
3.2.1 after insert 触发器语法
--语法:    declare定义变量  print打印

create/alter trigger 触发器名称

on 表名

for/after insert  

as

  --TSQL

go

print'定义操作:'+参数+','+参数+','+参数(其中参数拼接可能需要进行数据转换)
3.2.2 after update 触发器语法

以前执行updata语句后,能看到只是

修改后的数据

触发器能做到显示修改前后的数据对比。

--语法:

create/alter trigger 触发器名称

on 表名

for/after update 

as

  --TSQL

go
3.2.3 after delete 触发器语法

删除数据并备份的方法

after delete 在删除操作执行之后触发 在deleted表中可以查看删除后的数据。特殊的事务,可以通过事务回滚将进行数据恢复

create/alter trigger 触发器名称

on 表名

for/after delete  

as
		if (OBJECT_ID('UserInfos_Backup','U') is not null) --判断目标表是否存在    OBJECT_ID  返回数据库对象标识号

insert into 备份表 select 列名 from deleted --备份表,若表不存在则创建表

​		else

select 列名 into 备份表 from deleted --备份表,若表存在则插入数据

go
3.2.4 instead of insert 触发器语法

只执行触发器本身,不执行T-SQL的定义

语法:

create/alter trigger 触发器名称 

on 表名

instead of insert 

as

   --TSQL

go

  总结

以上就是SQL server 数据库基本命令的使用啦,让我们一起共同努力学习吧!

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值