官术网_书友最值得收藏!

第5章 Transact-SQL語言基礎

1.選擇題

(1)在Transact-SQL語句中,可以匹配0個到多個字符的通配符是________。

A.*

B.%

C.?

D.—

(2)SQL Server 2016提供的單行注釋語句是使用________開始的一行內容。

A./*

B.——

C.{

D./

(3)在SQL Server 2016中,局部變量前面的字符為________。

A.*

B.#

C.@@

D.@

(4)若要計算表中數據的平均值,可以使用的函數是________。

A.SQRT()

B.AVG()

C.SQUARE()

D.COUNT()

(5)語句“SELECT DATENAME(MONTH, getdate())AS'Month Name'”的輸出結果為________。

A.Month Name

B.當前日期

C.當前月份

D.當前時間

答案:ABDBC

2.思考題

(1)Transact-SQL的語言要素有哪些?主要作用是什么?

】Transact-SQL語言的要素及其主要用途如下。

①標識符。標識符是用于命名表、視圖、存儲過程等數據庫對象以及常量、變量、自定義函數名稱。

②常量。表示一個特定數據值的符號,其格式取決于它所表示的值的數據類型。

③變量。一種是用戶自己定義的局部變量,另外一種是系統提供的全局變量。用于存儲某過程中可以變化的值。

④注釋。程序代碼中非可執行的文本字符串,增加程序的可讀性。

⑤運算符。用來執行算術運算、字符串連接、賦值以及在字段、常量和變量之間進行比較的操作符。

⑥函數。能夠返回一個值的程序段。

⑦表達式。指符號和運算符的組合,其計算結果為單個數據值。

⑧Transact-SQL語句的主要功能是創建和管理數據庫對象、插入、檢索、修改和刪除數據,并實現服務器和客戶端的操作和管理。

(2)如何定義變量?如何給變量賦值?

】定義變量需要使用DECLARE命令,局部變量定義時要在其名稱前加上標志@,定義全局變量時必須以標記符@@開頭。

為變量賦值需要使用SET和SELECT命令。SET命令一次只能為一個變量賦值,SELECT命令可以同時為多個變量賦值。

(3)流程控制語句包括哪些類型?各自的作用是什么?

】控制流語句主要包括IF…ELSE選擇語句、BEGIN…END語句塊、WHILE循環語句和CASE多分支語句。還有批處理的結束語句Go,向客戶端返回用戶定義消息的PRINT語句,使程序直接跳到指定的標有標識符的位置處繼續執行的GOTO語句,用于暫時停止執行SQL語句、語句塊或者存儲過程等的WAITFOR語句,無條件地終止一個查詢、存儲過程或者批處理的RETURN語句,以及具有異常處理功能的TRY…CATCH語句等。

Transact-SQL提供的控制流語句主要用于控制程序的順序、選擇和循環流程。

(4)簡述聚合函數的特點和用途。

】聚合函數用于對一組值進行計算并返回一個單一的值。除了COUNT函數之外,其他聚合函數忽略空值。聚合函數經常與SELECT語句的GROUP BY子句一同使用。聚合函數的作用是在結果集中通過對被選列值的收集處理,返回一個數值型的計算結果。

(5)Transact-SQL語句共分為幾類?各自的主要功能是什么?

】Transact-SQL語言的4種類型及其主要作用如下。

①數據定義語言。數據庫對象的創建、修改和刪除等都可以通過使用數據定義語言中的CREATE、ALTER、DROP等語句來完成。

②數據操縱語言。用于檢索和操作數據的SQL語句的子集。數據操縱語言是指用來查詢、添加、修改和刪除數據庫中數據的語句,這些語句包括SELECT、INSERT、UPDATE、DELETE等命令。

③數據控制語言。用來設置或更改數據庫用戶或角色權限的語句,包括GRANT、DENY, REVOKE等命令。

④控制流語句。用于控制SQL語句、語句塊或者存儲過程的執行流程。流程控制語句包括BEGIN…END、IF…ELSE、WHILE、BREAK、GOTO、WAITFOR、RETURN等語句。

3.上機練習題

(1)利用Transact-SQL語句聲明一個長度為16的nchar型變量bookname,并賦初值為“SQL Server數據庫編程”。

】變量bookname的聲明和賦值代碼如下。

      DECLAER @bookname nchar(16)
      SET @bookname = 'SQL Server數據庫編程'

(2)編程計算任意兩個日期的時間差。

】常用的計算兩個日期的時間差的代碼如下。

      USE test01
      GO
      SET NOCOUNT ON
      DECLARE @startdate datetime,@enddate datetime
      SET @startdate = '1/7/2017 12:12 A M'
      SET @enddate = '11/10/2018 12:00 A M'
      SELECT DATEDIFF(year,@startdate,@enddate)
      SELECT DATEDIFF(month,@startdate,@enddate)
      SELECT DATEDIFF(day,@startdate,@enddate)
      SELECT DATEDIFF(minute,@startdate,'1/8/2019 12:17 A M')
      SELECT DATEDIFF(minute,@startdate,GETDATE())
      SET NOCOUNT OFF
      GO

(3)編程求50~100中所有能被3整除的奇數之和。

】程序代碼如下。

主站蜘蛛池模板: 达拉特旗| 麟游县| 九寨沟县| 灵台县| 托克逊县| 通榆县| 集安市| 无锡市| 札达县| 宁陵县| 宜黄县| 灵武市| 瑞丽市| 巴南区| 邓州市| 文化| 临城县| 自贡市| 浦东新区| 游戏| 威海市| 绿春县| 临洮县| 皮山县| 柳河县| 姜堰市| 新泰市| 江口县| 文成县| 新宾| 红桥区| 临江市| 武汉市| 平定县| 四川省| 韶山市| 万载县| 江华| 水城县| 休宁县| 七台河市|