首页 > 试题广场 >

给出数据表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 回复(1)
首先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)
语法 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)