SQL 视图的概念

1、视图
视图是一张虚拟表,但这个表中不存储数据,虚拟的表。
作用:可以将重复、多次使用的查询语句封装到视图里面,
以供多次使用。方便使用。
视图直接当成表来使用就可以,
可以写where条件,也可以参与跟其他表的关联查询。
不可以使用参数,只有查询语句

create view v_cj
as
select s.sname,c.cname,sc.score
from Student s,course c ,sc
where s.sid=sc.sid
and c.cid=sc.cid
使用:
select * from v_cj 
where sname='刘一'

手工创建
代码创建

存储过程与视图的区别
1、视图里面只有查询语句,但存储过程里面可以写增删改查的语句
2、视图不可以使用参数,没有返回值。存储过程可以使用参数,可以返回值
3、使用时视图可以跟表一样使用,可以加where条件 ,但存储过程不可以

2、索引
索引的作用:可以在查询时快速查询到数据,提高查询的效率。
可以解决大部分数据库慢的问题。
分类:
聚集索引
聚集索引一般是创建在主键列上的,
一般一张表上只允许创建一个聚集索引,一般会在主键上默认创建聚集索引。
特点:存储的数据是跟表的数据有一样的物理顺序(地址),
这个地址是连续的。类似于使用拼音查字典,查询到的文字在一起


如果没有索引,则会使用全表扫描。(将整个表的数据查询一遍)
如果有索引,则会使用索引查询,例如:
select * from student
where sid=2
索引在存储时其实就可以看成一张表,物理顺序(地址) 2
根据2查询出物理顺序(地址),这时只是在索引中查询
根据物理顺序(地址)--去表里面查询这条数据


非聚集索引
特点:它存储的物理地址不是连续的,
它的查询速度要低于聚集索引,但是也比没有索引强
一个表可以创建多个非聚集索引。类似于部首查字典。查询到的文字可能不在一起


唯一索引
组合索引:在多个列上创建索引


哪些列上适合创建索引?
在where语句中经常用的列适合创建索引,不光是参与关联的列,还包括经常用来过滤数据的列

如何创建索引
create [unique][clustered][nonclustered] index index_name on table(column)

索引越多越好?不对,索引不利于频繁进行增删改操作。会增加使用成本。


3、事务
事务解决的问题:保证数据一致性、正确性
事务的特性:原子性,一致性,隔离性,持久性
事务分类:
显式事务(需要使用关键字来标识事务的开始、结束),隐式事务,自动事务

a、显式事务:常用
begin tran  开启事务
commit   --提交事务
rollback   ---回滚事务
b、隐式事务:
commit  rollback
c、自动提交事务   

create proc p_AddOrder
as
-- 插入订单主表
begin transaction
insert into orders.orders([customerID],[ordersDate],[deliveryDate],[amount])
values(1,getdate(),'2020-10-08',10)
if(@@ERROR=0)
begin
    --插入订单明细
    declare @id int
    select @id=@@IDENTITY
    insert into [ordersdetail] ([ordersID],[productID],[quantity])
    values(@id,1,1)
    if(@@ERROR=0)
    begin
        print '插入订单明细表成功!'
        commit 
    end
    else
        begin
            print '插入订单明细表失败!'
            rollback
        end 
end
else
    begin
        print '插入订单表失败!'
        rollback
   end 


4、触发器
触发器经常用于加强数据的完整性约束、业务规则,主要用于监视对表的增删改操作,自动维护数据。由数据库自动完成。
语法:

create trigger trigger_name on table_name
after [insert][update][delete]
as
sql

分类:
instead of 触发器,在增删改前进行数据约束
插入前检查价格
after 触发器  在增删改后进行数据维护
插入后检查价格
两个临时表(备胎表)
inserted表、deleted表
所有插入的数据都会在inserted表存在一份
所有删除 的数据在deleted表存在一份

执行update语句,update语句实际上是先删除再插入数据


 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值