VFP中SQL语言的几个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VFP中SQL语言的几个问题相关的知识,希望对你有一定的参考价值。

【1】假定学号的第3-4位为专业代码,要计算各专业的学生选修课程号为“101”课程的平均成绩,正确的SQL语句为( )
A.SELECT SUBS(学号,3,2)AS专业, AVG(成绩)AS平均分 FORM 选课
WHERE 课程号="101"GROUP BY1
B.SELECT SUBS(学号,3,2)AS专业, AVG(成绩)AS平均分 FORM 选课
WHERE 课程号="101"GROUP BY 专业
这两个就最后不同 为什么不能用GROUP BY 专业?

【2】VFP中常用COUNT(*) 倒底是什么意思啊 能举例说明更好

【3】有以下SQL语句:
SELECT订单号,签订日期,金额 FROM订单,职员
WHERE订单.职员号=职员.职员号 AND 姓名=“李二”
与上面语句作用相同的是( )
A. SELECT订单号,签订日期,金额 FROM订单WHERE EXITS(SELECT* FROM职员 WHERE 姓名=“李二”)
B.SELECT订单号,签订日期,金额 FROM订单WHERE IN(SELECT* FROM职员 WHERE 姓名=“李二”)
郁闷了 EXIT 和 IN 到底有什么区别啊 就用我这个题举个特例看看
【4】用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的是()
A.SELECT 学号,姓名FROM S WHERE NOT EXITS(SELECT*FROM SC.学号=S.学号 AND 成绩<85 )
B.SELECT学号,姓名 FROM S,SC WHERE SC.学号=S.学号 AND 成绩>=85
这两个句子表达的意思不同吗? 为什么选A不选B?
好了 先打这么多...(好难打啊)
谢谢各位大侠的解答!感激不尽!

1.group by 后只能跟列名
2.count(*)是统计数的,
如:计算学生人数。
select count(*)
from student
3.二者的区别就是,所有带有in谓词的子查询都能被带有exists谓词的子查询的句子等价替换,但某些带有exists子查询的句子不能被带有in谓词的子查询替换。
exists返回的是逻辑值,所以select *,但上题用in谓词的时候,不能用select *
应改为 SELECT订单号,签订日期,金额 FROM订单WHERE 职员 IN(SELECT 职员FROM 职员 WHERE 姓名=“李二”)
4.A答案选的是每门课程都>=85的同学
B答案选的是有一门课程>=85的同学,所以二者是不一样的,

打的我好累啊,累死了,呵呵,我也是初学者,以上仅仅是个人观点,呵呵!!!共同进步!!
参考技术A group by 后面不跟别名的吧,只跟表中的列名;
count(*)是统计行数;
一个返回的是逻辑值,一个是数据行;
大于或等于的反命题就是小于,如果学生的学号和姓名不出现在成绩小于85分的名单中,那么这位同学就是我们要找的人了。第二个选项是找出只要有一门大于等于85的同学,显然不适合我们的要求。

VFP 中update replace 的用法

参考技术A 1、update
replace语法如下:
  REPLACE
(
'string_expression1'
,'string_expression2'
,'string_expression3'
)
  2、update
replace设置参数如下:
  'string_expression1'
  待搜索的字符串表达式。string_expression1可以是字符数据或二进制数据。
  'string_expression2'
  待查找的字符串表达式。string_expression2可以是字符数据或二进制数据。
  'string_expression3'
  替换用的字符串表达式。string_expression3可以是字符数据或二进制数据。
  3、返回类型如下:
  如果
string_expression(1、2
或3)是支持的字符数据类型之一,则返回字符数据。如果string_expression(1、2

3)是支持的
binary数据类型之一,则返回二进制数据。
  注意:
  1、使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。
  2、在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。
参考技术B 这两个命令都是数据修改命令。
update是sql中的数据更新命令,replace是vf中的数据更新命令;
update不需要打开表,repl命令需要先打开表;
update不加条件是更新表中所有记录,repl不加条件是更新当前记录,要加上all短语才是更新所有记录。

以上是关于VFP中SQL语言的几个问题的主要内容,如果未能解决你的问题,请参考以下文章

关于VFP语言的问题,请大家多多指教!

关于VFP和SQL Server的

求vfp中修改字段长度语句

vfp 中 SQL语句 exists

VFP里使用SQL的SELECT语句将查询结果存储在一个临时表中,应使用啥子句?

vfp9.0连接sql数据库