vf改错.docx
- 文档编号:15265475
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:17
- 大小:21.82KB
vf改错.docx
《vf改错.docx》由会员分享,可在线阅读,更多相关《vf改错.docx(17页珍藏版)》请在冰点文库上搜索。
vf改错
一、数据操纵
1.表记录的插入(INSERT)
格式:
INSERTINTO表名(字段1,字段2,。
。
。
)VALUES(值1,值2,。
。
。
)
例1:
往选课表中插入一条选课记录(“190101”,“01101”,65)
INSERTINTO选课(学号,课程号,成绩)VALUES(“190101”,“01101”,65)
例2:
往选课表中再插入一条选课记录(“190101”,“01103”,),成绩暂时未知。
INSERTINTO选课(学号,课程号)VALUES(“190101”,“01101”)
格式:
INSERTINTO表名FROMARRAY数组名
2.表记录的更新(UPDATE)
格式:
UPDATE表名SET字段名1=值1[,字段名2=值2]
一般使用WHERE子句指定条件,以更新满足条件的记录的字段值,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。
例1:
将学生表中所有云南省学生的入学成绩加上10分。
UPDATE学生SET入学成绩=入学成绩+10WHERE籍贯=“云南”
例2:
将学生表中所有云南省学生的入学成绩加上10分,性别都改为“女”。
UPDATE学生SET入学成绩=入学成绩+10,性别=“女”WHERE籍贯=“云南”
3.表记录的删除(DELETE)
格式:
DELETEFROM表名[WHERE条件]
例1:
逻辑删除学生表中所有云南省学生的信息。
DELETEFROM学生WHERE籍贯=“云南”
注意:
SQL语言中的DELETE命令同样是逻辑删除记录,如果要物理删除记录,则需继续使用PACK命令
二、数据定义
1.表结构的定义(CREATE)
CREATETABLE命令除了建立表的基本功能外,它还包括满足实体完整性的主关键字(主索引)PRIMARYKEY、定义域完整性的CHECK约束及出错提示信息ERROR、定义默认值的DEFAULT等关键词,另外还有描述表之间联系的FOREIGNKEY和REFERENCES关键词。
注意:
(1)用SQLCREATE命令新建的表自动在最低可用工作区打开,并可以通过别名引用。
新表的打开方式为独占方式(忽略SETEXCLUSIVE的当前设置);
(2)如果建立自由表(当前没有打开的数据库或使用了FREE),则很多选项在命令中不能使用,如NAME、CHECK、DEFAULT、FOREIGNKEY、PRIMARYKEY和REFERENCES等。
①定义一个基本的学生表。
CREATETABLEST(XHC(4),XMC(10),XBC
(2),RXCJI,CSRQD)
②定义一个基本的学生表,并给XH字段建立一个主索引标识XH。
CREATETABLEST(XHC(4)PRIMARYKEY,XMC(10),XBC
(2),RXCJI,CSRQD)
注意:
要用PRIMARYKEY建立主索引,在CREATE命令执行之前先打开一个数据库文件。
PRIMARYKEY————主索引类型
UNIQUE————候选索引类型
FOREIGNKEY————普通索引类型
③定义一个选课表XK,给其中XH字段建立一个普通索引标识XH,并和学生表ST建立关系。
CREATETABLEXK(XHC(4),
KCHC(10),
CJN(5,1),
FOREIGNKEYXHTAGXHREFERENCESST)
4定义一个数据库表,并同时给“性别”字段加上字段的规则有效性。
CREATETABLEST(XHC(4),
XMC(10),
XBC
(2)CHECK(性别$“男女”)ERROR“性别只能是男或女”DEFAULT“男”,
RXCJI,
CSRQD)
5视图的定义
格式:
CREATEVIEW视图名ASSELECT语句
CREATEVIEWmyview;
ASSELECT*FROM学生WHERE性别=”男”
注意:
1、视图中的内容是通过SELECT语句从其他表或视图中抽取出来的。
2、SELECT语句格式和前面讲述的用法一致。
3、在执行CREATEVIEW语句定义视图之前,一定要把数据库打开(OPENDATABASE命令),因为定义视图不会产生自己的视图文件,视图是存放在数据库中。
6视图的删除
格式:
DROPVIEW视图名
DROPVIEWmyview
注意:
删除视图之前,先打开数据库(OPENDATABASE命令)
2.表结构的修改(ALTER)
1增加新的字段,例1:
给学生表增加一个“英语”字段。
ALTERTABLE学生ADD英语N(3)CHECK英语>=0ERROR“英语成绩大于零”;
DEFAULT0
1修改已有字段的类型、宽度。
例3:
修改学生表中“英语”字段,改为N(5,1)。
ALTERTABLE学生ALTER英语N(5,1)
③定义、修改、删除已有字段的规则有效性、错误提示信息、默认值。
例4:
定义(修改)学生表中“奖学金”字段的规则有效性、错误提示信息、默认值。
ALTERTABLE学生;
ALTER奖学金SETDEFAULT10SETCHECK(奖学金>=0)ERROR“奖学金>=0”
注意:
如果有默认值的话SETDEFAULT一定要放在SETCHECK语句的前面。
⑦删除已有字段的主索引(PRIMARYKEY)和候选索引(UNIQUE)。
例10:
删除选课表中的候选索引标识XHKCH。
ALTERTABLE选课DROPUNIQUETAGXHKCH
3.表结构的删除(DROP)
DROPTABLE表名
注意:
1、DROPTABLE直接从磁盘上删除表文件。
2、如果删除的是数据库表,在执行DROPTABLE命令之前一定要把数据库打开,这样才能既把表文件删除了同时又把该表文件在数据库中的链接信息删掉。
超全SQL语句大全
一、基础
7、说明:
添加主键:
Altertabletabnameaddprimarykey(col)
说明:
删除主键:
Altertabletabnamedropprimarykey(col)
8、说明:
创建索引:
create[unique]indexidxnameontabname(col….)
10、说明:
几个简单的基本的sql语句
选择:
select*fromtable1where范围
插入:
insertintotable1(field1,field2)values(value1,value2)
删除:
deletefromtable1where范围
更新:
updatetable1setfield1=value1where范围
查找:
select*fromtable1wherefield1like’%value1%’---like的语法很精妙,查资料!
排序:
select*fromtable1orderbyfield1,field2[desc]
*下面的程序在第2行、第3行、第4行、第5行有错误,请直接在错误处修改。
*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
OPENDATABASEsdb
SELECT学号,姓名,AVG(成绩)平均成绩,COUNT(成绩)选课门数;
FROMstudentJOINscOFstudent.学号=sc.学号;
WHERE性别="女"ANDAVG(成绩)>=75;
GROUPBY学号;
ORDERBY4desc;
INTOTABLEthree
第2行:
SELECTstudent.学号,姓名,AVG(成绩)平均成绩,COUNT(成绩)选课门数;
第3行:
FROMstudentJOINscONstudent.学号=sc.学号;
第4行:
WHERE性别="女";
第5行:
GROUPBYstudent.学号HAVINGAVG(成绩)>=75;
9、
*该命令文件在第3行、第6行、第7行有错误,打开该命令文件,
*直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。
SELECT会员号,会员名,单位,电话;
FROMcus;
WHERE会员号=ANY;
(SELECT会员号;
FROMcbc;
WHERE数量>=10and性别=女;
GROUPBY会员号HAVING数量*单价>=5000);
INTOTABLETHREE
第3行:
WHERE性别="女"and会员号=ANY;
第6行:
WHERE数量>=10;
第7行:
GROUPBY会员号HAVINGSUM(数量*单价)>=5000);
14、
*下面的程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。
*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
OPENDATABASESELLDB
SELECTS_T.部门号,部门名,年度,;
一季度销售额+二季度销售额+三季度销售额+四季度销售额AS全年销售额,;
一季度利润+二季度利润+三季度利润+四季度利润AS全年利润,;
一季度利润+二季度利润+三季度利润+四季度利润/一季度销售额+二季度销售额+三季度销售额+四季度销售额AS利润率;
FROMS_TDEPT;
WHERES_T.部门号=DEPT.部门号;
GROUPBY年度利润率DESC;
INTOS_SUM
第5行:
(一季度利润+二季度利润+三季度利润+四季度利润)/(一季度销售额+二季度销售额+三季度销售额+四季度销售额)AS利润率;
第6行:
FROMS_T,DEPT;
第8行:
ORDEYBY年度,利润率DESC;
第9行:
INTOTABLES_SUM
第2套二.
&&所有器件的单价增加5元
UPDATEorder_detail1SET单价WITH单价+5
正确答案:
UPDATEorder_detail1SET单价=单价+5
&&计算每种器件的平均单价
SELECT器件号,AVG(单价)AS平均价FROMorder_detail1ORDERBY器件号INTOCURSORlsb
正确答案:
SELECT器件号,AVG(单价)AS平均价FROMorder_detail1GROUPBY器件号INTOCURSORlsb
&&查询平均价小于500的记录
SELECT*FROMlsbFOR平均价<500
正确答案:
SELECT*FROMlsbWHERE平均价<500
第22套二.1modi1.prg程序文件中SQLSELECT语句的功能是查询哪些零件(零件名称)目前用于三个项目,并将结果按升序存入文本文件results.txt。
给出的SQLSELECT语句中在第1、3、5行各有一处错误,请改正并运行程序(不可增、删语句或短语,也不可以改变语句行)
SELECT零件名称FROM零件信息WHERE零件号=;
(SELECT零件号FROM使用零件;
GROUPBY项目号HAVINGCOUNT(项目号)=3);
ORDERBY零件名称;
INFILEresults
正确答案:
SELECT零件名称FROM零件信息WHERE零件号in;
(SELECT零件号FROM使用零件;
GROUPBY零件号HAVINGCOUNT(项目号)=3);
ORDERBY零件名称;
TOFILEresults
第30套二.1打开程序文件cylinder.prg,请按要求修改程序并运行程序。
*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。
*请将程序修改为函数调用方式(注意不得增删语句行)。
SETTALKOFF
CLEAR
LOCALcarea*定义局部变量
INPUT"请输入圆柱体的半径"TOr
INPUT"请输入圆柱体的高"TOh
DOcyaWITHr,h,carea*DO<文件名>|<过程名>WITH<实参1>[,<实参2>,…]
?
"圆柱体的表面积为:
",carea
RETURN
PROCEDUREcya*定义过程
PARAMETERSa,b,c*声明形参变量,被看作是模块程序中建立的私有变量
LOCALpai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
RETURN
ENDPROC
SETTALKOFF
CLEAR
LOCALcarea
INPUT"请输入圆柱体的半径"TOr
INPUT"请输入圆柱体的高"TOh
Carea=cya(r,h)
?
"圆柱体的表面积为:
",carea
RETURN
PROCEDUREcya
PARAMETERSa,b,c
LOCALpai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
RETURNC
第38套二.2打开程序文件cylinder.prg,该程序的功能是根据输入的半径和高计算圆柱体表面积,其中函数定义中有错误,请在******found*******的下一行进行修改使之能正确运行(不得增加语句,不得删除语句)
*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。
SETTALKOFF
CLEAR
LOCALcarea
INPUT"请输入圆柱体的半径"TOr
INPUT"请输入圆柱体的高"TOh
carea=cya(r,h)
?
"圆柱体的表面积为:
",carea
RETURN
FUNCTIONcya
**********found***********
PARAMETERSa
LOCALpai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
**********found***********
ENDFUNC
*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。
SETTALKOFF
CLEAR
LOCALcarea
INPUT"请输入圆柱体的半径"TOr
INPUT"请输入圆柱体的高"TOh
carea=cya(r,h)
?
"圆柱体的表面积为:
",carea
RETURN
FUNCTIONcya
**********found***********
PARAMETERSa,b
LOCALpai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
**********found***********
RETURNc
SELECT部门表.部门号,部门名,销售表.商品号,商品名,一季度利润+二季度利润+三季度利润+四季度利润as年销售利润;
FROM部门表,销售表,商品代码表;
ON销售表.商品号=商品代码表.商品号;
ON部门表.部门号=销售表.部门号;
WHERE销售表.年度="2006";
ORDER1,5;
TOTABLETABA
*请改正以下语句代码中的错误,然后运行程序。
SELECT部门表.部门号,部门名,销售表.商品号,商品名,一季度利润+二季度利润+三季度利润+四季度利润as年销售利润;
FROM部门表,销售表,商品代码表;
WHERE部门表.部门号=销售表.部门号;
and销售表.商品号=商品代码表.商品号;
and销售表.年度="2006";
ORDERby1,5desc;
INTOTABLETABA
第63套二.2modi.prg中的SQL语句用于计算“银行”的股票(股票简称中有“银行”两字)中的盈余,现在该语句中有三处错误分别出现在第1行、第4行和第6行,请改正之。
(注意:
不要改变语句的结构、分行,直接在相应处修改。
)
SELECTCOUNT((现价-买入价)*持有数量);
FROMstock_sl;
WHERE股票代码;
=;
(SELECT股票代码FROMstock_name;
WHERE"银行"LIKE股票简称)
SELECTsum((现价-买入价)*持有数量);
FROMstock_sl;
WHERE股票代码;
IN;
(SELECT股票代码FROMstock_name;
WHERE"银行"$股票简称)
第70套二.1在考生文件夹下完成如下简单应用:
1.modi1.prg程序文件中SQLSELECT语句的功能是查询哪些零件(两件名称)目前用于三个项目,并将结果按升序存入文本文件results.txt。
给出的SQLSELECT语句在第1、3、5行各有一处错误,请改正并运行程序(不可以增、删语句或短语,也不可以改变语句行)。
SELECT零件名称FROM零件信息WHERE零件号=;
(SELECT零件号FROM使用零件;
GROUPBY项目号HAVINGCOUNT(项目号)=3);
ORDERBY零件名称;
INTOFILEresults
SELECT零件名称FROM零件信息WHERE零件号IN;
(SELECT零件号FROM使用零件;
GROUPBY零件号HAVINGCOUNT(项目号)=3);
ORDERBY零件名称;
TOFILEresults
二.1请修改并执行程序four.prg。
程序four.prg的功能是:
计算每个系的平均工资和高工资并存入表three.dbf中,要求three.dbf中包含“系名”、“平均工资”“最高工资”字段,先按“最高工资”将序排列,再按“平均工资”降序排列。
SELECT系名,avge(工资)as平均工资,max(工资)as最高工资;
FROM教师表WHERE教师表.系号=学院表.系号;
ORDERBY学院表.系号;
GROUPBY3DESC,2DESC;
INTOthree
SELECT系名,avg(工资)as平均工资,max(工资)as最高工资;
FROM教师表,学院表WHERE教师表.系号=学院表.系号;
GROUPBY学院表.系号;
ORDERBY3DESC,2DESC;
INTOTABLEthree
第84套二.2修改一个名称为THREE.PRG的命令文件,该命令文件查询累计消费金额5000元以上,每次购买数量大于或等于10的“女”会员的会员号,会员名,单位电话,结果输出到THREE中,该命令文件在第3行,第6行,第7行有错误,打开该命令文件,直接在错误处修改,不允许增加和删除行,修改完成后,运行该命令文件。
SELECT会员号,会员名,单位,电话;
FROMcus;
WHERE会员号=ANY;WHERE会员号IN;
(SELECT会员号;
FROMcbc;
WHERE数量>=10and性别=女;WHERE数量>=10;
GROUPBY会员号HAVING数量*单价>=5000);GROUPBY会员号HAVING数量*单价>=5000)and性别=“女”;
INTOTABLETHREE
第二题:
&&根据"教师表"计算每个系的教师人数并将数据填入"学院表"
CLOSEDATA
USE学院表
GOTOP
DO.NOT.EOF()&&错误---->>>>>DOwhile.NOT.EOF()
xihao=系号
SELECTCOUNT(*)FROM教师表WHERE教师表.系号=xihaoINTOA&&错误
---->>>>>INTOarrayA
REPLACE教师人数WITHA[1]
NEXT&&错误---->>>>>skip
ENDDO
第三题:
改成:
SELECT部门表.部门号,部门名,销售表.商品号,商品名,一季度利润+二季度利润+三季度利润+四季度利润as年销售利润;
FROM部门表,销售表,商品代码表;
where销售表.商品号=商品代码表.商品号;
and部门表.部门号=销售表.部门号;
and销售表.年度="2006";
ORDERby1,5desc;
inTOTABLETABA
SELECT销售表.部门号,部门名,一季度利润+二季度利润+三季度利润+四季度利润AS年销售利润;
FROM销售表,部门表;
WHERE销售表.部门号=部门表.部门号AND年度="2005";
ORDERBY销售表.部门号TODBFtemp-->>GROUPBY销售表.部门号INTOCURSORtemp
SELECTtemp.部门号,部门名,年销售利润,工资支出,办公支出,年销售利润-工资支出-办公支出AS纯利润;
FROMtemp,部门成本表;
WHERE部门成本表.部门号=temp.部门号AND年度="2005";
TOTABLEaccount-->>INTOTABLEaccount
第四题:
第五题:
SELECT课程号FROM课程表WHERE课程名="数据结构"TOARRAYa
---inTOARRAYa
OPEN教师表----------use教师表
STORE0TOsum
SCANOF课程号=aOR工资>=4000---SCANfor课程号=aand工资>=4000
sum+1------------sum=sum+1
ENDSCAN
?
sum
第六题:
CREATETABLE工资表(职工号C(8)KEY,姓名C(6),工资N(10,2))
---CREATETABLE工资表(职工号C(8)primaryKEY,姓名C(6),工资N(10,2))
INSERTTO工资表VALUES("11020034","宣喧",4500)
------INSERTinTO工资表VALUES("11020034","宣喧",4500)
USE工资表
APPENDFROM教师表
UPDATE工资表BY工资=工资*1.1WHERE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vf 改错