分析以下数据表
分析以下数据表
2009-07-30 12:06:02| 分类: 面试相关 | 标签: |字号大中小 订阅
table1产品数据表
ProductID Pro(产品名) Prc(单价) 1 name1 110 2 name2 220 3 name3 330 4 name4 440 table2销售计划表
ProductID Ctm(客户名) Num(数量) Prc(单价) 2 m 2 250 1 n 3 110 3 n 1 300 4 m 2 400 (1)是否能删除产品数据表中的name2记录?为什么?
(2)将销售计划表中m客户的产品名为name2的销售单价更换为产品表中相应的单价。
(3)求销售计划表中每个客户各自的销售总金额的SQL语句。
(4)求客户中销售总量最大的销售总金额客户的SQL语句。
【考点】
数据库中多个表的数据查询方法。
【出现频率】
★★☆☆☆
【解答】
(1)不能,有外键约束。
(2)答案如下所示。
UPDATE [table2] SET [Prc]=(SELECT [Prc] FROM [table1] WHERE [ProductID]=2) WHERE [ProductID]=2
(3)答案如下所示。
SELECT SUM([Num]*[Prc]) FROM [table2] GROUP BY [Ctm]
(4)答案如下所示。
SELECT MAX(SUM([Num]*[Prc])) FROM [table2] GROUP BY [Ctm]
【分析】
(1)外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这一列或多列就成为第二个表的外键。外键约束主要用于维护两个表之间数据的一致性。
(2)题目要求可简化为:修改table2表中ProductID字段值为2的记录的Prc字段值,其新值为table1表中ProductID字段值为2的记录的Prc字段值。而新值的查询语句如下面代码所示。
SELECT [Prc] FROM [table1] WHERE [ProductID]=2
所以只需将新值赋值给table2表中ProductID字段值为2的记录的Prc字段即可,如下面代码所示。
UPDATE [table2] SET [Prc]=(新值) WHERE [ProductID]=2
这个题目考查比较典型的UPDATE语句的用法,并包括子查询的简单应用。
(3)该题目仅仅考查了GROUP BY子句的基本应用,GROUP BY子句指定用于放置输出行的组,其基本语法格式如下面代码所示。
[GROUP BY [ ALL ] 分组表达式 [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]
说明:分组表达式的参数可以是字段名(列),也可以是引用字段名(列)的非聚合表达式。在选择列表中定义的字段名(列)别名不能用来指定分组列,并且在分组表达式中不能指定聚合表达式。CUBE 和ROLLUP都可返回汇总行,两者差别很小,只是在基于GROUP BY子句创建和汇总分组的可能组合上有一定差别,CUBE将返回更多可能的汇总组合。
当指定GROUP BY时,GROUP BY表达式必须与选择列表表达式严格匹配,或者选择列表中任何非聚合表达式中的每个字段名(列)必须包括在GROUP BY列表中。如果在SELECT子句的选择列表中包括聚合函数,则GROUP BY子句计算每个组的汇总值。
(4)这个题目同样考查了GROUP BY子句的应用,分组后的数据用MAX函数返回其中最大值。
ProductID Pro(产品名) Prc(单价) 1 name1 110 2 name2 220 3 name3 330 4 name4 440 table2销售计划表
ProductID Ctm(客户名) Num(数量) Prc(单价) 2 m 2 250 1 n 3 110 3 n 1 300 4 m 2 400 (1)是否能删除产品数据表中的name2记录?为什么?
(2)将销售计划表中m客户的产品名为name2的销售单价更换为产品表中相应的单价。
(3)求销售计划表中每个客户各自的销售总金额的SQL语句。
(4)求客户中销售总量最大的销售总金额客户的SQL语句。
【考点】
数据库中多个表的数据查询方法。
【出现频率】
★★☆☆☆
【解答】
(1)不能,有外键约束。
(2)答案如下所示。
UPDATE [table2] SET [Prc]=(SELECT [Prc] FROM [table1] WHERE [ProductID]=2) WHERE [ProductID]=2
(3)答案如下所示。
SELECT SUM([Num]*[Prc]) FROM [table2] GROUP BY [Ctm]
(4)答案如下所示。
SELECT MAX(SUM([Num]*[Prc])) FROM [table2] GROUP BY [Ctm]
【分析】
(1)外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这一列或多列就成为第二个表的外键。外键约束主要用于维护两个表之间数据的一致性。
(2)题目要求可简化为:修改table2表中ProductID字段值为2的记录的Prc字段值,其新值为table1表中ProductID字段值为2的记录的Prc字段值。而新值的查询语句如下面代码所示。
SELECT [Prc] FROM [table1] WHERE [ProductID]=2
所以只需将新值赋值给table2表中ProductID字段值为2的记录的Prc字段即可,如下面代码所示。
UPDATE [table2] SET [Prc]=(新值) WHERE [ProductID]=2
这个题目考查比较典型的UPDATE语句的用法,并包括子查询的简单应用。
(3)该题目仅仅考查了GROUP BY子句的基本应用,GROUP BY子句指定用于放置输出行的组,其基本语法格式如下面代码所示。
[GROUP BY [ ALL ] 分组表达式 [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]
说明:分组表达式的参数可以是字段名(列),也可以是引用字段名(列)的非聚合表达式。在选择列表中定义的字段名(列)别名不能用来指定分组列,并且在分组表达式中不能指定聚合表达式。CUBE 和ROLLUP都可返回汇总行,两者差别很小,只是在基于GROUP BY子句创建和汇总分组的可能组合上有一定差别,CUBE将返回更多可能的汇总组合。
当指定GROUP BY时,GROUP BY表达式必须与选择列表表达式严格匹配,或者选择列表中任何非聚合表达式中的每个字段名(列)必须包括在GROUP BY列表中。如果在SELECT子句的选择列表中包括聚合函数,则GROUP BY子句计算每个组的汇总值。
(4)这个题目同样考查了GROUP BY子句的应用,分组后的数据用MAX函数返回其中最大值。
浙公网安备 33010602011771号