- SQL Server 2016數據庫應用與開發習題解答與上機指導
- 姜桂洪主編
- 1473字
- 2019-07-01 10:07:46
第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整除的奇數之和。
【答】程序代碼如下。

- Web程序設計及應用
- Oracle從入門到精通(第3版)
- SQL學習指南(第3版)
- 從0到1:HTML+CSS快速上手
- C/C++常用算法手冊(第3版)
- 零基礎學Python數據分析(升級版)
- Hands-On GPU:Accelerated Computer Vision with OpenCV and CUDA
- 零基礎輕松學SQL Server 2016
- Mastering Unity 2D Game Development(Second Edition)
- Python深度學習:模型、方法與實現
- 編程可以很簡單
- 零代碼實戰:企業級應用搭建與案例詳解
- 網絡數據采集技術:Java網絡爬蟲實戰
- C語言程序設計
- Java 9 with JShell