sql 2005 的实例化学习 sql2005 3

sql2005<三>


select * from myUser--用户表

select * from myConsume--消费记录表

select * from myOrder--订单记录

select * from myAdd--充值记录

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

/* 查询高级用户的消费记录--方法一*/
select 用户ID=mu.userID,用户名=mu.userName,商品名=mc.productName
from myUser as mu,myConsume as mc
where mc.userID
in(select mu.userID from myUser as mu,myConsume as mc where mu.userType='高级用户')
and mu.userID=mc.userID

/* 查询高级用户的消费记录--方法二 用左链接*/
select 用户ID=mu.userID,用户名=mu.userName,商品名=mc.productName from myConsume as mc inner join myUser as mu on mc.userid=mu.userid and mu.userType='高级用户'

/*######################################################################################*/

/*创建视图---view_uc
方便用户使用,可以隐藏用户敏感信息
*/
create view view_uc
 as
  select 用户ID=mu.userID,用户名=mu.userName,商品名=mc.productName
  from myUser as mu,myConsume as mc where mc.userID
  in(select mu.userID from myUser as mu,myConsume as mc where mu.userType='高级用户')
  and mu.userID=mc.userID

--查询视图

select * from view_uc

/*删除视图----view_uc*/

drop view view_uc

/*######################################################################################*/
/*存储过程的创建*/

create procedure proc_uc
as
select  用户名=u.username,商品名=c.productName 
from myUser u,myConsume c where u.userId=c.userID and u.userType='高级用户'


/*调用存储过程*/

exec proc_uc ''
 
/*删除存储过程*/

drop procedure proc_uc


/*######################################################################################*/

/* 带输入参数的存储过程  */
if exists(select * from master.dbo.sysobjects where name='proc_uc')
drop procedure proc_uc --检测是否已存在此存储过程

--创建一个存储过程
create procedure proc_uc @username varchar(20)
as

 declare @userid int --定义一个int型的变量
 declare @num int,@num1 int, @num2 int, @num3 int
 select @userid=userID from myUser where userName=@username
 select @num=count(*) from myUser where userName=@username
 
if(@num=1)
BEGIN   --注意if语句的运用!!
 print @username+'的消费记录:'
 select @num1=count(*) from myConsume where userID=@userid
   if(@num1>0)
   begin
    select   用户名=@username,消费编号=consumeID,商品名称=productName  from myConsume where userID=@userid
   end
   else
    print @username+' 用户暂无消费记录:'
    print '***********************'
 print @username+'的订单记录:'
 select @num2=count(*) from myOrder where userID=@userid
   if(@num2>0)
   begin
    select * from myOrder where userID=@userid
   end
   else
    print @username+' 用户暂无消费记录:'
    print '***********************'

 print @username+'的充值记录:'
 select @num3=count(*) from myAdd where userID=@userid

/*   判断该用户是否存在充值记录     */
  if(@num1>0)
  begin
   select * from myAdd where userID=@userid
  end
  else
   print @username+'用户暂无充值记录'
   print '***********************'
/*    判断该用户是否存在充值记录 结束    */
end
else
 print '没有您要查找的:'+@username+'用户'

 

exec proc_uc '月'  --传一个参数  然后调用存储过程得出相应数据


/*######################################################################################*/

/*比较一下这两条语句的含义,呵呵。。distinct(字段名) 意义在于可以去掉重复的字段名信息。
字段名一般都用不可重复出现的数据 比如  id */

select count(distinct(userID)) from myAdd

select count(*) from myAdd

/*######################################################################################*/

/* 带输出参数的存储过程  */

if exists(select * from master.dbo.sysobjects where name='proc_p4')
drop procedure proc_p4
@username varchar(20),@consumeTotal money output, @addTotal money output
as
 declare @userID int
 select @userID=userID from myUser where userName=@userName
 select @usersumeTotal=sum(consumePrice) from myConsume where userID=@userID
 select @addTotal=sum(addCoin) from myAdd where userID=@userID
declare @t1 money,@t2 money --调用
exec proc_p4 '星',@t1 output,@t2 ouput
print '的消费总金额为:'+convert(varchar(10),@t1)+',充值总金额为:'+convert(varchar(10),@t2)

 

/*######################################################################################*/

/*--- 触发器---  */

if exists(select * from master.dbo.sysobjects where name='trigger_t2')
drop trigger trigger_t2
go

create trigger trigger_t2
on myUser
after update,insert,delete   --改增删   都可以触发该事件。查询不可以
as
 print '您执行了操作'
go


--测试select * from myUser
--测试update myUser set userName='中华' where userID=6

 

----当您执行了改增删的任何一个是都会在窗口打印出   您执行了操作 

--下面来简单的使用一下触发器
/*---    ---*/

if exists(select * from master.dbo.sysobjects where name='trigger_t1')
drop trigger trigger_t1

create trigger trigger_t1

on myUser
after update
as
 declare @p money
 print 'myuser表:'
 select @p=userPrice from inserted
 if(@p<0)
  begin
   print '用户信息不能小于零!!!'
   rollback
 end
go


insert myUser(userName,passWord,userPrice,userConsume,userType)
select '宋美英','024760',0,0,'普通用户'

/*######################################################################################*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值