首页 > 试题广场 >

给出数据表score(stu_id,name,math,en

[单选题]
给出数据表score(stu_id,name,math,english,chinese),下列语句正确的是()
  • select *,sum(english) from score
  • delete * from score
  • select stu_id,sum(math) from score
  • select sum(math),avg(chinese) from score
如果D对的话,为什么C不是对的,表示疑问?
发表于 2017-01-05 18:19:24 回复(7)
select *,sum(english) form score 和select stu_id,sum(math) from score 是第一个对应多个元组,而第二个只有一个数。
delete * from是不标准的语法
发表于 2016-12-08 14:50:05 回复(2)
首先select操作得到的从形式上是一张二维表,实际上可以认为是元组的集合。那么如果想要满足形式上的二维表,在用select进行投影操作时必须要同行同列。
对于A,select sum(english)得到的是所有english列的总和,应该得到的是一行一列的元组。而select *显然得到的是多行多列,这两者显然只能进行笛卡尔积操作,而不能进行连接操作,更不用说连接之后的投影了。
对于B.delete *这个“*”的使用是不合法的,因为delete是以元组为单位进行删除的。select用是为了代表所有的列,delete这样使用会造成*使用的歧异。
对于C,还是来自于A的问题,由于没有显示指明where,也没有进行group by,导致stu_id投影后是一个多行一列的表,而sum(math)则是一个一行一列的表,导致连接操作无法使用,而之后select投影就无从做起。
对于D,两个一行一列的数据拼一起,没有问题。
编辑于 2019-03-05 11:39:36 回复(0)
D 这个查询是正确的。它从score表中选择了数学成绩的总和以及中文成绩的平均值。这里没有涉及到任何非聚合列的选择,也不需要GROUP BY子句,因为整个表的数据都被聚合成了单个结果行。 
C错 没有group by时不能选择非聚合列;
B delete from table
A 对所有列同时计算英语成绩,无group by
发表于 2024-11-12 18:11:37 回复(0)
语法 4-2 保留数据表,仅删除全部数据行的 DELETE 语句

DELETE FROM <表名>;


编辑于 2019-01-28 13:39:59 回复(0)
使用函数不是要有 group by?
发表于 2018-08-15 23:09:00 回复(0)
Mark。牛逼
发表于 2017-10-06 17:31:32 回复(0)