1第1章数据库理论基础1.数据库概念:数据库(DB)、数据库管理系统(DBMS)、数据库系统(DBS)。数据库系统包括啊数据库和数据库管理系统。数据库系统中对数据库进行管理的核心软件是数据库管理系统。2.实体间的联系:一对一联系(1:1)、一对多联系(1:n)、多对一联系(n:1)和多对多联系(m:n)。例如,如果一个班只有一个班长,而且一个班长不能同时担任其它班的班长,班级和班长两个实体之间的联系是一对一。公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,职员与部门两个实体之间的联系是多对以;部门与职员两个实体之间的联系是一对多。在奥运会游泳比赛中,一个游泳运动员可以参加多项比赛,一个游泳比赛项目可以有多个运动员参加,游泳运动员与游泳比赛项目两个实体之间的联系是多对多联系。例如,在超市营业过程中,每个时段要安排一个班组上岗值班,每个收款口要配备两名收款员配合工作,共同使用一套收款设备为顾客服务,在超市数据库中,实体之间属于一对一关系的是D。A.顾客与收款口的关系B.收款口与收款员的关系C.班组与收款口的关系D.收款口与设备的关系例如,为了把多对多的联系分解成两个一对多联系所建立的“纽带表”中,应该包含两个表的关键字。3.数据模型:层次模型(树状结构)、网状模型和关系模型(用二维表结构来表示实体以及实体之间联系的模型)。VFP支持的数据模型是关系模型。例如,最常用的一种基本数据模型是关系模型,它的表示应采用二维表。4.关系数据系统的概念:数据表(也即是关系)、记录(元组)、字段、字段类型、域、关键字(可以唯一地确定一条记录的一个字段或多个字段的组合,不允许有重复值或空值)、外部关键字。例如,在VFP中,关系数据库管理系统所管理的关系是B。A.一个DBF文件B.若干个二维表C.一个DBC文件D.若干个DBC文件例如,设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为C。A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩例如,在关系模型中,每个关系模式中的关键字C。A.可由多个任意属性组成B.最多由一个属性组成C.可由一个或多个其值能唯一标识关系中任何元组的属性组成D.以上说法都不对5.关系的特点①关系必须规范化(关系的每个分量必须是一个不可分割的数据项,也就是说,不允许表中包含表)。②同一关系中不能出现相同的字段名(列),也不允许有完全相同的记录(行)。③在一个关系中记录的次序和字段的次序都无关紧要。6.关系的运算①选择:从数据表中找出满足给定条件的记录(元组)的操作称为选择。选择运算是对数据表从行的方向上进行的运算,往往是通过条件短语FOR/WHILE(VFP命令中)、WHERE(SQL中)实现。②投影:从数据表中指定若干字段组成新的数据表的操作称为投影。投影运算是对数据表从列的方向上进行的运算,往往是通过短语FIELDS(VFP命令中)、SELECT(SQL中)实现。③联接:联接运算将两个数据表拼接成一个新的数据表,生成的新数据表中包含满足连接条件的记录。自然联接是去掉重复属性的等值联接。例如,从表中选择字段形成新关系的操作是投影。例如,从表中选择满足条件的记录形成新关系的操作是选择。例如,学生表中有学号、姓名和年龄三个字段,SQL语句“SELECT学号FROM学生”完成的操2作称为C,SQL语句“SELECT*FROM学生WHERE年龄=20”完成的操作称为A。例如,下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是B,操作对象只能是一个表的关系运算是A、C。A.选择B.联接C.投影D.并第2章VFP环境简介及常用操作命令1.常用文件扩展名及其关联的文件类型常用文件扩展名及其关联的文件类型扩展名文件类型扩展名文件类型.APPVisualFoxPro应用程序.QPR查询文件.EXE可执行应用程序.PRG源程序文件.PJX项目文件.FXP源程序编译后的文件.DBF数据表文件.VCX可视类库文件.FPT数据表备注文件.SCX表单文件.IDX数据表独立索引文件.MNX菜单文件.CDX数据表复合索引文件.MPR生成的菜单源程序文件.DBC数据库文件.FRX报表文件说明:视图不是一个文件,它没有扩展名。视图保存在当前打开的数据库中。2.VisualFoxPro可视化工具(向导、设计器、生成器)向导:通过一系列的对话框向用户提示每一个操作步骤,引导用户—步步完成各项任务。设计器:创建和修改各种组件的可视化工具。如表设计器、数据库设计器、查询设计器等。生成器:带有多个选项卡的对话框,用来创建、生成或修改某种控件。如选项卡生成器。例如,在VFP中修改数据库、表单、报表等对象的可视化工具是B。A.向导B.设计器C.生成器D.项目管理器3.条件短语1)在VFP命令中使用的条件短语:FOR和WHILE。①FOR条件:在指定范围内(缺省范围为ALL),逐条检查记录,符合条件的记录执行命令,不符合条件的跳过去。在命令如果使用了FOR条件短语,不管该命令的缺省范围是什么,只要省略了缺省范围,则该命令的操作范围为ALL。②WHILE条件:在指定记录范围内(缺省范围为REST),逐条检查,符合条件的记录执行命令。当遇到第一个不满足条件的记录,停止命令的执行。在命令如果使用了WHILE条件短语,不管该命令的缺省范围是什么,只要省略了缺省范围,则该命令的操作范围为REST。另外,还有两个范围短语:NEXTN和RECORDN。2)在SQL中使用的条件短语:WHERE、ON和HAVING。①WHERE条件:即可用于非超联接查询时多表间的联接条件,也可用于多表查询(既可是非超联接查询,也可是超联接查询)中设置记录满足的条件。②ON条件:对多表进行超联接查询时,用于设置多表间的联接条件(此时不能用WHERE)。③HAVING条件:HAVING必须跟随GROUPBY之后使用,用于限定分组必须满足的条件。说明:WHERE子句作用于记录,而HAVING子句作用分组,可以使用WHERE子句的同时使用HAVING子句(但必须在GROUPBY分组子句之后使用)。4.常用操作命令Listfor性别=男1、3、4、6、8Listwhile性别=男3、434.1.1VFP命令建立数据表:CREATE数据表文件名&&打开表设计器创建表结构说明:1)在VFP的表文件中,日期型占8个字节,逻辑型占1个字节,备注型和通用型占4个字节。每条记录的总宽度比用户定义的各个字段宽度之和多1个字节,该字节用于存放删除标记。自由表字段名最长为10个字符,数据库表字段名最长为128个字符。2)空值(.NULL.):空值不同于空字符串()、空格字符串()、数值0,空值(.NULL.)就是不确定的值。3)如EMP表中有备注型或通用型字段(不管有多少个),在创建EMP表时,系统会自动创建与所属数据表的表名相同,扩展名为fpt的1个数据表备注文件。表备注文件名为EMP.FPT。例如,在一个VFP数据表文件中有2个通用字段和3个备注字段,该数据表的备注文件数目是1。4.1.2SQL建立数据表:CREATETABLE表名;(字段1字段类型[(字段宽度[,小数位数])];[PRIMARYKEY][CHECK表达式[ERROR录入错误提示信息]];[DEFAULT表达式],;字段名2……)常用数据类型说明字段类型对应字符及表示方法字段类型对应字符及表示方法字段类型对应字符及表示方法字符型C(n)数值型N(n,[m])逻辑型L日期型D整型I注意:对自由表不能实现其完整性、有效性规则等信息的设置。例如,教师表中有职工号、姓名和工龄字段,其中职工号为主关键字,建立教师表的SQL命令是D。A.CREATETABLE教师表(职工号C(10)PRIMARY,姓名C(20),工龄I)B.CREATETABLE教师表(职工号C(10)POREING,姓名C(20),工龄I)C.CREATETABLE教师表(职工号C(10)POREINGKEY,姓名C(20),工龄I)D.CREATETABLE教师表(职工号C(10)PRIMARYKEY,姓名C(20),工龄I)例如,在VFP中,使用SQL的CREATETABLE语句建立数据库表时,使用PRIMARYKEY子句说明主索引,使用CHECK子句说明有效性规则(域完整性规则或字段取值范围)。4.2.1VFP命令修改表结构:MODIFYSTRUCTURE&&打开表设计器修改功能:修改数据表的结构,包括增加/删除字段,修改已有的字段(字段名、字段类型、宽度、有效性规则等),不能修改表中的数据。4.2.2SQL修改表结构:ALTERTABLE表名格式1:ALTERTABLE表名ADD字段……&&同定义表结构一样ALTERTABLE表名ADDPRIMARYKEY|UNIQUE索引表达式TAG索引标识]功能:修改数据表的结构,为表增加字段或和添加主索引或候选索引。例如,为学生.dbf增加年龄字段(整型,即不带小数位);为成绩.dbf增加成绩字段并设置有效性。ALTERTABLE学生ADD年龄IALTERTABLE成绩ADD成绩N(6,2)CHECK成绩=0AND成绩=100例如,将学生表中的学号定义为主索引,索引名为xh。学号和姓名定义为候选索引,索引名xhxm。定义主索引:ALTERTABLE学生ADDPRIMARYKEY学号TAGxh定义候选索引:ALTERTABLE学生ADDUNIQUE学号+姓名TAGxhxm格式2:ALTERTABLE表名ALTER字段字段类型[(字段宽度[,小数位数])]ALTERTABLE表名ALTER字段SETCHECK有效规则[ERROR错误提示信息]ALTERTABLE表名ALTER字段[SETDEFAULT默认值]ALTERTABLE表名ALTER字段DROPCHECK|DROPDEFAULTALTERTABLE表名DROPPRIMARYKEY|DROPUNIQUETAG索引标识|DROP字段名4功能:修改数据表的结构,为其修改已有字段的类型、宽度;有效性规则(包括错误提示信息)、默认值;删除有效性规则和默认值;删除主索引、候选索引和字段。例如,ALTERTABLE学生ALTER学号C(8)&&将学生表中学号字段修改为字符型(8)例如,ALTERTABLE成绩ALTER成绩SETCHECK成绩=0AND成绩=100例如,为成绩表中定义的成绩字段的默认值改为0,正确的命令是A。A.ALTERTABLE成绩ALTER成绩SETDEFAULT0B.ALTERTABLE成绩ALTER成绩DEFAULT0C.ALTERTABLE成绩ALTER成绩SETDEFAULT成绩=0D.ALTERTABLE成绩ALTER成绩DEFAULT成绩=0注意:在定义表结构或为表增加字段时,设置有效性规则和默认值用CHECK和DEFAULT;为表中已存在的字段增加/修改有效性规则和默认值时SETCHECK和SETDEFAULT。例如,ALTERTABLE成绩ALTERCOLUMN成绩DROPCHECK&&删除成绩表中成绩字段的有效性规则例如,ALTERTABLE成绩ALTERCOLUMN成绩DROPDEFAULT&&删除成绩表中成绩字段的默认值例如,将学生表的主索引和候选索引xhxm删除。删除主索引:ALTERTABLE学生DROPPRIMARYKEY;删除候选索引:ALTERTABLE学生DROPUNIQUETAGxhxm。例如,将学生表中的年龄字段删除,正确的SQL命令是ALTERTABLE学生DROP年龄。格式3:ALTERTABLE表名RENAME[COLUMN]原字段名TO新字段名功能:修改数据表的结构,对指定的字段改名。