SQL之waitfor & case

/*waitfor*/
  /*WAITFOR { DELAY 'time' | TIME 'time' }
  DELAY是在完成 WAITFOR 语句之前等待的时间。完成 WAITFOR 语句之前等待的时间最多为 24 小时。
  TIME 关键字后为 time_to_execute,它指定 WAITFOR 语句要等待的时间。
  */
  
  WAITFOR DELAY '00:00:02' SELECT EmployeeID FROM Northwind.dbo.Employees
  --指定在执行 SELECT 语句之前等待两秒:
  
  USE pubs
  BEGIN
   WAITFOR TIME '22:00' DBCC CHECKALLOC
  END
  --TIME 关键字指定在 10 P.M 以后对指定数据库 pubs 进行检查,以确保所有页的分配和使用正确
  --一组要执行的 T-SQL 语句可以包含在 BEGIN END 中,相当于{}
  
  /*while循环*/
  WHILE (SELECT AVG(price) FROM good) < 4000
  --市场平均价不得超过4000元
  BEGIN
   UPDATE good
   SET price = price * 2
   --价格增加一倍
   IF (SELECT MAX(price) FROM good) >3000
   --商品最高价格不得超过3000
   BREAK
   ELSE
   CONTINUE
  END
  --市场价分析实例
  
  /*CASE(有列名)*/
  create table goods
  (
  gid int primary key,
  gname varchar(10),
  price money default 3000
  )
  insert into goods values (1001,'mp3',default)
  insert into goods values (1002,'mp4',default)
  insert into goods values (1001,'cpu',default)
  select gid,
   case gname
   when 'mp3' then '显示器'
   else 'hd'
   end
  as gname from goods
  --上面六行仅为一条select语句
  --CASE与end成对出现
  --将or显示为oregon
  --case仅修改显示内容,不修改表中实际内容
  
  
  /*case表达式(无列名)*/
  select gid ,
   case
   when gname='mp3' and gid=1001 then '显示器'
   else gname
   --上行的列名gname代表无操作
   end
  as gname from goods
  --case表达式与case的主要区别为case表达式可以加条件判断
  
  /*update语句中使用case表达式*/
  UPDATE publishers SET state =
   CASE
   WHEN country <> 'USA' THEN '--'
   ELSE state
   END
  , city =
   CASE
   WHEN pub_id ='9999' THEN'LYON'
   ELSE city
   END
  WHERE country <>'USA' OR pub_id ='9999'
  --上面只有一条语句,不知道使用这样的缩进是把句子结构看清楚了?还是更晕了?
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值