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,'普通用户'
/*######################################################################################*/