您的位置:首页 > 数据库

SQL server 事务,索引,视图

2016-05-26 17:00 323 查看
--事务,索引,视图

--创建bank数据库
if exists(select * from sysdatabases where name='bank')
drop database bank
create database bank
on(
name='bankmdf',
filename='d:\SQL2008Workspace\bank.mdf',
size=3mb,
maxsize=5mb,
filegrowth=1mb
)
log on
(
name='bankldf',
filename='d:\SQL2008Workspace\bank.ldf',
size=3mb,
maxsize=5mb,
filegrowth=1mb
)
go

--创建users表
if exists(select * from sysobjects where name='users')
drop table users
create table users
(
uName nvarchar(20),--用户名
uMoney money,--账户金额
)
go
--添加约束
alter table users
add constraint CK_uMoney check(uMoney>=1)
go
--插入数据
insert into users values ('鸣人',1000)
insert into users values ('佐助',2)
go

/*
事务(Transaction)是不可分割的工作逻辑单元,将单元内的语句(操作)作为一个整体向系统提交,
要么都执行,要么都不执行,非黑即白!

*/
--鸣人向佐助转账800
begin transaction--开始事务

print '转账前'
select * from users

declare @error int
set @error=0
update users set uMoney=uMoney-800 where uName='鸣人'
set @error=@@ERROR+@error
update users set uMoney=uMoney+800 where uName='佐助'
set @error=@@ERROR+@error

print '转账中'
select * from users

if @error<>0
begin
print '转账失败,回滚事务'
rollback transaction--回滚事务
end
else
begin
print '转账成功,提交事务'
commit transaction--提交事务
end

print '转账后'
select * from users
go

---创建索引
if exists(select * from sysindexes where name='index_uName')
drop index users.index_uName
--创建聚集索引,填充因子为30
create clustered index index_uName
on users(uName)
with fillfactor=30
go
--按索引index_uName进行查询
select * from users with (index=index_uName)
where uName='佐助'
go

/*
视图是一张虚拟表,不能修改,删除,增加数据,只是以表的形式显示原始表的查询结果
视图相当于java中的封装方法,需要的时候直接调用,无需再写T-SQL语句
*/
--检查是否存在该视图
if exists(select * from sysobjects where name='view_users')
--删除视图
drop view view_users
go
--创建视图
create view view_users
as select uName from users
go
--使用视图
select * from view_users
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息