答案:XACT_ABORT
35 你有一个名为 JobCandidate 的表,任务是在 JobCandidate 表中删除一行。你需要写一事务允许数据库
在不知道这条记录删除执行时间的情况下恢复到记录删除的精确点。你应使用哪个查询? 答案:BEGIN TRANSACTION Delete_Candidate WITH MARK
DELETE FROM JobCandidate WHERE JobCandidateID=10;
COMMIT TRANSACTION Delete_Candidate
36 你有下列名为 Sales 的表。你需要按客户姓名和销售日期排序返回销售数据。为每个客户提供最近期
的销售必须首先列出。你应使用哪个查询? 答案:SELECT CustomerName,SalesDate
FROM Sales
ORDER BY CustomerName,SalesDate DESC;
37 你有一个名为 Sales.SalesOrderHeader 的表和一个名为 Person.Person 的表。你的任务是写一个返回
SalesOrderID 和 SalesPersonName 两列 ,并且 OrderDate 大 于 20040101 的查询。SalesPersonName 由
Person.Person 表中的 FirstName 和 LastName 两列连接组成。你需要写一个 FirstName 和 LastName 两列连接 按字母表顺序进行排序的查询来返回数据。
答案:SELECT SalesOrderID,FirstName+’ ’+LastName as SalesPersonName
FROM Sales.SalesOrderHeader H JOIN Person.Person P on
P.BusinessEntityID=H.SalesPersonID WHERE OrderDate>’20040101’
ORDER BY SalesPersonName ASC
38 你有一个名为 Sales.PotentialClients 的表。这个表包含一个名为 EmailAddress 的列。你的任务是开发
一个返回 Sales.PotentialClients 表中有效的”.com”email 地址的报表。一个有效的 email 地址必须是在@符号
前至少有一个字符,”.com”前@符号后至少有一个字符。你需要写一个返回满足企业需求数据的 T-SQL 语 句。你应使用哪个 T-SQL 语句?
答案:select * from Sales.PotentialClients where EmailAddress like ‘_%@_%.com’
39 你有一个名为 Orders 的表。OrderID 被定义为一个 IDENTITY(1,1)的标识列。OrderDate 有一个为 1 的
默认值。你需要插入一条 CustomerId 45、今天的日期时间、价格 89.00 的记录到 Orders 表中。你应使用哪 个语句?
答案:INSERT INTO Orders(CustomerId, OrderDate, Cost)
VALUES(45, CURRENT_TIMESTAMP, 89.00);
第 10 页
40 你有下列两个表。(图略)这些表的外键关联能级联删除。你需要删除 Orders 表中的所有记录。你应 使用哪个 T-SQL 语句? 答案:DELETE FROM Orders
41 你的任务是删除名为 NewWidgets 表中的 1000 条记录。属性列 ToBeDeleted 值为 1 的记录有 2000 条。
你需要写一个能精确删除 1000 条记录的 T-SQL 批处理。你应使用哪个 T-SQL 批处理?
答案:DELETE TOP(1000) dbo.NewWidgets WHERE toBeDeleted=1;
42 你有名为 Sales.SalesOrderDetails 和 Sales.SalesOrderHeader 的两个表。你的任务是修改一类特殊销售
员销售额的折扣数。只有 SalesPersonID 为 290,Sales.SalesOrderDetail 表中所有条目的 UnitPriceDiscount 为设置为.1。
答案:UPDATE d SET UnitPriceDiscount=.1
FROM Sales.SalesOrderDetail d INNER JOIN Sales.SalesOrderHeader h ON
h.SalesOrderID=d.SalesOrderID WHERE
h.SalesPersonID=290;
43 你有一个名为 Product 的表。你需要为名为 Coho Winery 的卖主的产品价格增加 10%,同时返回产品 名称和修改后价格。
答案:UPDATE Product SET Price=Price*1.10
OUTPUT inserted.ProductName, inserted.Price WHERE Product.VendorName=’Coho Winery’
44 你有名为 dbo.Products 和 dbo.PriceChange 的两个表。dbo.Products 表包含 10 个产品。单价$20 的 5 条
记录价格增加 10%。其他单价$10 的 5 条记录价格增加为 0。你有下列查询:(略)你需要预计查询的结果。 这个查询将产生哪个结果?
答案:Five rows are updated in dbo.Products.
Five rows are inserted into dbo.PriceChange.
45 你 有 名 为 MainTable 和 ArchiveTable 的 两 个 表 。 你 需 要 将 MainTable 表 中 超 过 30 的 数 据 移 到
ArchiveTable 表。你应使用下面哪个代码段? 答案:DELETE FROM MainTable
OUTPUT DELETED.* INTO ArchiveTable
WHERE RecordDate 46 你的任务是创建一个名为 dbo.Widgets 的新表。你需要插入 5 行记录到 dbo.Widgets 表并返回被插入 5 条记录的每个 WidgetID。 答案:CREATE TABLE dbo.Widgets( WidgetID INT IDENTITY PRIMARY KEY, WidgetName VARCHAR(25)); GO INSERT dbo.Widgets(WidgetName) OUTPUT inserted.WidgetID,inserted.WidgetName VALUES(‘WidgetOne’),(‘WidgetTwo’),(‘WidgetThree’),(‘WidgetFour’),(‘WidgetFive’); 47 你有下列两个表。(略)你执行下列语句。(略)你需要确认 Products 表中显示的行。将显示哪几行? 答案:ProductID ProductName VendorID 第 11 页 2 Product2 1 3 NewProduct3 2 4 Product4 0 48 你 有 两 个 表 。 名 为 Student.CurrentStudents 的 表 包 含 本 年 度 注 册 的 所 有 学 生 的 姓 名 。 另一 个 名 为 Student.NewYearRoster 的表包含下一个年度注册的所有学生的姓名。你的任务是写一个 MERGE 语句:下 一年度注册但不在本年度注册的学生姓名插入到 Student.CurrentStudents 表。既在下一年度注册又在本年度 注册的学生更新 Student.CurrentStudents 表中信息。不在下一年度注册的学生姓名从 Student.CurrentStudents 表中删除。你应使用哪个 T-SQL 语句? 答案:MERGE Student.CurrentStudents AS T USING Student.NewYearRoster AS S ON S.LastName=T.LastName AND S.FirstName=T.FirstName WHEN MATCHED THEN UPDATE SET Address=S.Address,Age=S.Age WHEN NOT MATCHED BY TARGET THEN INSERT(LastName,FirstName,Address,Age) VALUES(S.LastName,S.FirstName,S.Address,S.Age) WHEN NOT MATCHED BY SOURCE THEN DELETE 49 你 用 下 列 T-SQL 语 句 创 建 和 填 充 两 个 表 。( 略 ) 你 使 用 下 列 MERGE 语 句 更 新 、 插 入 和 删 除 第 12 页 CurrentStudents 表中的行。(略)你需要确认更新、插入和删除 CurrentStudents 表的整个行数。你应选择总 的行数是哪个? 答案:3 50 你将写一个查询来返回 2007 年总收入超过$10,000.00 的产品列表。你需要在查询中插入下列筛选表达 式。(略)你应在哪个子句中插入这个表达式? 答案:C.HAVING 51 你有一个名为 Sales 的表。你的任务是列出卖给少于 10 个客户的产品。你需要写一个查询完成这个任 务。你应使用哪个 T-SQL 语句? 答案:SELECT ProductID,COUNT(DISTINCT CustomerID) AS CustomerCount FROM Sales GROUP BY ProductID HAVING COUNT(DISTINCT CustomerID)<10; 52 你有名为 Customers 和 Orders 的两个表。因为所有的客户至少有一个订单,你需要为每个客户列出客 户姓名及每个客户的订单数。 答案:SELECT c.CustomerName,COUNT(o.OrderId) AS [OrderCount] FROM Customers c JOIN Orders o ON c.CustomerId=o.CustomerId GROUP BY c.CustomerName 53 你有一个 Products 表。这个表包含名为 Color 的一列。你需要写一个 T-SQL 语句来计算每种产品颜色 占所有产品中的百分率。 答案:SELECT Color,(COUNT(*)*1.0)/COUNT(*) OVER() AS PercentColor FROM Products GROUP BY Color; 54 你有名为 SalesPerson 和 SalesTerritory 的两个表。你需要创建包含 SalesPerson 表和 SalesTerritory 表的 笛卡尔积的样例数据。 答案:SELECT p.SalesPersonId,t.Name AS [Territory] FROM Sales.SalesPerson p CROSS JOIN Sales.SalesTerritory t 55 你有一个名为 Employees 的表。你想确认每位雇员汇报的直接领导者。你写了下列查询。(略)你需 要确认这个查询返回了所有的雇员和他们各自主管人的列表。你应使用哪个 JOIN 子句完成这个查询? 答案:LEFT JOIN Employees s ON e.ReportsTo=s.EmployeeId 56 你有一个名为 Subcategories 的表,包含了短袜、女士背心和安全帽的子分类。另外一张表 Products 只 包含短袜和女士背心子类的产品。你有下列查询:(略)你需要预估查询结果。这个查询应生成哪个结果? 答案:Name ProductName Socks Mountain Bike Socks, Socks Mountain Bike Socks, Socks Racing Socks, M Socks Racing Socks, L Vests Classic Vest, S Vests Classic 第 13 页 Vest, M Vests Classic Vest, L Helmets NULL 57 你有名为 dbo.CurrentProducts 和 dbo.ArchiveProducts 的两个表。你有下列查询:(略)你需要预估这个 查询将生成的产品列表。这个查询应返回哪个产品列表? 答案:出现 dbo.CurrentProducts 和 dbo.ArchiveProducts 的两个表中的产品,并且两表都有的产品出现多次。 58 你有名为 Products 和 NewProducts 的两个结构相同的表。你有下列查询(:略)你需要选择合适的 T-SQL 运算操作符显示两表中都有的行。你应该在 03 行插入哪个操作运算符? 答案:INSERSECT 59 你的任务是创建一个表,该表包含必须存储精确到 10 微秒的当前时间的一列。你需要为列定义设置 默认值为系统函数。你应使用哪个系统函数? 答案:SYSDATETIME 60 你需要对 1.75 四舍五入到最接近的整数。你应使用哪个代码段? 答案:Select ROUND(1.75,0) 61 你有一个名为 TelephoneNumber 字段来存储 varchar(20)数字。你需要写一个返回电话号码前三个字符 的查询。你应使用哪个表达式? 答案:LEFT(TelephoneNumber,3) 62 你 是 位 于 西 雅 图 的 数 据 库 开 发 人 员 , 你 有 一 个 与 西 雅 图 不 同 时 区 的 墨 尔 本 客 户 端 。 你 准 备 使 用 datetimeoffset 数据类型存储含西雅图时区的数据。你需要显示墨尔本的时间。你应使用哪个函数? 第 14 页