SQL之waitfor & case

来源:互联网 发布:js求两个数最大公约数 编辑:程序博客网 时间:2024/05/17 06:50
/*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'
  --上面只有一条语句,不知道使用这样的缩进是把句子结构看清楚了?还是更晕了?
 
原创粉丝点击