设在SQL Server 2008某数据库中有汽车表和销售表,表的定义如下: CREATE TABLE汽车表( 汽车型号 char(10)PRIMARY KEY, 汽车名称 char(20), 颜色 char(10),

admin2018-06-19  51

问题 设在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 date
  AS
  SELECT【2】.汽车型号,【3】
  FROM汽车表【4】销售表ON汽车表.汽车型号=销售表.汽车型号
  WHERE销售时间:BETWEEN【5】AND【6】
  GROUP BY汽车表.汽车型号

选项

答案【1】PROC或PROC:EDURE 【2】汽车表 【3】SUM(销售数量) 【4】LEFT JOIN或LEFT OUTER JOIN 【5】@start_date 【6】@end_date

解析 【1】CREATE是用来建立存储过程的,根据建立存储过程的语法可知此处应该填写:PROCEDURE(或者PRO@C)@。
    【2】BEGIN和END之间应该填写的是处理任务的SQL语句。题目要求查询指定日期范围内汽车的销售情况,列出汽车型号和销售总数量。从FROM语句知,查询的是汽车表的内容,故此处应该填写:汽车表。
    【3】题目要求查询的销售总量,因此应该对销售数量求和。SQl.语句中求和函数使用的是SUM()函数。故此处应该填写:SUM(销售数量)。
    【4】汽车表中有汽车的基本信息,却没有销售信息;而销售表中有汽车销售信息,没有汽车信息,如果想既知道汽车信息,又知道销售信息,必须将两张表连接进行查询。根据【4】后面的ON关键字提醒,本处应该使用JOIN……ON语法。
    连接查询包括内连接和外连接查询。使用内连接时,仅当匹配的内容两个表中都存在时才显示出来。显然内连接不符合题意。因此必须使用外连接。外连接又分为三种类型:
    左外连接(LEFT[OLITER]JOIN):结果表中保留连接条件左边关系中的所有内容;
    右外连接(RIGHT[OUTER]JOIN):结果表中保留连接条件右边关系中的所有内容;
    全外连接(FULL[OUTER]JOIN):结果表中保留连接条件左、右边关系中的所有内容;
    其中OUTER关键字可以省略。
    题目要求查询包括没有销售和销售的所有的汽车,而汽车表在左边,销售表在右边,因此只有左外连接符合要求。故此处应该填写LEFT[OUTER]JOIN。
    【5】题目要求查询指定日期之间范围内的销售情况,根据“WHERE销售时间BETWEEN【5】AND【6】”知【5】和【6】的作用是确定查询的时间范围。在根据存储过程的参数@start_date、@end_date名可以推断出@start_date是查询的开始时间,@end_date是查询的结束时间。故此处应填写@start_date。
    【6】根据【5】空的解析可知【6】处应填写结束的时间,故此处应填写@end_date。
转载请注明原文地址:https://jikaoti.com/ti/BS37FFFM
0

最新回复(0)