SQL语句 下载本文

8. 新建一个名为junjia的程序,完成以下功能。 OPEN DATABASE BOOKAUTH

&& 将BOOKS中的所有书名中含有\计算机\个字的图书复制到表BOOKSBAK中 SELECT * FROM BOOKS WHERE AT(\计算机\,书名)>0; INTO TABLE BOOKSBAK && 价格在原价格基础上降价5%

UPDATE BOOKSBAK SET 价格=价格*0.95 && 查询出各个图书的均价放到临时表中 SELECT 出版单位,AVG(价格) AS 均价; FROM BOOKSBAK INTO CURSOR CURSOR1 ; GROUP BY 出版单位ORDER BY均价

&& 在临时表中查询均价高于25的图书中价格最低的出版社名称和均价

SELECT * TOP 1 FROM CURSOR1 WHERE 均价>=25 INTO TABLE newtable; ORDER BY 均价

9. 在\公司管理\数据库中统计\部门\表中每个部门的人数,统计结果中包含字段\部门号\、\部门名称\和\人数\按\部门号\排序。并将结果放在表\部门人数\中。 SELECT 部门.部门号,部门.部门名称,; COUNT(员工.部门号) AS 人数; FROM 部门 INNER JOIN 员工; ON 部门.部门号=员工.部门号; GROUP BY 员工.部门号; ORDER BY 部门.部门号; INTO TABLE 部门人数

10. 设计文件名为myform1的表单。表单的标题设为\公司订货统计\。表单中有1个组合框、1个文本框和2个命令按钮。

运行表单时,组合框中有\公司编号\组合框中的公司编号不重复)可供选择,在组合框中选择\公司编号\后,如果单击\查询\命令按钮,则文本框显示出该公司的订货记录数。 *****表单的Init事件代码******************* SELECT 公司编号 DISTINCT; FROM 订货信息;

INTO CURSOR temp &&唯一地取公司编号 DO WHILE NOT EOF() &&循环至temp最后一条记录

THISFORM.Combo1.ADDITEM(temp.公司编号) &&为组合框增加项 SKIP &&前进一个记录 ENDDO

******************************************

步骤8:双击\查询\按钮,在其Click事件中输入:

*****\查询\按钮的Click事件代码********* SELECT COUNT(订单号) FROM 订货信息;

WHERE 公司编号=ALLT(THISFORM.Combo1.DISPLAYVALUE); INTO ARRAY temp &&将结果放到临时数组temp中 THISFORM.text1.VALUE=temp(1,1)

11在\订购\数据库中查询客户\的订购信息,查询结果中包括\定货\表的全部字段和\总金额\字段。其中\总金额\字段为定货\单价\与\数量\的乘积。并将查询结果保存在一个新表newtable中。

******文件query1.prg中的程序段**********

SELECT 订货.*,订货.单价*订货.数量 AS 总金额; FROM 订货 INNER JOIN 客户; ON 订货.订单号=客户.订单号; WHERE 客户.客户号=\INTO TABLE newtable

.12. 设计文件名为myform的表单。表单的标题为\地区销售情况\。表单中有1个选项组控件和2个命令按钮\统计\和\退出\。其中,选项组控件有2个按钮\升序\和\降序\。 IF THISFORM.optiongroup1.VALUE=1 &&选择了第一项

SELECT 地区.地区号,地区.地区名,SUM(业绩.单价*业绩.销量) AS 汇总; FROM 地区 INNER JOIN 业绩 ON 地区.地区号=业绩.地区号; GROUP BY 业绩.地区号 ORDER BY 汇总 INTO TABLE mytable1 &&将数据按照\汇总\升序取到新表mytable1 ELSE &&选择了第二项

SELECT 地区.地区号,地区.地区名,SUM(业绩.单价*业绩.销量) AS 汇总; FROM 地区 INNER JOIN 业绩 ON 地区.地区号=业绩.地区号;

GROUP BY 业绩.地区号 ORDER BY 汇总 DESC INTO TABLE mytable2 &&将数据按照\汇总\降序取到新表mytable2 ENDIF

13, 在\学生管理\数据库中查询选修了\线性代数\课的学生的所有信息,并将查询结果保存在一个名为\线性代数\的表中。 SELECT 学生.* FROM 成绩; INNER JOIN 课程;

ON 成绩.课程号=课程.课程号; INNER JOIN 学生; ON 成绩.学号=学生.学号; WHERE 课程.课程名=\线性代数\INTO TABLE 线性代数 ***********************************

14. 表单运行时,用户在组合框中选择编号,单击\查询\按钮,查询所选择的\编号\对应的采购的\编号\、采购员\姓名\、所采购商品的\名称\和\数量\。在表单右侧的表格控件中显示查询结果。

HISFORM.grid1.RecordSource=\

SELECT 采购详单.编号,员工.姓名,商品.名称,采购详单.数量; FROM 采购详单 INNER JOIN 商品; ON 采购详单.商品号=商品.商品号;

INNER JOIN 员工 ON 采购详单.采购员=员工.工号; INTO CURSOR temp;

WHERE 采购详单.编号=ALLT(THISFORM.combo1.DISPLAYVALUE)\

15. 在\学生管理\数据库中有\学生\表、\课程\表和\成绩\表。用SQL语句查询\成绩\表中每个学生\学号\、\姓名\、\课程号\、\课程名\、\成绩\和\开课院系\并将结果存放于表stu中,查询结果按\学号\升序排序。将使用到的SQL语句保存到student.txt中。 SELECT 学生.学号,学生.姓名,课程.课程号,课程.课程名,; 成绩.成绩,课程.开课单位; FROM 成绩 INNER JOIN 学生; ON 成绩.学号=学生.学号; INNER JOIN 课程;

ON 课程.课程号=成绩.课程号; ORDER BY 学生.学号; INTO TABLE stu

16. 对school数据库中的表course、student和score,建立文件名为form1的表单,标题为\成绩浏览\表单上有3个命令按钮\学院成绩\、\个人成绩\和\退出\。 ******\学院成绩\按钮的Click事件代码***** SELECT score.* FROM score; INNER JOIN student; ON score.学号=student.学号; WHERE student.学院=\计科院\ INTO TABLE table1

******************************************

步骤5:双击\个人成绩\按钮,在其Click事件中输入: ******\个人成绩\按钮的Click事件代码********

SELECT student.姓名,course.课程名,AVG(score.成绩) AS 个人成绩; FROM score INNER JOIN student; ON score.学号=student.学号; INNER JOIN course;

ON course.课程号=score.课程号;

INTO TABLE table2

17. 设计文件名为myform的表单。表单的标题为\车次排序\。表单中有1个选项组控件和2个命令按钮:\排序\和\退出\。其中,选项组控件有两个按钮,标题为:\升序\和\降序\。 IF THISFORM.optiongroup1.VALUE=1 &&选择了第一项 SELECT * FROM bus; ORDER BY 车次;

INTO TABLE table1 &&将表bus里的数据按照\车次\升序取到新表table1 ELSE &&选择了第二项 SELECT * FROM bus; ORDER BY 车次 DESC;

INTO TABLE table2 &&将表bus里的数据按照\车次\降序取到新表table2 ENDIF

18. 设计文件名为\表单1\的表单。表单的标题设为\平均成绩查询\。表单中有1个组合框、1个组合框和2个命令按钮,命令按钮的标题分别为\查询\和\退出\。 *******表单的Init事件代码*******************

SELECT 学号 DISTINCT FROM 分数 INTO CURSOR temp &&唯一地取学号 DO WHILE NOT EOF() &&循环至temp最后一条记录

THISFORM.combo1.ADDITEM(temp.学号) &&为组合框增加项 SKIP &&前进一个记录 ENDDO

******************************************

步骤8:双击\查询\按钮,在其Click事件中输入: *****\查询\命令按钮的Click事件代码****** SELECT AVG(成绩) FROM 分数;

WHERE 学号=ALLT(THISFORM.combo1.DISPLAYVALUE); &&取得组合框里的值 INTO ARRAY temp; &&将结果放到临时数组temp中

THISFORM.text1.VALUE=temp(1,1) &&取得结果显示到文本框text1中 ******************************************

19. 在考生文件夹下有表成绩。用SQL语句统计每个考生的平均成绩,统计结果包括\学号\和\平均成绩\两个字段,并将结果存放于表\中。将使用到的SQL语句保存到avgscore.txt中。

SELECT 学号,AVG(成绩) AS 平均成绩; FROM 成绩; GROUP BY 学号; INTO TABLE mytable

20. 表单运行时,用户首先在文本框中输入学号,然后单击\查询\按钮,如果输入学号正确,在表单右侧以表格(名称为Grid1)形式显示该生所选课程名和成绩,否则提示\学号不存在,请重