(1) 设在SQL Server 2008某数据库中有商品表和销售表,表的定义如下:
CREATE TABLE 商品表(
商品号 char(10) PRIMARY KEY,
商品名 char(20) NOT NULL,
销售总量 int DEFAULT 0)
CREATE TABLE 销售表(
商品号 char(10),
销售时间 datetime,
销售数量 int NOT NULL,
PRIMARY KEY(商品号,销售时间),
FOREIGN KEY(商品号) REFERENCES 商品表(商品号))
现要创建一个具有如下功能的触发器:每当在销售表中插入一条销售记录时,修改商品表中对应商品的销售总量,假设一次只插入一条销售记录。请补全下列代码。
CREATE TRIGGER tri_insert on [1] FOR [2]AS[3] 商品表 [4] 销售总量= [5] +(SELECT 销售数量 FROM [6])WHERE 商品号 IN (SELECT 商品号 FROM Inserted)
参考答案:
[1]:销售表 [2]:INSERT [3]:UPDATE [4]:SET [5]:销售总量或商品表.销售总量 [6]:Inserted
(2)设在SQL Server 2008某数据库中有商品表和销售表,表的定义如下:
CREATE TABLE 商品表(
商品号 char(10) PRIMARY KEY,
商品名 char(20) NOT NULL,
单价 int DEFAULT 0)
CREATE TABLE 销售表(
商品号 char(10),
销售时间 datetime,
销售数量 int NOT NULL,
PRIMARY KEY(商品号,销售时间),
FOREIGN KEY(商品号) REFERENCES 商品表(商品号))
现要创建一个具有如下功能的用户自定义标量函数:根据指定的商品号,返回该商品的销售总金额。请补全下列代码(请不要为表起别名)。
CREATE FUNCTION dbo.f_TotalQty(@GoodID [1]) [2]intAS [3]RETURN(SELECT [4](单价 * 销售数量) FROM 商品表 JOIN [5] ON [6] WHERE 商品号 = [7]) [8]
答案:
[1]:Char [2]:RETURNS [3]:BEGIN [4]:SUM [5]:销售表 [6]:商品表.商品号 = 销售表.商品号 或 销售表.商品号 = 商品表.商品号 [7]:@GoodID [8]:END
(3)设在SQL Server 2008某数据库中有汽车表和销售表,表的定义如下:
CREATE TABLE 汽车表(
汽车型号 char(10) PRIMARY KEY,
汽车名称 char(20),
颜色 char(10),
价格 int)
CREATE TABLE 销售表(
汽车型号 char(10),
销售时间 datetime,
销售数量 int,
PRIMARY KEY(汽车型号,销售时间),
FOREIGN KEY(汽车型号) REFERENCES 汽车表(汽车型号))
现要创建一个具有如下功能的存储过程:查询指定日期范围内汽车的销售情况,列出汽车型号和销售总数量,包括没有被销售过的汽车。请补全下列代码。
CREATE [1] p1 @start_date date, @end_date dateAS SELECT [2].汽车型号, [3] FROM 汽车表 [4] 销售表 ON 汽车表.汽车型号 = 销售表.汽车型号 WHERE 销售时间 BETWEEN [5] AND [6] GROUP BY 汽车表.汽车型号
参考答案:
[1]:PROC或PROCEDURE [2]:汽车表 [3]:SUM(销售数量) [4]:LEFT JOIN或LEFT OUTER JOIN [5]:@start_date [6]:@end_date
(4)设在SQL Server 2008某数据库中有汽车表和销售表,表的定义如下:
CREATE TABLE 汽车表(
汽车型号 char(10) PRIMARY KEY,
汽车名称 char(20),
颜色 char(10),
销售总数量 int default 0)
CREATE TABLE 销售表(
汽车型号 char(10),
销售时间 datetime,
销售数量 int,
PRIMARY KEY(汽车型号,销售时间),
FOREIGN KEY(汽车型号) REFERENCES 汽车表(汽车型号))
现要创建一个具有如下功能的后触发型触发器:每当在销售表中插入数据时,自动更新汽车表中相应型号的汽车的销售总数量(假定一次只插入一行数据)。请补全下列代码。
CREATE TRIGGER tri_sales ON [1] AFTER [2]AS DECLARE @Sales_Amount int SET @Sales_Amount= ( SELECT 销售数量 FROM [3]) UPDATE 汽车表 SET 销售总数量 = 销售总数量 + [4] WHERE 汽车型号 IN ([5])
答案:
[1]:销售表 [2]:INSERT [3]:INSERTED [4]:@Sales_Amount [5]:SELECT 汽车型号 FROM INSERTED
(5)设在SQL Server 2008某数据库中有汽车表和销售表,表的定义如下:
CREATE TABLE 汽车表(
汽车型号 char(10) PRIMARY KEY,
汽车名称 char(20),
颜色 varchar(10),
价格 int)
CREATE TABLE 销售表(
汽车型号 char(10),
销售时间 datetime,
销售数量 int,
PRIMARY KEY(汽车型号,销售时间),
FOREIGN KEY(汽车型号) REFERENCES 汽车表(汽车型号))
现要创建一个具有如下功能的存储过程:查询指定型号的汽车的销售总数量,并且销售总数量用输出参数返回。请补全下列代码。
CREATE [1]P1 @model varchar(10), @total int [2]AS [3] @total = ( SELECT [4]FROM 销售表 s JOIN 汽车表 c ON [5]WHERE 汽车型号 = [6])
参考答案:
[1]:PROC或PROCEDURE [2]:Output [3]:SET [4]:SUM(销售数量) [5]:s.汽车型号 = c.汽车型号 或 c.汽车型号 = s.汽车型号 [6]:@model
(6)设在SQL Server某数据库中有房屋出租表,表的定义如下:
CREATE TABLE 出租表(
房屋号 char(10),
出租日期 datetime,
租期 int not null,–月数
到期日期 datetime,
PRIMARY KEY(房屋号,出租日期));
现要创建一个具有如下功能的触发器:每当在出租表中插入一行数据(房屋号,出租日期,租期)时,自动计算出本行数据的“到期日期”。请补全下列代码。
CREATE TRIGGER tri ON [1] FOR insertAS[2] 出租表 SET 到期日期 = dateadd([3],租期,出租日期)WHERE 房屋号 = (SELECT 房屋号 FROM [4]) and [5]
参考答案:
[1]出租表[2]UPDATE[3]month[4]inserted[5]出租日期 = (SELECT 出租日期 FROM inserted)或者(SELECT 出租日期 FROM inserted) = 出租日期
(7)设在SQL Server某数据库中有房屋及租赁表,表的定义如下:
CREATE TABLE 房屋表(
房屋号 char(10) PRIMARY KEY,
房屋地址 char(20) not null:
面积 int,
月租金 int)
CREATE TABLE 租赁表(
房屋号 char(10),
租赁日期 datetime,
租赁月数 int not null,
本次总租金 int,
PRIMARY KEY(房屋号,租赁日期),
FOREIGN KEY(房屋号) REFERENCES房屋表(房屋号))
现要创建一个具有如下功能的触发器:每当在租赁表中插入一行数据(房屋号,租赁日期,租赁月数)时,自动计算出该房屋的本次总租金。请补全下列代码。
CREATE TRIGGER tri ON [1] FOR [2]AS[3] @x int --声明保存月租金的变量SET @x = (SELECT 月租金 FROM 房屋表 WHERE 房屋号=(SELECT 房屋号 FROM [4]))UPDATE 租赁表 SET 本次总租金=租赁月数*[5] FROM 租赁表 as a JOIN [6] as bon a.房屋号=b.房屋号 and a.租赁日期=b.租赁日期
参考答案:
[1]租赁表[2]INSERT[3]DECLARE [4]inserted[5]@x[6]inserted
(8)CREATE TABLE 房屋表(
房屋号 char(10) PRIMARY KEY,
房屋地址 char(20) not null,
面积 int,
月租金 int)
CREATE TABLE 租赁表(
房屋号 char(10),
租赁日期 datetime,
租赁月数 int not null,
PRIMARY KEY(房屋号,租赁日期),
FOREIGN KEY(房屋号) REFERENCES 房屋表(房屋号))
现要创建一个具有如下功能的存储过程:根据输入的房屋号,计算该房屋的历史租金总和并用输出参数返回。请补全下列代码。
CREATE [1] P1@room char(10), ----输入参数:房屋号@total int [2] ----输出参数:租金总和AS[3] @total=( SELECT [4](月租金 * 租赁月数) FROM 房屋表 a JOIN 租赁表 b ON a.房屋号=b.房屋号 WHERE [5])
参考答案:
[1]Proc,Procedure[2]output[3]set[4]sum[5]a.房屋号=@room,b.房屋号=@room或@room=a.房屋号,@room=b.房屋号
来源地址:https://blog.csdn.net/weixin_51169222/article/details/129387866