sql_day4

-------------------------------day_4-------------------
--------------------------系统数据库的研究-------------
-----查看所有的列------
select * from sys.all_columns
------------查看所有对象---------
select * from sys.all_objects
--------查看部分列-----
select * from sys.columns
------------查看有哪些用户数据库------
select * from sys.databases where database_id >= 4
-------------当前数据库有哪些表-----
select * from sys.tables
----------查看表的列的详细信息------------------
exec sys.sp_columns 'orders'
-----------------有关这个表的相关内容-------------------
exec  sp_help 'orders'
--------sp表示存储过程----------只能对于存储过程,查看他的脚本文本---------
exec sp_helptext 'GetAvgPriceByCategoryName'
------------------使用拓展存储过程-------------------------
exec xp_cmdshell 'mkdir c:\text'

--------------------------------------------------------------------------------
----------------------分页显示表的数据的存储过程---------------------------
-----------------------------------------------------------------------
alter proc GetPage
@PageIndex int = 1,
@PageSize int = 30,
@PageCount int output
as
  declare @start int, @end int
  set @start = (@PageIndex - 1) * @PageSize + 1
  set @end = @start + @PageSize - 1
  -------------row_number函数让我们对查询结果自动编号-----------------
  select row_number()over(order by CustomerId) as [no],* into #temp from Orders
  ----------用于捕获最近一次执行的列数-------------------------
  declare @rows int
  set @rows = @@rowcount---获取得到的行数
  set @PageCount = @rows/@PageSize
  if(@rows % @PageSize <> 0)
    set @PageCount = @PageCount + 1
   
  select * from #temp where [no] between @start and @end
 
  declare @p int
  exec GetPage 10,30,@PageCount = @p output
  select @p
----------------------------------------------------------------------------------

---------------------------------------------------------------------------
-----------------转到banksystem中---------------------------------------
-------------------------阻止对卡号的变更--------------------------------------
------触发器是对表的操作,下面创建一个针对Account表的update的触发器--
create trigger NoUpdateCardNo on Accounts for update
as
   if(update(CardNo))
   begin
      raiserror('不能更改银行卡号',16,1)
      rollback transaction
   end
  
update Accounts set CardNo = 'sddfs'

 

 

---------------------------------清空表中的数据----------------------
truncate table Transactions
delete from

------------------------去掉触发器-------------------------------
drop trigger NoUpdateCardNo

 

--------------deleted , inserted的利用-----------------------------
--------------向产品表中插入数据,单价不能超过同类产品平均价-------
create trigger NoLargeAvgPrice on Products for insert
as
   declare @avgPrice money
   select @avgPrice = avg(UnitPrice) from Products
   where CategoryId =
   (
      select CategoryId from inserted
   )
   declare @price money
   select @price = UnitPrice from inserted
   if(@price > @avgPrice)
   begin
     raiserror('插入产品的价格不能高于产品的品均价',16,1)
     rollback transaction
   end

insert into Products values(79,'Cofee',1,1,'24 - 12 oz bottles',18.8,20,30,20,0)
------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值