第六章 VFP关系数据库标准语言SQL
- 格式:doc
- 大小:55.50 KB
- 文档页数:14
关系数据库标准语言S Q L1、SQL是结构化的查询语言,是一种高度非过程化的语言。
查询是其核心。
注意:数据定义一般是对数据表操作,数据操纵一般是对表中的记录进行操作2、查询功能格式:SELE字段名……&&说明要查询的数据FROM数据表名(有联系的多个数据表名,有公共域)&&数据来源哪些表ON 联接的字段名WHERE连接条件……AND 条件……&&说明查询条件GROUP BY 分组(字段名)HAVING 分组条件&&查询结果分组ORDER BY 排序字段&&查询结果排序成绩管理数据库有以下三个数据库表:学生(学号C,姓名C,性别C,年龄N,系C……)选课(学号C,课程号C,成绩N……)课程(课程号C,课程名C……)1基于单个数据表,SELE…FROM …WHERE…(类似VF命令LIST FOR 条件)SELE 后面接要查询输出的字段名,多个用逗号分隔,全部可以用* FROM 后面是查询的数据表(单个数据表)WHERE 后面跟查询条件教材P130SELE 工资FROM 职工(从职工表中查询所有职工的“工资”字段值)SELE * FROM 职工(从职工表中查询所有职工的元组,*表示所有属性)SELE * FROM 职工WHERE 工资>1230(从职工表中查询工资大于1230的元组)注意:1、WHERE 后面的条件可以是任意复杂的条件表达式2、DISTINCT 短语消除结果中重复值(注意)列:查询成绩大于等于60分的学生的学号、课程号、成绩(学号,课程号,成绩都在选课表中)SELE 学号,课程号,成绩FROM 选课WHERE 成绩>=60相当于VF命令:LIST FIELDS 学号,课程号,成绩FOR 成绩>=60查询有考试成绩的学生的学号SELE DIST 学号FROM 选课(DIST 去掉重复)列:在学生表中查询2系年龄小于25的女同学的学号,姓名在学生表中查询2系或6系年龄小于25的男同学的学号,姓名分析条件:性别='女' AND 年龄<25 AND (系='6' OR 系='2')等于条件:性别='男' AND 年龄<25 AND 系='6' OR性别='男' AND 年龄<25 AND 系='2'-----------------------------------------------------------------------2)基于多个数据表(两个或三个),这些数据表肯定有联系(有公用字段),而且查询输出的字段可能在几个(两个或以上有联系)数据表中。
VFP复习题及答案考试题型判断10(10道)选择20(10道)填空10(5空)简答20(5道)程序分析12(3道)编程7(1道)SQL语言21(6道)教材目录1、Visual FoxPro基础2、Visual FoxPro编程基础3、Visual FoxPro编程工具与编程步骤4、赋值与输入/输出5、选择结构程序设计6、循环结构程序设计7、数组8、自定义属性与自定义方法9、表单集与多重表单10、菜单与工具栏11、数据表12、数据库和多表操作13、查询与视图14、关系数据库标准语言SQL15、报表第一章一、数据库的基本概念1、数据、数据处理、数据模型(层次模型、网状模型、关系模型)、实体之间的关系(一对一,一对多,多对多)关系=二维表,关系中的术语:字段(属性)、记录(元组)、域、主关键字(候选关键字)、外部关键字2、数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)、数据库应用系统(DBAS)的关系;3、Visual FoxPro是一个32位的使用关系模型的数据库管理系统。
二、Visual FoxPro的概述VFP的发展;VFP的窗口介绍:启动、退出、界面(标题栏、菜单栏、状态栏、主窗口、工具栏、命令窗口)VFP的系统环境设置:“工具”-“选项”,文件默认位置、区域、表单、数据VFP的工作方式:交互式(菜单、命令)和程序方式VFP提供的工具:向导、设计器、生成器三、命令的书写规则1每—命令必须以命令动词开头;2命令动词后面的命令短语可按任意顺序排列,短语之间用空格分隔,空格数任意;3命令一行书写不下时,可以换行,并在分行处加上分号“;”;所有符号都是英文状态下的半角符号;4每行只能书写一条命令;5所有命令和函数均可只写前4个字符,且不分大小写;6—行命令结束后,用Enter键确认并执行,可重复执行。
第二章一、语言基础1、数据类型(13种):类型名称,简写,字节长度;哪些是基本类型,哪些用于表;2、常量与变量:6种基本类型的常量表示变量如何命名和赋值3、表达式与运算符:6种类型的表达式以及运算符4、函数:常用函数的参数、返回值类型1、数据类型13种基本数据类型:可用于字段变量,常量、内存变量、表达式的类型,有:字符型(C,注意英文1位和中文2位,最长254)数值型(N,注意小数点和正负号,最长20)、货币型(Y,注意小数位只有4位,定长8)、日期型(D,定长8位)日期时间型(T,定长8位)逻辑型(L,定长1位)1、数据类型13种其余用于表的数据类型有:浮点型(F,20)、双精度型(B,8)、整型(I,4)、备注型(M,4)、通用型(G,4):备注文件(.fpt)二进制字符型C、二进制备注型M1,常量字符型:“”,‘’,[]数值型:e,-,+,.货币型:$日期型:{^ },连字符可以是/ -,用set mark to改日期时间型:{^ :a|p} ,日期顺序set date to逻辑型: .T.2、变量值可能会发生变化的量,变量是内存中的一个存储单元的位置变量的类型:分为字段变量、内存变量、数组变量和系统变量4种命名规则由数字、字母、汉字、下划线组成只能以字母或下划线开头,不可以包含空格长度1~128字符(自由表的字段名、表的索引标识名长度最多为10个字符)避免使用VFP的保留字2、变量变量的赋值格式1:变量名=<表达式>格式2:store <表达式> to 变量名1,变量名2,…格式3:INPUT “提示” TO <变量名>内存变量的作用范围LOCAL 指定的变量为局部变量PRIVA TE 私有变量PUBLIC 全局变量3数组变量数组:一组内存变量的集合Vfp只能定义一维数组和二维数组声明方式:Public、Local 、{declare/dimension}<数组名>(行数[,列数])例:dime a(4),b(2,3) 特点1)数组各个元素的默认值为.F.2)下标计数从1开始,每个元素可以不是同一类型。
一、选择题1、下面有关HAVING子句描述错误的是A) HAVING子句必须与GROUP BY子句同时使用,不能单独使用B) 使用HAVING子句的同时不能使用WHERE子句C) 使用HAVING子句的同时可以使用WHERE子句D) 使用HAVING子句的作用是限定分组的条件2、(15)~(27) 使用的数据如下:当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:(15) 执行如下SQL语句后SELECT*FROM stock INTO DBF stock ORDER BY 单价A) 系统会提示出错信息B) 会生成一个按“单价”升序排序的表文件,将原来的stock.dbf文件覆盖C) 会生成一个按“单价”降序排序的表文件,将原来的stock.dbf文件覆盖D) 不会生成排序文件,只在屏幕上显示一个按“单价”升序排序的结果(16) 执行下列程序段以后,内存变量a的内容是CLOSE DATABASEa=0USE stockGO TOPDO WHILE.NOT.FOF()IF 单价>10a=a+1ENDIFSKIPENDDOA) 1 B) 3 C)5 D) 7(17) 有如下SQL SELECT语句SELECT*FROM stock WHERE单价BETWEEN 12.76 AND 15.20与该语句等价的是A) SELECT*FROM stock WHERE 单价<=15.20.AND.单价>=12.76B) SELECT*FROM stock WHERE 单价<15.20.AND.单价>12.76C) SELECT*FROM stock WHERE 单价>=15.20.AND.单价<=12.76D) SELECT*FROM stock WHERE 单价>15.20.AND.单价<12.76(18) 如果在建立数据库表stock.dbf时,将单价字段的字段有效性规则设为“单价>0”,通过该设置,能保证数据的A) 实体完整性 B) 域完整性 C) 参照完整性 D) 表完整性(19) 在当前盘当前目录下删除表stock的命令是A) DROP stock B) DELETE TABLE stockC) DROP TABLE stock D) DELETE stock(20) 有如下SQL语句SELECT max(单价) INTO ARRAY a FROM stock执行该语句后A) a[1]的内容为15.20 B) a[1]的内容为6B) a[0]的内容为15.20 C) a[0]的内容为6(21) 有如下SQL语句SELECT 股票代码,avg(单价) as 均价 FROM stock;GROUP BY 交易所 INTO DBF temp执行该语句后temp表中第二条记录的“均价”字段的内容是A) 7.48 B) 9.99 C)11.73 D) 15.20(22) 将stock表的股票名称字段的宽度由8改为10,应使用SQL语句A) ALTER TABLE stock股票名称 WITH c(10)B) ALTER TABLE stock股票名称 c(10)C) ALTER TABLE stock ALTER股票名称 c(10)D) ALTER stock ALTER 股票名称 c(10)(23) 有如下SQL语句CREATE VIEW stock_view AS SELECT*FROM stock WHERE 交易所=“深圳”执行该语句后产生的视图包含的记录个数是A) 1 B) 2 C)3 D) 4(24) 有如下SQL语句CREATE VIEW view_stock AS SELECT 股票名称AS名称,单价FROM stock 执行该语句后产生的视图含有的字段名是A) 股票名称、单价 B) 名称、单价C) 名称、单价、交易所 D) 股票名称、单价、交易所(25) 下面有关对视图的描述正确的是A) 可以使用MODIFY STRUCTURE命令修改视图的结构B) 视图不能删除,否则影响原来的数据文件C) 视图是对表的复制产生的D) 使用SQL对视图进行查询时必须事先打开该视图所在的数据库(26) 执行如下SQL语句后SELECT DISTINCT 单价 FROM stock;WHERE 单价=( SELECT min(单价)FROM stock) INTO DBF stock_x表stock_x中的记录个数是A) 1 B) 2 C)3 D) 4(27) 求每个交易所的平均单价的SQL语句是A) SELECT 交易所,avg(单价)FROM stock GROUP BY 单价B) SELECT 交易所,avg(单价)FROM stock ORDER BY 单价C) SELECT 交易所,avg(单价)FROM stock ORDER BY 交易所D) SELECT 交易所,avg(单价)FROM stock GROUP BY 交易所3、下列关于查询的说法中,不正确的是A)查询是预先定义好的一个SQL SELECT语句B)查询是Visual FoxPro支持的一种数据库对象C)通过查询设计器,可完成任何查询D)查询是从指定的表或视图中提取满足条件的记录,可将结果定向输出4、Visual FoxPro在SQL方面,不提供的功能是A)数据查询B)数据定义C)数据操纵D)数据控制5、检索职工表中工资大于800元的职工号,正确的命令是A)SELECT 职工号WHERE 工资>800B)SELECT 职工号FROM 职工SET 工资>800C)SELECT 职工号FROM 职工 WHERE 工资>800D)SELECT 职工号FROM 职工 FOR 工资>8006、找出在仓库面积大于500的仓库中工作的职工号,以及这些职工工作所在的城市,正确的命令是A)SELECT 职工号,城市 FROM职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)B)SELECT 职工号,城市 FROM职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)C)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)D)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)7、利用SQL语句,检索仓库中至少有一名职工的仓库信息,正确的命令是A) SELECT * FROM 仓库表 WHERE IN;(SELECT 仓库号 FROM 职工表)B) SELECT * FROM 仓库表 WHERE NOT IN;(SELECT 仓库号 FROM 职工表)C) SELECT * FROM仓库表WHERE 仓库号 EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)D) SELECT * FROM 仓库表 WHERE EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)8、第(32)~(35)题使用如下的设备表。
第六章VFP关系数据库标准语言SQL 大纲要求关系数据库标准语言SQL1、SQL的数据定义功能:(1)CREATE TABLE–SQL(2)ALTER TABLE–SQL2、SQL的数据修改功能:(1)DELETE–SQL(2)INSERT–SQL(3)UPDATE–SQL3、SQL的数据查询功能:(1)简单查询。
(2)嵌套查询。
(3)连接查询。
内连接外连接:左连接、右连接、完全连接(4)分组与计算查询。
(5)集合的并运算。
知识要点一、SQL语言的特点1.综合统一SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。
2.高度非过程化3.语言简洁,易学易用4.以同一种语法结构提供两种使用方式既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
二、SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构。
其中外模式对应于视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件。
基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。
一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。
存储文件的逻辑结构组成了关系型数据库的内模式。
而存储文件的物理文件结构是任意的。
视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。
三.数据定义数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。
由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DR OP)和修改(ALTER)。
1.定义(创建)表【格式】:CREATE TABLE<表名>(<字段名1><数据类型>;[(<宽度>[,<小数位数>])][完整性约束];[NULL|NOT NULL][,<字段名2>…])【功能】定义(也称创建)一个表。
【例1】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C,2)。
CREATE TABLE SC(学号C(10),课程号C(2))LIST STRUCTURE【例2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期(D);是否团员(L);备注(M);照片(G)。
CREATE TABLE STUD(学号C(10),姓名C(10),性别C(2),班级名C(10),系别代号C(2),地址C(50),出生日期D,是否团员L,备注M,照片G)LIST STRUCTURE2.修改表【格式】ALTER TABLE<表名>[ADD<新字段名><数据类型>[(<宽度>[,<小数位数>])][完整性约束][NULL|NOT NULL]][DROP[完整性约束]][MODIFY<字段名><数据类型>] 【功能】修改表结构。
【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件; DROP子句用于删除指定的的完整性约束条件;MODIFY子句用于修改原有的字段变量的值。
【例】在课程成绩表SC中,增加一个成绩字段变量(N,3)。
ALTER TABLE SC ADD成绩N(3)LIST STRUCTURE3.删除数据库【格式】DROP DATABASE<数据库名>【功能】删除指定数据库的结构和数据。
【说明】谨慎使用。
4.删除表【格式】DROP TALBE<表名>【功能】删除指定表的结构和内容(包括在此表上建立的索引)。
【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句例题:(1)SQL是______语言。
A.结构化查询B.数据定义C.数据操作D.数据控制【解析】本题考查的知识点是SQL语言的基础知识。
在Visual FoxPro中,SQL是结构化查询语言。
选项B,C,D说法错误,在Visual FoxPro中有数据定义语言、数据操作语言、数据控制语言。
【答案】A(2)SQL除了具有数据查询的功能外,还有_____。
A.数据定义B.数据操纵C.数据控制D.以上答案均正确【解析】本题考查的知识点是SQL语言的作用。
在VisualFoxPro中,SQL的功能有四个:数据查询、数据定义、数据操纵、数据控制。
因此正确答案为D。
【答案】D(3)下列选项中,不属于数据定义功能的SQL语句是__________。
A.CREATEB.ALTERC.SELECTD.DROP【解析】本题考查的知识点是SQL命令动词的作用。
选项A用来创建表;选项B用来修改表结构;选项C用来查询;选项D用来删除表文件。
在Visual FoxPro中,选项A,B,D都具有数据定义功能,只有选项C具有数据查询的功能。
【答案】C(4)SQL的核心是__________。
A.数据查询B.数据定义C.数据操纵D.数据控制【解析】本题考查的知识点是SQL的核心。
SQL作为结构化查询语言,其核心是查询。
因此正确答案为A。
【答案】A(5)SQL同其他数据操作语言不同,其关键在于_____。
A.SQL是一种过程性语言B.SQL是一种非过程性语言C.SQL语言简练D.SQL的词汇有限【解析】本题考查的知识点是SQL不同于其他语言的关键。
SQL同其他数据操作语言不同的关键是SQL是一种非过程性语言。
通过这一功能用户只需说明做什么,而不用说明怎么做,不用了解数据存储的格式及SQL命令的内部执行过程,就可以方便地对数据库进行操作。
选项A的说法错误,选项C和D是SQL语言的特点,但不是SQL语言同其他数据操作语言不同的关键。
【答案】B(6)建立表结构的SQL命令是____。
A.ALTER TABLEB.DROP TABLEC.CREAT TABLED.CREAT INDEX【解析】本题考查的知识点是建立表结构的SQL命令。
建立表结构的SQL命令是CR EAT TABLE。
ALTER TABLE命令的作用是修改表结构;DROP TABLE命令的作用是删除表;CREAT INDEX命令的作用是建立索引。
【答案】C(7)SQL可以_____使用,也可以_____使用。
【解析】本题考查的知识点是SQL语言的使用方式。
SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
【答案】直接以命令方式交互,嵌入到程序设计语言中以程序方式(8)在ALTER TABLE中,_____用来添加新字段;_____修改已有字段。
【解析】本题考查的知识点是ALTER TABLE命令及各子项的作用。
在ALTER TAB LE命令中,ADD用来添加新字段;ALTER用来修改已有字段。
【答案】ADD ALTER四、数据操纵数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DM L:●数据查询:寻找所需的具体数据。
●数据修改:添加、删除和改变数据。
数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查询)等组成,由于SELECT比较特殊,所以一般又将它以查询语言单独出现。
1.插入记录【格式1】INSERT INTO<表名>[<字段名表>]VALUES(<表达式表>)【格式2】INSERT INTO<表名>FROM ARRAY<数组名>|FROM MEMVAR【功能】在指定的表文件尾部追加一条记录。
格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。
格式2用数组或内存变量的值赋值给表文件中各字段。
【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。
<字段名表>:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。
<表达式表>:指定要追加的记录各个字段的值。
【例1】在表文件STUD的末尾追加三条记录。
***用表达式方式追加第一条记录***INSERT INTO STUD(学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员); VALUES("011110","李中国","男","计0121","01","湖北武汉",{^2005/01/06},.T.)***用数组方式追加第二条记录***DIMENSION TA[8]TA(1)="011103"TA(2)="李宁"TA(3)="女"TA(4)="电0134"TA(5)="02"TA(6)="长沙希赛教育"TA(7)={^2005/01/15}TA(8)=.T.INSERT INTO STUD FROM ARRAY TA***用内存变量方式追加第三条记录***学号="011202"姓名="赵娜"性别="女"班级名="英0112"系别代号="03"地址="广西南宁"出生日期={^2002/12/14}是否团员=.F.INSERT INTO STUD FROM MEMVARLIST2.更新记录命令【格式】UPDATE<表文件名>SET<字段名1>=<表达式>[,<字段名2>=<表达式>…][WHERE<条件>]【功能】更新指定表文件中满足WHERE条件子句的数据。
其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。
【说明】更新操作又称为修改操作。
【例】将成绩表(SC)中,所有课程号为02的成绩各加5分。
UPDATE SC SET成绩=成绩+5 WHERE课程号="k321"3.删除记录【格式】DELETE FROM<表名>WHERE<表达式>【功能】从指定的表中删除满足WHERE子句条件的所有记录。