999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL Server 2000中CASE語句與函數的綜合運用

2011-12-29 00:00:00陳磊
考試周刊 2011年41期


  摘 要:在SQL Server 2000數據庫中綜合運用Transact—SQL語言的CASE語句與函數,可以方便靈活地解決多分支控制流程的問題。
  關鍵詞:SQL Server 2000 Transact—SQL語言 CASE語句 函數 綜合運用
  
  數據庫是計算機應用的一項重要技術。隨著計算機、網絡通信等技術的發展,在網絡多用戶環境下對數據進行安全有效的管理已成為計算機的一項重要應用。SQL Server 2000是微軟公司推出的基于SQL標準的關系型大型數據庫管理系統。
  它功能強大,易學易用,與Windows 2000相結合,可以構造網絡環境數據庫甚至分布式數據庫,可以滿足企業及Internet等大型數據庫的應用,當前使用十分普遍。
  SQL Server 2000系統所使用的SQL語言稱為Transact—SQL。Transact—SQL是用于管理SQL Server 2000實例,創建和管理SQL Server 2000實例中的所有對象,并且插入、檢索、修改和刪除SQL Server 2000數據表中數據的命令語言,它是SQL Server 2000數據庫管理系統的核心。
  使用Transact—SQL腳本可以編寫存儲過程,完成建立和操作數據庫、數據查詢、數據管理等工作。Transact—SQL語言可以在SQL Server 2000提供的查詢分析器上執行,查詢分析器是一個具有執行SQL腳本、分析查詢性能和調試存儲過程等功能的管理工具。它是SQL Server 2000系統中最常用的操作管理工具,利用它可以輸入、調試、運行SQL語句。
  使用Transact—SQL的變量、運算符、函數和流程控制語句等基本語言元素,可以進一步豐富查詢操作,實現數據庫應用系統的復雜功能。
  Transact—SQL語言中的CASE語句可以根據多個選擇決定程序執行的流程。相當于if-else語句的嵌套,但結構更清楚。
  簡單CASE語句
  ·語法格式
  CASE輸入表達式
  WHEN比較表達式THEN結果表達式[...n]
  [ELSE最終結果表達式]
  END
  ·功能將輸入表達式的值與每一個比較表達式比較,若相等,則返回對應結果表達式的值;否則返回最終結果表達式的值。最終結果表達式也可以省略。輸入表達式和每個比較表達式的數據類型必須相同,或者可以隱式轉換。
  [...n]表示可以使用多個“WHEN ... THEN”表達式子句。
  例如:使用CASE語句根據輸入的學生分數,輸出對應的等級,這個問題如果用C語言的switch語句很好完成,C語言程序如下:
  main()
  {int score
  printf("Please enter a score:");
  scanf("%d",&score);
  printf("score=%d:",score)
  switch(score/10)
  {case 10:
  case 9:printf("A/n");break;/*分數在90分以上,則輸出A*/
  case 8:printf("B/n");break;
  case 7:printf("C/n");break;
  case 6:printf("D/n");break;
  default:printf("E/n");break;
  }
  }
  若用Transact—SQL語言的CASE語句來做則會遇到一些問題,Transact—SQL語言大多數情況下是對表中數據進行操作,本例題中所使用的分數就來自于choice表,如按照C語言模式寫成如下程序:
  use teachdb
  select sno,score=
  case score/10
  when 9 thenprint"優"
  when 8 thenprint"良"
  when 7 thenprint"中"
  when 6 thenprint"及"
  elseprint"不及格"
  end
  from choice go
  則產生錯誤,因為sno是表中字段,它的運行結果會在“網格”標簽內顯示,而print命令是在查詢分析器窗口的“消息”標簽中顯示用戶信息。且該例中的print語句屬于結果表達式,print語句的結果應賦值給score字段,而它們的類型又不匹配,所以這么設計在語法結構上就存在缺陷。第一次修改程序時,取消print語句改為score,以驗證問題是否是因為類型不匹配造成的。修改后程序能正常運行說明語法上沒有問題,但所有score字段的結果都顯示為“NULL”,與預想的結果不符(預想的結果應為該生對應的分數),初步分析是輸入表達式score/10與比較表達式9,……,6都不匹配。
  進入企業管理器查看choice表中score字段的類型為數值型,且學生具體分數值有小數部分,于是考慮將score小數部分去掉,ceiling()函數的功能是:返回大于或等于給定值的最小整數。將score/10改為ceiling(score)/10,再運行程序,所有score字段的結果仍為“NULL”,單獨執行print ceiling(82.5)/10觀察其結果為:8.0,說明雖然去掉了小數部分,但其值仍為數值型,而比較表達式的值為整型所以不匹配,cast()函數的功能為:把一種數據類型強制轉換為另一種數據類型,再將ceiling(score)/10改為cast(ceiling(score)/10 as int),運行程序,所有score字段的結果為該生對應的分數,結果正確。
  接下來考慮如何讓學號后面出現的不是對應分數而是對應等級,前面已經分析score字段與print語句的類型不匹配,所以將表中已有的score字段換成新加入的grade字段,即程序運行后新生成一個結果字段,程序如下:
  use teachdb
  select sno,grade--grade并不是表中已有的列
  case cast(CEILING(score)/10as int)
  when 9 then"優"--分數在90分以上,則輸出“優”
  when 8 then"良"
  when 7 then"中"
  when 6 then"及"
  else"不及格"
  end
  from choice go
  實驗證明通過CASE語句與函數的綜合運用,可以方便靈活地解決多分支控制流程的問題。
  
  參考文獻:
  [1]譚浩強.《C程序設計》.清華出版社,1991.
  [2]周力. 《SQL Server 2000實用教程》.大連理工大學出版社,2009.
  [3]田淑清,周海燕,趙重敏等.《全國計算機等級考試二級教程——C語言程序設計》.高等教育出版社,1998.

主站蜘蛛池模板: 亚洲综合欧美在线一区在线播放| 内射人妻无码色AV天堂| 日本午夜影院| AV老司机AV天堂| 91午夜福利在线观看精品| 国产网友愉拍精品| 天天躁狠狠躁| 日韩国产综合精选| 欧美人人干| a毛片在线免费观看| 久久婷婷六月| 亚洲91在线精品| 精品久久久久无码| 999精品在线视频| 亚洲无限乱码| 91小视频在线观看免费版高清| 亚洲乱伦视频| 国产免费福利网站| 综合亚洲色图| 亚洲男人的天堂网| 亚洲最大福利视频网| 国产成人91精品免费网址在线| 日韩欧美国产区| 谁有在线观看日韩亚洲最新视频| 97视频精品全国免费观看| 四虎永久在线精品影院| 亚洲最新在线| 日本色综合网| 欧美一级在线看| 在线免费亚洲无码视频| 国产成人午夜福利免费无码r| 区国产精品搜索视频| 亚洲国产91人成在线| 国产精品视频猛进猛出| 欧美另类精品一区二区三区| 人人看人人鲁狠狠高清| 国产一区二区视频在线| 午夜精品国产自在| 无码网站免费观看| 日韩高清成人| 3344在线观看无码| 美女被操黄色视频网站| 日韩欧美亚洲国产成人综合| 精品无码国产自产野外拍在线| 国产成人啪视频一区二区三区| 99re在线免费视频| 老司机午夜精品网站在线观看| 国产91蝌蚪窝| 国产亚洲精品自在久久不卡 | 亚洲精品国产综合99| 国产日韩精品一区在线不卡| 国产精品观看视频免费完整版| 中美日韩在线网免费毛片视频| 伊人成色综合网| 国产成人精品一区二区免费看京| 国产性爱网站| 激情综合五月网| 欧美成人看片一区二区三区| 91成人免费观看| 在线99视频| 欧美精品伊人久久| 亚洲精品国产日韩无码AV永久免费网| 亚洲人成网址| 国产www网站| 熟女成人国产精品视频| 欧洲成人免费视频| 伊人激情久久综合中文字幕| 综合社区亚洲熟妇p| 国产成人91精品| 四虎亚洲精品| 538国产视频| 久久精品一卡日本电影| 国产00高中生在线播放| 成人一级黄色毛片| 亚洲无码电影| www.youjizz.com久久| 亚洲狼网站狼狼鲁亚洲下载| 欧美国产日韩在线| 国产农村精品一级毛片视频| 免费A级毛片无码免费视频| 国产香蕉在线视频| 色天堂无毒不卡|