VFP实验5 SQL语言的应用-参考答案

合集下载

visual foxpro SQL语句的各种答案

visual foxpro  SQL语句的各种答案

~~~D现有三个自由表:学生信息表:{<myStudent.dbf>},由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,其中为Sno主码。

课程信息表:{<myCourse.dbf>},由课程号(Cno)、课程名(Cname)、选修课号(Cpno)、学分(Ccredit)四个属性组成,其中Cno为主码。

学生选课表:{<mySC.dbf>},由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,主码为(Sno, Cno)。

请按下面要求写出SQL代码:(1) 查询所有学生的全部信息。

(5分)(2) 查询选修了课程“3503”的学生的学号及其成绩,查询结果按分数降序排列。

(5分)(3) 删除姓张的学生记录。

(5分)(4) 查询其他系中比生物系某一学生年龄小的学生的姓名和年龄。

(10分)~(1) select * from myStudent 或select sNo,Sname,Ssex,Sage,Sdept from myStudent(2) select Sno,Grade from mySC where Cno='3503' order by Grade desc(3) delete from myStudent where Sname like '张%'(4) select Sname,Sage from mySTudentwhere Sage < any (select Sage from myStudent where Sdept = '生物系')and Sdept <> '生物系'~~~D现有三个自由表:学生信息表:{<myStudent.dbf>},由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,其中为Sno主码。

VFP第五章SQL

VFP第五章SQL
第四章SQL语言 总结复习
1. SQL命令动词 要记住,这个表 格可以出题,选 择、填空都可 能.
在VFP中不能使用命令 GRANT、REVOKE
SQL功能
命令动词
数据查询
数据定义 数据操纵
select
Create,drop ,alter Insert, update delete Grant revoke
Select from xs,cj where xs.xh=cj.xh
select * from cj && *表示什 么意思? 表示cj表的所有字段.
4.2.3嵌套查询(必考题)
NOT IN是排除的意思 Select * from xs where xh not in (select xh from cj) &&排除掉了在CJ表中出现的XH ,也就是所有选过课的学生被排 除掉了,剩下来的就是没有选过 课的学生信息。 In:只在….范围内的意思。
连接查询。 凡要从两个表里查询记录的话, 一定要对两个表进行联接,否则 是不能进行查询的.
最常用的连接是普通连接: (1)Select ….from 表1名字, 表2 名 where 表1名.字段名=表2 .相同字段名 Select …. From xs,cj where xs. xh =cj.xh (2)等价于(1):select…..from 表1名 join 表2名 on 表1名.字段名=表2 . 相同字段名
4.2.4 也考过 成绩 not Between 20 and 100用关系 运算符来改写:成绩<20 or 成绩>100 Select xh from cj where cj in(60,70,80) &&查询cj=60 or cj=70 or cj=80的学 生xh

vf数据库sql部分的答案

vf数据库sql部分的答案

vf数据库sql部分的答案一、用SQL完成以下查询1检索在北京的供应商的名称。

select 供应商名from 供应商where 地址='北京'2.检索出向供应商s3发过订购单的职工的职工号和仓库号。

select 职工号from 订购单where 供应商号='s3'select 仓库号from 职工where 职工号='e3'3.检索出和职工e1、e3都有联系的北京的供应商的信息。

select 供应商号from 供应商where 地址='北京select 供应商号,职工号from 订购单where 职工号='e1' or 职工号='e3' and 供应商号='s4' or 供应商号='s7'4.检索出向s4供应商发出订购单的仓库所在的城市。

select 职工号from 订购单where 供应商号='s4'select 仓库号from 职工where 职工号='e1' or 职工号='e7' or 职工号='e3'select 城市from 仓库where 仓库号='wh2' or 仓库号='wh1'5.检索出由工资多于1230元的职工向北京的供应商发出的订购单号。

sele订购单号from 订购单where;(供应商号in (sele供应商号from 供应商where 地址= '北京')) ;and (职工号in (sele职工号from 职工where 工资>1230))6.检索出所有仓库的平均面积。

Select avg(面积) as '平均面积' from 仓库7.检索出每个仓库中工资多于1220元的职工个数。

sele count(职工号) as 职工号个数from 职工where 工资>12208.检索出工资低于本仓库平均工资的职工信息。

vfp5 SQL

vfp5 SQL

TO PRINTER:将查询结果送打印机打印。
分组 GROUP BY子句用来定义或者划分字段的值成为多个 组,它能控制和影响查询的结果。 【例16】列出成绩表中选修3门课以上的学生姓名、 成绩及课程门数。 SELECT 姓名,成绩,CNT(课程号) AS门数; FROM XSQK,CJ; WHERE XSQK.学号=CJ.学号; GROUP BY CJ.学号; HAVING COUNT(CJ.学号)>=3
数据查询命令 SELECT [ALL|DISTINCT] [<表别名1>.]<表达式1> AS <列名1>] [,[<表别名2>.]<表达式2> AS <列名2>]…] FROM [数据库名!]<表名>[逻辑别名] [[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER] JOIN [,<数据库2>!<表名2>[<逻辑别名2>]ON联接条件…] [INTO DBF|TABLE|CURSOR <表名>] [WHERE <连接条件> [AND <连接条件>…] [AND|OR <条件表达式>[AND|OR <条件表达式>…]]] [GROUP BY<分组表达式>[,<分组表达式>…]] [HAVING <筛选条件>] [UNION[ALL]SELECT <语句>] [ORDER BY <排序项> [ASC|DESC][,<排序项>…]]
【例13】查询信息系和计算机系的读者人数 SELECT CNT(*) FROM DZ ; WHERE 单位=“计算机系” OR 单位=[信息系] 或SELECT CNT(*) FROM DZ ; WHERE 单位 IN (“计算机系” ,[信息系]) 4.对查询结果排序(ORDER BY…[ASC|DESC]) 【例14】按数学成绩升序检索出学生信息 SELECT * FROM XSCJ ORDER BY 数学 【例15】按数学成绩降序检索出学生信息 SELECT * FROM XSCJ ORDER BY 数学 DESC

05Visual FoxPro中SQL语言的应用

05Visual FoxPro中SQL语言的应用

22
5.2.1 单表查询(11)
3. 对查询结果排序
用户可以用ORDER BY子句对查询结果按照一个或多 个属性列的升序(ASC)或降序(DESC)排列, 缺省值为升序。
例5-23:查询所有学生的入学成绩,查询结果按入学成绩的 降序排列。 select 学号,姓名,入学成绩; from 学生表; Order by 入学成绩 desc
4
过程化语言示例
煮饭
买米 淘米 开始煮 等待 饭好
江西财经大学信息管理学院《数据 库应用》课程组
5
非过程化语言示例
饭店吃饭
点菜 上菜
江西财经大学信息管理学院《数据 库应用》课程组 6
5.1 SQL语言概述(3)
SQL语言结构简洁,功能强大,简单易学。 SQL语言是关系数据库管理系统的标准语言。 SQL分成3类: 以记录为
江西财经大学信息管理学院《数据 库应用》课程组 15
5.2.1 单表查询(4)
2. 选择表中的若干元组 选择一个表中的若干元组(或记录)操作,是对 该表实行选择操作。其方法是使用SELECT语 句的WHERE子句中的条件。
江西财经大学信息管理学院《数据 库应用》课程组
16
5.2.1 单表查询(5)
分组汇总 排序
简单格式:
select 字段列表 from 数据来源列表 where 条件
江西财经大学信息管理学院《数据 库应用》课程组 12
5.2.1 单表查询(1)
1. 单表基本查询 单表查询的含义:from子句只有一个数据表。 (1) 查询所有列
例5-1:返回“学生表”中的所有行和所有列。 open database “d:\我的数据库项目\数据库\教学管理数据 库.dbc“ select *; from 教学管理数据库!学生表 例5-2:查询成绩表中的所有记录。 open database “d:\我的数据库项目\数据库\教学管理数据 库.dbc“ select *; from 成绩表

数据库原理复习资料5、vfp数据库的操作及sql语言的应用.docx

数据库原理复习资料5、vfp数据库的操作及sql语言的应用.docx

班级: ___________ 姓名:______________ 学号:________________ 成绩:__________一、选择题1. 1.命令SELECTO的功能是_A _______ 。

A、选择区号最小的空闲工作区B、选择区号最大的空闲工作区C、选择当前工作区的区号加1的工作区D、随机选择一个工作区的区号2.以下叙述中,错误的是—C_oA、工作区的系统别名和用户定义的数据表别名可以交替使用B、在某个工作区打开的数据表原名和工作区别名可以交替使用C、在某个工作区打开的数据表原名和数据表别名可以交替使用D、在选择工作区时,可以用工作区号、系统别名或打开的数据表别名3.VFP中的SET RELATION关联操作是一种_人__ 。

A、逻辑连接B、物理连接C、逻辑排序D、物理排序4.建立两个数据表关联,要求_____ D_oA、两个数据表都必须排序B、关联的数据表必须排序C、两个数据表都必须索引D、被关联的数据表必须索引5.下列叙述正确的是_C—oA、一个数据表被更新时,它所有的索引文件会自动被更新B、一个数据表被更新时,它所有的索引文件不会自动被更新C、一个数据表被更新吋,处于打开状态下的索引文件会自动被更新D、当两个数据表用SET RELATION TO命令建立关联后,调节任何一个数据表的指针时,另一个数据表的指针将会同步移动6.两个数据表结构相同,若要将STD1.DBF中的纪录追加到STD2.DBF之后,应使用命令组BA、USE STD1B、USE STD2APPEND TO STD2 APPEND FROM STD1C、USE STD1D、USE STD2COPY TO STD2 COPY FROM STD 17.VFP屮,下列概念屮正确的是_A—oA、在同一个工作区中,某一时刻只能有一个表文件处于打开状态B、一个表文件可以在不同的工作区屮同时打开C、U PDATE命令中的两个表必须按相同关键字建立索引D> JOIN命令生成的表文件可以与被连接的表在一个工作区内同吋打开1. B2. A3. C4. A5. A 6・ C 7. D 8・ B 9. C10. D 11. A 12. D 13. A 14. C 15. C 16. D 17. B 18. B1.下列命令中,用于打开数据库设计器的是_B—。

实验5 sql语句练习——图书馆数据库答案

实验5  sql语句练习——图书馆数据库答案

实验5sql语句练习——图书馆数据库实验5 sql语句练习——图书馆数据库实验目的(1)了解SQL Server数据库的逻辑结构和物理结构;(2)了解表的结构特点;(3)了解SQL Server的基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库和表;(6)学会使用T-SQL语句创建数据库和表。

(7)学会使用T-SQL语句更新数据。

(7)学会使用T-SQL语句创建多种查询。

实验准备首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。

其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。

然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。

此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。

实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。

三个表的结构如图:列名说明数据类型约束说明书号图书唯一的编号定长字符串,长度为10 主键书名图书的名称定长字符串,长度为50 空值作者图书的编著者名定长字符串,长度为30 空值出版社图书的出版社定长字符串,长度为30 空值单价出版社确定的图书的单价浮点型,Float 空值读者表结构假设有10位读者列名说明数据类型约束说明读者号读者唯一的编号定长字符串,长度为10 主键姓名读者姓名定长字符串,长度为8 非空值性别读者性别定长字符串,长度为2 非空值办公电话读者办公电话定长字符串,长度为8 空值部门读者所在部门定长字符串,长度为30 空值列名说明数据类型约束说明读者号读者的唯一编号定长字符串,长度为10 外码,引用读者表的主键书号图书的唯一编号定长字符串,长度为20 外码,引用图书表的主键借出日期借出图书的日期定长字符串,长度为8 非空值归还日期归还图书的日期定长字符串,长度为8 空值主键为:(读者号,图书号)(1)用Sql语句创建图书馆数据库Create database Lab05(2)用Sql语句创建上述3个表create table book(bookId char(10)primary key,bookName varchar(50),bookWriter varchar(30),bookPublish varchar(30),bookPrice float)create table reader(readerId char(10) primary key,readerName varchar(8)not null,readerSex char(2)not null,readerOfficeTel char(8),readerDepartment varchar(30))create table 借阅表(readerId char(10),bookId char(10),checkOutTime char(8),checkInTime char(8),primary key(readerId,bookId),foreign key (readerId) references reader(readerId),foreign key (bookId) references book(bookId),)(3)基于图书馆数据库的3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949’ALTER TABLE book ADD CONSTRAINT ISBNDEF DEFAULT ('7111085949') FOR ISBN 3)删除图书表中ISBN列增加的缺省值约束alter table book drop ISBNDEF4)删除图书表中新增的ISBN列ALTER TABLE book DROP COLUMN ISBN5)查询全体图书的图书号、书名、作者、出版社和单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书的信息,其中单价打8折,并设置该列的别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0.8) as打折价from book7)显示所有借阅者的读者号,并去掉重复行select distinct readerIdfrom 借阅表8)查询所有单价在20—30元之间的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20 and 309)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish in('机械工业出版社' , '科学出版社','人民邮电出版社') 10)查询既不是机械工业出版社、人民邮电出版社、也不是科学出版社出版的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in('机械工业出版社' , '科学出版社','人民邮电出版社') 11)查询姓名的第二个字符是’建’,并且只有2个字的读者的读者号及姓名select readerId,readerNamefrom readerwhere readerName like '_建'12)查询姓名不是以‘王’、‘张’或‘李’开头的所有读者的读者号及姓名【方式一】查询出来的结果有问题!select readerId,readerNamefrom readerwhere readerName not in ('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(select readerNamefrom readerwhere readerName like'王%'or readerName like'张%'or readerName like'李%' )13)查询无归还日期的借阅信息select book.bookId,book.bookName,reader.readerId,reader.readerName,借阅表.checkOutTime as 借书时间,借阅表.checkInTime as 还书时间from 借阅表,book,readerwhere 借阅表.bookId = book.bookIdand 借阅表.readerId = reader.readerIdand 借阅表.checkInTime is null14)查询机械工业出版社图书的平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice) as 最高价,min(bookPrice) as 最低价from bookwhere bookPublish = '机械工业出版社图书'15)查询读者的基本信息及借阅情况select reader.readerId,reader.readerName ,借阅表.bookId,book.bookName,book.bookPublishfrom reader , 借阅表,bookwhere reader.readerId = 借阅表.readerIdand book.bookId = 借阅表.bookIdand 借阅表.readerId ='1000000007'16)查询至少借阅过1本机械工业出版社出版的图书的读者的读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列select r.Rno,Rname,count(borrow.Bno) 借阅册数from borrow,b,rwhere b.bno=borrow.bno and press='机械工业出版社' and borrow.rno=r.rnogroup by r.rno,Rnameorder by count(borrow.Bno) desc17)查询与‘王小平’的办公电话相同的读者的姓名/* 使用“自连接方式”求解*/select b.readerName,b.readerId,a.readerOfficeTelfrom reader a, reader bwhere a.readerName like '王小平'and a.readerOfficeTel = b.readerOfficeTel/*18)查询所有单价小于平均单价的图书的书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select avg(bookPrice) as averagePricefrom book)19)查询‘科学出版社’的图书单价比‘机械工业出版社’最高单价还高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like '科学出版社' and bookPrice >(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')20)查询‘科学出版社’的图书中单价比‘机械工业出版社’最低单价高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')and bookPublish like '科学出版社'21)创建机械工业出版社图书的视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish = '机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者的读者号和总借阅本数CREATE VIEW CountViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2的读者号和总借阅本数CREATE VIEW 借阅统计视图ViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerIdHA VING COUNT(*) >2。

VF中常用SQL命令使用方法

VF中常用SQL命令使用方法

VF中常用SQL命令使用方法SQL(结构化查询语言)是关系型数据库管理系统中最常用的查询语言。

在VF中,使用SQL命令可以对数据库进行增删改查等操作。

以下是VF中常用的SQL命令使用方法:1.创建表格(CREATETABLE):用于创建数据库中的表格。

语法如下:```sqlCREATE TABLE table_namecolumn1 data_type,column2 data_type,...```例如:```sqlCREATE TABLE customersid INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(100)```2.插入数据(INSERTINTO):用于向表格中插入新的数据。

语法如下:```sqlINSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);```例如:```sqlINSERT INTO customers (id, name, age, email)```3.更新数据(UPDATE):用于更新表格中的数据。

语法如下:```sqlUPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;```例如:```sqlUPDATE customersSET age = 26WHERE id = 1;```4.删除数据(DELETEFROM):用于从表格中删除数据。

语法如下:```sqlDELETE FROM table_name WHERE condition;```例如:```sqlDELETE FROM customers WHERE id = 1;```5.查询数据(SELECT):用于从表格中查询数据。

语法如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```例如:```sqlSELECT * FROM customers WHERE age > 25;```6.排序数据(ORDERBY):用于按照指定列对查询结果进行排序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5 SQL语言的应用
【实验目的】
1.掌握SQL的基本语句的使用
2.掌握SELECT命令的基本用法
3. 掌握对查询的结果进行处理
4.掌握用查询设计器建立查询的方法
【实验内容与操作步骤】
说明:红色字体为答案
设置VFP的默认工作目录为D:\EX7,并完成以下各操作,将操作结果存入D:\EX5文件夹中。

1、使用SQL语句实现下列功能:

creat table 学生成绩(学号C(7),姓名C(8),入学成绩N(5,1))
(2)使用ALTER TABLE命令,增加一个字段:性别C(2),并将“学号”的字段长度改为8。

alter table 学生成绩add 性别C(2)
alter table 学生成绩alter 学号C(8)

insert into 学生成绩values("0503102","李丽",680,"女")
insert into 学生成绩values("0603101","王庆",600,"男")
或者是:
Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0503101”,”张海”,660,”男”) Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0503102”,”李丽”,680,”女”) Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0603101”,”王庆”,600,”男”)
庆”,600,”男”)
(4)使用DELETE 删除“王庆”的记录。

dele from 学生成绩where 姓名="王庆"
(5)使用UPDATE命令将所有人的“入学成绩”置为0。

update 学生成绩set 入学成绩=0
2、使用SQL语句中的SELECT命令来实现下列查询:
(1)查询“学生.dbf”表中全部记录,输出“学号”、“姓名”、“性别”、“出生日期”和“入学成绩”这5个字段的内容;
select 学号,姓名,性别,出生日期,入学成绩from 学生
(2)查询“学生.dbf”表中的性别为男的所有内容,并按“学号”的降序排列;
select * from 学生where 性别=”男” order by 学号
(3)查询“学生.dbf”表中的全部学生中的入学最高分;
select max(入学成绩) from 学生
(4)查询“学生.dbf”表中的数学专业和英语专业的学生的学号,姓名和专业;
select 学号,姓名,专业from 学生where 专业=”数学” or 专业=”英语”
(5)查询“学生.dbf”表中的入学成绩在550到650之间的学生的学号,姓名和入学成绩,并按“入学成绩”的降序排序;
select 学号,姓名,入学成绩from 学生where 入学成绩>=550 and 入学成绩<=650 order by 入学成绩
(6)利用学生表中的数据创建一个查询,其结果包含学号、姓名、性别、出生日期、专业和入学成绩6个字段,查询结果按入学成绩由高分到低分排序,并将查询结果保存到一个“学生情况表.DBF”文件中;
select 学号,姓名,性别,出生日期,专业,入学成绩from 学生order by 入学成绩desc into table 学生情况表
【思考题】
请参考教材6.4.3 嵌套查询、6.4.4 多表联接查询、6.4.5查询结果输出处理做如下练习。

写出相应的SQL命令并上机运行。

(1)查询“学生.dbf”和“学生其它情况.dbf”表中的所有姓“李”的学生的学号、姓名和身份证;
(2)查询“成绩.dbf”和“课程.dbf”表中的选修“计算机基础”的所有学生的学号和成绩,按“学号”的升序进行排序,并输出到TEST文件中;
(3)查询“学生.dbf”、“成绩.dbf”和“课程.dbf”表中的选修“电脑文秘应用”的所有学生的学号,姓名,课名和总评(总评=(平时+期中+期末)/3);。

相关文档
最新文档