程序设计 课件第5章.ppt
基本要求与基本知识点基本要求与基本知识点(1)掌掌握握SQL的的数数据据查查询询功功能能,包包括括简简单单查询、关联查询及超联结查询、关联查询及超联结(2)掌握)掌握SQL的数据操作功能的数据操作功能(3)掌握)掌握SQL的数据定义功能的数据定义功能第第5章章关系数据库标准语言关系数据库标准语言SQL(1)SQL的数据查询功能的数据查询功能(2)SQL的数据操作功能的数据操作功能(3)SQL的数据定义功能的数据定义功能教学重点与难点教学重点与难点SQL是结构化查询语言是结构化查询语言StructuredQueryLanguage的缩写,的缩写,SQL包括数据定义、数据查询、包括数据定义、数据查询、数据操纵和数据控制等功能,其中查询是数据操纵和数据控制等功能,其中查询是SQL的主的主体,体,SQL已作为关系数据库管理系统的标准化语言。已作为关系数据库管理系统的标准化语言。本章主要讲述本章主要讲述SQL的数据定义、数据查询、数据操的数据定义、数据查询、数据操纵等功能。纵等功能。5.1SQL概述概述SQL的定义功能可以定义数据库、表、试图、存储过程、的定义功能可以定义数据库、表、试图、存储过程、索引等,索引等,VFP主要支持表和视图的定义。主要支持表和视图的定义。1、表的定义、表的定义CREATETABLE|DBF表名表名FREE(字段名字段名1字段类型字段类型(宽度宽度,小数点位,小数点位)NULL|NOTNULLCHECKERROR出错信息出错信息DEFAULT表达式表达式PRIMARYKEY|UNIQUE(侯选索引侯选索引),字段名,字段名25.2数据定义数据定义【功能】定义(创建)一个表。【说明】用CREATETABLE命令可以完成第3章介绍的“表设计器”的所有操作,各选项作用如下:(1)TABLE与DBF等价,都是建立表文件;指定新建表的名称。(2)FREE:指定建立自由表,即新建立的表不添加到打开的数据库中。(3)(,):指定字段名、字段的数据类型、字段宽度及小数位数。字段类型可以用类型字符表示,例如字符型用C,数值型用N表示。(4)NULL|NOTNULL:指定该字段值可以为空或不能为空,默认值是NOTNULL。(5)CHECK:指定该字段的合法值以及该字段值的约束条件;ERROR:指定在浏览或编辑窗口中为该字段输入的值不符合CHECK子句的条件时显示的提示信息。(6)DEFAULT:为该字段指定一个默认值,表达式的数据类型与该字段的数据类型要一致。每添加一条记录时,该字段自动取该默认值。(7)KEY:为该字段创建一个主索引,索引标识名与字段名相同。主索引字段值必须惟一;UNIQUE:为该字段创建一个候选索引,索引标识名与字段名相同。例例1:建立成绩表:建立成绩表Createtable成绩表成绩表(XhC(7),khC(2),cjN(5,1))例例2:建立一个学生数据库,并建立属于学生数据库的:建立一个学生数据库,并建立属于学生数据库的学生表和成绩表学生表和成绩表CreatedatabasestudentCreatetable学生表学生表(xhc(7)primarykey,xmc(8),xbc(2)default“男男”,bjc(20)default“2002级会计级会计1班班”,zfn(5,1)check(zf=0andzf=500)Error”总分的值超界总分的值超界”)例例2:用用SQL语句创建学生基本信息表语句创建学生基本信息表stud1,stud1表由学号、姓名、性别、班级、出生日期、表由学号、姓名、性别、班级、出生日期、是否团员、特长、照片组成。要求以学号为主索是否团员、特长、照片组成。要求以学号为主索引,姓名不允许有空值。引,姓名不允许有空值。(为区别于第为区别于第3章所创建章所创建的的stud表,此处使用表名表,此处使用表名stud1。)创建表之后,创建表之后,显示表的结构显示表的结构。CREATETABLEstud1(学号学号C(9)PRIMARYKEY,姓名姓名C(8)NOTNULL,性别性别C(2),班级班级C(14),出生日期出生日期D,是否团员是否团员L,特长特长M,照片照片G)LISTSTRU注意:注意:创建表后,新创建的表即成为当前数据创建表后,新创建的表即成为当前数据表,可以在命令窗口中输入命令:表,可以在命令窗口中输入命令:APPENDFROM把已经存在的表中的数据追加到新建表中。但把已经存在的表中的数据追加到新建表中。但要求两个表的结构要完全一致。要求两个表的结构要完全一致。Creatablesc1(学号学号C(9),课程号课程号C(3),成绩成绩N(6,2)Appenfromsc格式格式1:ALTERTABLEADD|ALTERCOLUMN(,)NULL|NOTNULLCHECK ERRORDEFAULTPRIMARY KEY|UNIQUE该格式主要是用于该格式主要是用于添加新的字段或修改添加新的字段或修改已有字已有字段的类型、宽度、有效性规则、错误信息、缺省段的类型、宽度、有效性规则、错误信息、缺省值、主关键字和联系等,但不能修改字段名、删值、主关键字和联系等,但不能修改字段名、删除字段、删除已经定义的有效性规则。除字段、删除已经定义的有效性规则。例如:例如:Altertablenew2addkmc(12)2、表结构的修改、表结构的修改例例1.在在stud1表表中中增增加加“籍籍贯贯”字字段段,字字段段类类型型为为字字符符型,长度为型,长度为10。ALTERTABLEstud1ADD籍贯籍贯C(10)例例2.将将stud1表表的的“籍籍贯贯”字字段段宽宽度度修修改改为为14,设设置置合合法值的左面法值的左面6个字符为个字符为“北京市北京市”或或“上海市上海市”。ALTERTABLEstud1ALTER籍贯籍贯C(14);CHECKLEFT(籍籍贯贯,6)=北北京京市市.OR.LEFT(籍籍贯贯,6)=上海市上海市【注注意意】执执行行命命令令前前需需要要将将stud1表表中中所所有有记记录录的的“籍籍贯贯”字字段段开开头头三三个个汉汉字字设设置置为为北北京京市市或或上上海海市市,以以满满足足CHECK规则。规则。2、表结构的修改、表结构的修改格式格式2:ALTERTABLE表名表名ALTERCOLUMN字段名字段名NULL|NOTNULLSETCHECK表达式表达式ERROR出错信息出错信息SETDEFAULT表达式表达式DROPDAFAULTDROPCHECK【功能】修改指定表中指定字段的DEFAULT和CHECK约束规则,不影响原有表中的数据。【说明】:指明被修改表的表名。ALTERCOLUMN:指明要修改列的字段名。NULL|NOTNULL:指定该字段可以为空或不能为空。SETDEFAULT:重新设置该字段的默认值。SETCHECKERROR:重新设置该字段的合法值限定,要求该字段的原有数据满足合法值限定条件。DROPDEFAULT:删除默认值。DROPCHECK:删除该字段的合法值限定。例 删除stud1表中“籍贯”字段的合法值约束,然后设置字段中左面6个字符的默认值为“山东省”。ALTERTABLEstud1ALTER籍贯DROPCHECKALTER TABLE stud1 ALTER籍贯SET DEFALUT LEFT(籍贯,6)=“山东省”例:altertablenew1alterzf;setcheck(zf=0andzf=500);error“总分值应在0500之间”;setdafault0格式3:ALTERTABLEDROPCOLUMNRENAMECOLUMNTOSETCHECKERRORDROPCHECKADDPRIMARYKEYTAGFORDROPPRIMARYKEYADDUNIQUETAGFORDROPUNIQUETAG【功能】删除指定表中的指定字段,修改字段名,修改指定表的完整性规则,包括添加或删除索引及表的合法值限定。【说明】DROP COLUMN:从指定表中删除指定的字段。SETCHECKERROR:为该表指定合法值限定及错误提示信息。DROPCHECK:删除该表的合法值限定。ADDPRIMARYKEYTAG:为该表建立主索引,一个表只能有一个主索引。DROPPRIMARYKEY:删除该表的主索引。ADDUNIQUETAG:为该表建立候选索引,一个表可以有多个候选索引。DROPUNIQUETAG:删除该表的候选索引。修改自由表时,不能使用DEFAULT、PRIMARYKEY等子句或SET子句。例例删除删除stud1表中的表中的“籍贯籍贯”字段,将字段,将“特长特长”字字段名改为段名改为“专长专长”。ALTERTABLEstud1DROP籍贯籍贯RENAMECOLUMN特长特长TO专长专长例如:将例如:将new2表的表的kh字段名改为字段名改为kchaltertablenew2renamekhtokch例如例如:建立一个按照建立一个按照xh+kch进行索引的索引方式进行索引的索引方式Altertablenew2adduniquexh+kchTagxh_kchDROPTABLE将指定的表文件从磁盘上删除,如果是数据库中将指定的表文件从磁盘上删除,如果是数据库中的表文件应将表文件所属的数据库打开,再进行的表文件应将表文件所属的数据库打开,再进行删除,即将数据表文件从磁盘上删除,同时,清删除,即将数据表文件从磁盘上删除,同时,清除表与数据库的关系。除表与数据库的关系。Opendatabasedata1Droptable学生表学生表3、表的删除、表的删除主要完成数据的插入、删除和更新等操作1、插入格式1 INSERTINTOVALUES()功能:在指定的表文件末尾追加一条记录。将表达式表中的值赋给中相应的各字段;5.3数据操纵数据操纵说明:指定表文件中的各个字段,如果省略,按表文件字段的顺序依次赋值。:指定要追加的记录各个字段的值。在INTO子句中没有出现的字段,新记录将取空值(或默认值),但表定义中说明了NOT NULL的字段不能取空值。格式格式2(只适用于(只适用于VFP的特殊格式)的特殊格式)Insertintodbf_namefromarraay数组名数组名|frommemvar从指定的数组中插入记录的值或从同名的内存从指定的数组中插入记录的值或从同名的内存变量来插入记录的值,如果同名的内存变量不变量来插入记录的值,如果同名的内存变量不存在,则相应的字段为默认值或空值存在,则相应的字段为默认值或空值例如:在例如:在new2表中插入一条新记录表中插入一条新记录Declareaa(5)Aa(1)=“1313”,aa(2)=“0005”,aa(3)=82Insertintonew2fromarrayaa用表达式方式追加第用表达式方式追加第1条记录:条记录:INSERTINTOstud1(学学号号,姓姓名名,性性别别,班班级级,出生日期出生日期,是否团员是否团员,籍贯籍贯);VALUES(200621054,刘刘玉玉坤坤,男男,06自自动动化化,1989/04/28,.T.,浙江绍兴浙江绍兴)例如 分别使用3种不同的方法在stud1表的末尾追加3条记录,然后显示数据表的记录。用数组方式追加第用数组方式追加第2条记录:条记录:DIMENSIONDA(9)DA(1)=200605011DA(2)=夏雨薇夏雨薇DA(3)=女女DA(4)=06国际贸易国际贸易DA(5)=1989/09/02DA(6)=.F.DA(9)=湖南长沙湖南长沙INSERTINTOstud1FROMARRAYDA用内存变量方式追加第用内存变量方式追加第3条记录:条记录:学号学号=200626068姓名姓名=柳依依柳依依性别性别=女女班级班级=06社会工作社会工作籍贯籍贯=广西桂林广西桂林出生日期出生日期=1989/02/21是否团员是否团员=.T.INSERT INTO stud1 FROM MEMVARupdate表名表名set字段名字段名1=表达式表达式1,字段名,字段名1=表达式表达式1where功能:更新指定表文件中满足功能:更新指定表文件中满足WHERE条件的记录条件的记录数据。数据。其中其中SET子句用于指定字段和修改的值子句用于指定字段和修改的值WHERE子句用于指定更新的记录,如果省略子句用于指定更新的记录,如果省略WHERE,则更新表中所有记录。则更新表中所有记录。2、更新、更新【例】将【例】将SC1选课表中所有课程号为选课表中所有课程号为02的成绩加的成绩加上上5分,然后再将分,然后再将SC1选课表中所有记录的成绩提选课表中所有记录的成绩提升升10%。UPDATESC1SET成绩成绩=成绩成绩+5;WHERE课程号课程号=02UPDATESC1SET成绩成绩=成绩成绩*(1+0.1)2、更新、更新3、删除删除格式:格式:deletefrom表名表名where该删除为逻辑删除,如需执行物理删除则执行该删除为逻辑删除,如需执行物理删除则执行packDeletefromnew2wherecj60【例】删除例】删除STUD1表中所有表中所有88年出生的记录年出生的记录。DELETEFROMSTUD1;WHERE YEAR(出生日期出生日期)=88完成单表或多表中数据的查询,又称完成单表或多表中数据的查询,又称Select查询查询1.语句格式语句格式Selectdistinct,From表名表名1,asWheregroupby,havingorderbyasc|desc5.4数据查询数据查询功能:功能:根据根据where子句中的条件表达式,从子句中的条件表达式,从指定的表或视图中找出满足条件的元组,按照指定的表或视图中找出满足条件的元组,按照select子句中指定的列和顺序显示查询到的元组子句中指定的列和顺序显示查询到的元组结果。结果。Select子句子句:说明要输出的结果元组中需要的字段说明要输出的结果元组中需要的字段From子句:子句:说明查询的数据来源,包括表和视图说明查询的数据来源,包括表和视图Where子句:子句:说明查询的条件说明查询的条件Groupby子句:子句:用于对查询结果进行分组,可用于对查询结果进行分组,可以利用分组进行分组汇总以利用分组进行分组汇总Having子句:子句:与与groupby结合使用,用于限定结合使用,用于限定分组必须要满足的条件。分组必须要满足的条件。Orderby子句:子句:对查询的结果进行排序对查询的结果进行排序SQL的的查询主要有简单查询、联接查询、嵌套查查询主要有简单查询、联接查询、嵌套查询、使用库函数查询等询、使用库函数查询等简单查询指基于单个表的查询,或仅由SELECT-FROM子句构成的无条件查询,或由SELECT-FROM-WHERE构成的简单条件查询。)*的使用例如:从学生成绩表中查询所有学生信息select*from学生成绩表.简单查询简单查询)查询学生成绩表中高数成绩在80分以上的元组,输出姓名、学号、高数三列信息select姓名,学号,高数;from学生成绩表where高数=80Where子句后可以是复合条件子句后可以是复合条件,可以包括可以包括、=、=60and高数高数300Orderby高数高数注:如果语句在输入时一行写不完,则可以注:如果语句在输入时一行写不完,则可以采用分号做续行符采用分号做续行符1)基于多个表的查询)基于多个表的查询在在from子句中指定查询的表,在子句中指定查询的表,在from或或where子句子句中指明查询时的联接条件。中指明查询时的联接条件。例如:查询选修过课程的所有学生信息例如:查询选修过课程的所有学生信息Select*fromnew1,new2Wherenew1.xh=new2.xh上述联接为等值联接,即只有满足条件的记录才会在上述联接为等值联接,即只有满足条件的记录才会在结果中显示。结果中显示。3.联接查询联接查询主要在主要在from子句中,不放在子句中,不放在where子句中子句中格式为:格式为:select*fromtableinner|left|right|fulljointableon联接条件联接条件注意:注意:VFP的的select语句的联接格式只适用于两语句的联接格式只适用于两个表的联接,如果有多个表的联接,则还应使个表的联接,如果有多个表的联接,则还应使用用where格式格式(即标准格式即标准格式)。2)超联接)超联接【例】查询并显示各个学生的学号、所学课程及课程成绩,要求按成绩排序。SELECTA.学号,B.课程名,B.成绩;FROMSCAINNERJOINCOURSEB;ONA.课程号=B.课程号ORDERBY成绩此查询的WHERE等价表达式为:SELECTA.学号,B.课程名,B.成绩;FROMSCA,COURSEB;WHEREA.课程号=B.课程号ORDERBY成绩内联接内联接【例】对COUESE表和SC表实现左联接查询,结果包含学号、课程名、成绩字段。SELECT学号,课程名,成绩FROMCOURSEA;LEFTJOINSCB;ON A.课程号=B.课程号 ORDER BY 学号 结果中包括course表中的所有记录,以及sc表中匹配的记录首先从左边表(A表)中的第一条记录开始,在B表中查找,若找到,显示相应字段内容;若找不到,相应的字段显示NULL值。左外联接左外联接【例例】对COUESE表和SC表实现右联接查询,结果包含学号、课程名、成绩字段。SELECT学号,课程名,成绩FROMCOURSEA;RIGHTJOINSCB;ON A.课程号=B.课程号 ORDER BY 学号 结果中包括表sc中的所有记录,以及course表中匹配的记录右外联接右外联接即查询结果中即包括满足联接条件的两个表中的即查询结果中即包括满足联接条件的两个表中的记录,还包括两个表中不满足联接条件的记录,记录,还包括两个表中不满足联接条件的记录,相应的字段为空值。相应的字段为空值。例如:将例如:将SC和和COURSE进行完全联接进行完全联接SELECT学号,课程名,成绩FROMCOURSEA;FULLJOINSCB;ON A.课程号=B.课程号 ORDER BY 学号 完全联接完全联接5)别名与自联接查询)别名与自联接查询别名:别名:关系引用时可以采用其别名,方便操作。关系引用时可以采用其别名,方便操作。Selectfromnewasxwherex.xh=“1111”andx.zf=300自联接:自联接:在同一个关系上进行的自我联接。在同一个关系上进行的自我联接。例如:查询例如:查询new2表中选修的所有课程成绩大于表中选修的所有课程成绩大于80分以上的所有学生分以上的所有学生Selectx.xh,x.kh,x.cjdistinctfromnew2asx,new2asywherex.xh=y.xhandx.cj=80即在一个即在一个select-from-where查询块的查询块的where或或having中嵌入另一个查询块,称为子查询,并允许中嵌入另一个查询块,称为子查询,并允许多层嵌套。多层嵌套。部分联接查询可以通过嵌套完成。但部分联接查询可以通过嵌套完成。但order子句子句不能出现在子查询中不能出现在子查询中。另外,查询的结果只能是另外,查询的结果只能是外层表中的字段。外层表中的字段。ANY|ALL|SOME()或或NOTEXISTS(子查询子查询)4.嵌套查询嵌套查询【说明】【说明】包包括括SQL支支持持的的关关系系运运算算符符:=、!=、#、=、=、85)【例例】在在SC表表中中查查找找选选修修02号号课课的的学学生生中中成成绩绩比比选选修修51号课的最低成绩都要高的学生的学号和成绩。号课的最低成绩都要高的学生的学号和成绩。SELECT学学号号,课课程程号号,成成绩绩FROMSCWHERE;课课程程号号=02AND成成绩绩ANY (SELECT成成绩绩FROMSCWHERE课程号课程号=51)说说明明:先先找找出出选选修修了了51号号课课程程的的所所有有学学生生成成绩绩(结结果果是是69,73,82,74,80),然然后后找找出出选选修修02号号课课程程中中成绩高于成绩高于51号课程最低成绩的那些学生的学号。号课程最低成绩的那些学生的学号。【例例】查询没有选修任何课程的学生信息查询没有选修任何课程的学生信息Select*fromstudwherenotexists;(select*fromscwherestud.学号学号=学号学号)对应的对应的in子句操作子句操作Select*fromstudwhere学号学号notin;(select学号学号fromscwhere学号学号=sc.学号学号)【例【例】查询借阅过图书的读者信息查询借阅过图书的读者信息Select*from读者读者whereexists;(select*from借阅借阅;where借阅证号借阅证号=读者读者.借阅证号借阅证号)(1)使用系统函数:使用系统函数:count,sum,avg,max,min【例例】在在SC表表中中按按课课程程号号对对记记录录分分组组并并汇汇总总成成绩绩信信息息,检检索索出出课课程程名名和和成成绩绩信信息息,用用平平均均成成绩为字段名显示平均成绩。绩为字段名显示平均成绩。SELECT 课课程程名名,AVG(成成绩绩)AS 平平均均成成绩绩FROMCOURSE,SC;GROUP BY 课程名课程名,SC.课程号课程号;WHERE SC.课程号课程号 =COURSE.课程号课程号5.分组与计算查询分组与计算查询【例例】列列出出各各门门课课的的平平均均成成绩绩、最最高高成成绩绩、最最低成绩。低成绩。SELECT课课程程名名,AVG(成成绩绩)AS平平均均成成绩绩,MAX(成绩成绩)AS最高分最高分,;MIN(成绩成绩)AS最低分最低分FROMCOURSE,SC;GROUPBY课程名课程名,SC.课程号课程号;WHERESC.课程号课程号=COURSE.课程号课程号(1)使用系统函数使用系统函数主要采用主要采用orderby子句进行分组查询子句进行分组查询例例.按按班班级级分分类类显显示示学学生生的的姓姓名名、课课程程名名、成成绩绩,同同一一班班级级按按成成绩排序绩排序。SELECTA.姓名姓名,A.班级班级,C.课程名课程名,B.成绩成绩;FROMSTUDA,SCB,COURSEC;WHEREA.学号学号=B.学号学号.AND.B.课程号课程号=C.课程号;课程号;ORDERBYA.班级班级,B.成绩成绩(2)排序例例.显示成绩在显示成绩在80至至90之间的学生的姓名、课程名和成绩,之间的学生的姓名、课程名和成绩,按课程名排序,同一课程名按成绩由高到低排序。按课程名排序,同一课程名按成绩由高到低排序。SELECTA.姓名姓名,C.课程名课程名,B.成绩成绩;FROMSTUDA,SCB,COURSEC;WHEREA.学号学号=B.学号学号.AND.B.课程号课程号=C.课程号课程号.AND.;B.成绩成绩BETWEEN80.AND.90;ORDER BY C.课程名课程名,B.成绩成绩 DESC(2)排序主要采用主要采用groupby子句进行分组查询子句进行分组查询格式:格式:Groupby字段字段1,字段,字段2having条件条件Having子句用于进一步限定分组的条件。只能子句用于进一步限定分组的条件。只能跟在跟在groupby子句的后面,条件中必须有函数子句的后面,条件中必须有函数的使用,否则可以直接放在的使用,否则可以直接放在where子句中而不用子句中而不用加加having子句,因为在子句,因为在where子句中不能使用子句中不能使用函数。函数。查询中一般用查询中一般用where限定元组限定元组,用,用groupby限限定分组定分组,用,用having限定分组的选择条件限定分组的选择条件(3)分组【例】查找最少选修了三门课程的学生的姓名。【例】查找最少选修了三门课程的学生的姓名。SELECT姓名姓名FROMSTUDWHERE学号学号IN;(SELECT学学号号FROMSCGROUPBY学学号号HAVINGCOUNT(*)=3)【注注意意】虽虽然然HAVING和和WHERE都都是是条条件件子子句句,但但它它们们作作用用不不同同。WHERE子子句句用用来来指指定定表表 中中 各各 行行 应应 满满 足足 的的 条条 件件(限限 定定 记记 录录);而而HAVING子子句句是是用用来来指指定定每每一一分分组组满满足足的的条条件件(限限定定分分组组的的条条件件),只只有有满满足足HAVING条条件件的的那些组才能显示在结果中。那些组才能显示在结果中。每一个SELECT语句都能获得一个或一组记录。若要把多个SELECT语句的结果合并为一个结果,可用集合操作来完成。集合操作主要包括:并操作UNION、交操作INTERSECT和差操作MENUS。将将SQL查询的结果通过并运算符合并成一个查询结果查询的结果通过并运算符合并成一个查询结果例如:查询出版社为例如:查询出版社为“高教出版社高教出版社”,单价在,单价在30元以上的图书元以上的图书Select*from图书图书where出版社出版社=“高教出版社高教出版社”;Union;Select*from图书图书where单价单价=306.集合查询集合查询【例例】显示计算机系(学号字段的第5、6两个字符是“23”)的学生以及所有的男同学的学号、姓名、性别、班级信息。实质上是求计算机系的所有学生与男生的并集。查询语句代码如下:SELECT 学号,姓名,性别,班级FROM STUD;WHERE SUBSTR(学号,5,2)=23 UNION;SELECT 学号,姓名,性别,班级FROM STUD;WHERE 性别=“男”【例例】显示选修了大学英语或大学计算机基础的学生的学号和课程号。SELECT 学号,课程号 FROM SC;WHERE 课程号=01 UNION;SELECT 学号,课程号 FROM SC;WHERE 课程号=51 SQL语句中并没有提供直接进行交集和差集的操作,但可以用其他方法来实现。【例】显示既选修了01课程又选修了02课程的学生的学号和课程号。SELECT学号FROMSCWHERE课程号=01;AND学号IN(SELECT学号FROMSC;WHERE课程号=02)【例】显示选修了01课程而没有选修02课程学生的名单(就是选修01课程的学生与选修02课程学生的差集)。SELECT学号FROMSCWHERE课程号=01;AND 学号 NOT IN(SELECT 学号;FROM SC WHERE 课程号=02)1)显示部分结果)显示部分结果selecttop数值表达式数值表达式percent表示显示前几条记录或前百分之几的记录,表示显示前几条记录或前百分之几的记录,top必须与必须与orderby子句结合使用。子句结合使用。例如:显示例如:显示sc表中前表中前5条记录条记录Select*top5fromscorderby学号学号Select*top5percentfromsc;Orderby学号学号7.查询结果的显示和定向查询结果的显示和定向2)将查询的结果存放到数组中将查询的结果存放到数组中格式:格式:intoarray数组名数组名Select*fromscintoarraya1存放查询结果的数组为二维数组。存放查询结果的数组为二维数组。3)将查询的结果存放到临时文件中将查询的结果存放到临时文件中Intocursor产生的文件为只读的表文件,查询结束时临时产生的文件为只读的表文件,查询结束时临时文件为当前文件,当关闭文件后该临时文件将文件为当前文件,当关闭文件后该临时文件将自动删除,一般用临时文件存放一些临时结果自动删除,一般用临时文件存放一些临时结果或中间结果。或中间结果。4)将查询的结果存放到永久表中将查询的结果存放到永久表中Intodbf|table表名表名5)将查询的结果存放到文本文件中将查询的结果存放到文本文件中Tofile文件名文件名additive如果如果to短语和短语和into短语同时使用,则短语同时使用,则to短语将被忽略短语将被忽略6)将查询的结果直接输出到打印机将查询的结果直接输出到打印机Toprinter【例例5.32】对】对STUD表的记录按表的记录按“班级班级”升序排列,升序排列,用排序结果生成永久表用排序结果生成永久表STUD2.DBF。SELECT *FROM STUD INTO DBF STUD2;ORDER BY 班级班级8.视图的定义视图的定义视图是一个定制的视图是一个定制的虚表虚表、可以是本地的、远程的,、可以是本地的、远程的,视图的数据来源可以是一个表或多个表,或其他视图的数据来源可以是一个表或多个表,或其他的视图,视图可以的视图,视图可以更新更新,但视图只是显示指定表,但视图只是显示指定表的部分信息,它依赖于表,的部分信息,它依赖于表,不能独立存在不能独立存在。1)定义格式:定义格式:CREATEVIEW视图名视图名列名列名1,列名,列名2ASSELECT查询查询如果不指定列名则采用表中的字段名。如果不指定列名则采用表中的字段名。例如:依据例如:依据new2表建立一个视图,视图中包括成绩大于表建立一个视图,视图中包括成绩大于80分以上的记录分以上的记录Createviewv_new2as;select*fromnew2wherecj=802)视图的删除)视图的删除Dropview视图名视图名视图数据以来于数据表,所以视图的插入、修视图数据以来于数据表,所以视图的插入、修改、删除有相应的规则。改、删除有相应的规则。视图依据单表建立的则可以进行插入、更新视图依据单表建立的则可以进行插入、更新由多表导出时,不允许进行插入、更新和删除由多表导出时,不允许进行插入、更新和删除