二级vfp上机实验资料.doc_第1页
二级vfp上机实验资料.doc_第2页
二级vfp上机实验资料.doc_第3页
二级vfp上机实验资料.doc_第4页
二级vfp上机实验资料.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 表的建立和维护一、 实验内容、请利用表设计器建立表“学生花名册”,表结构如下:学号字符型(6)姓名字符型(8)性别字符型(2)数学数值型(5,1)外语数值型(5,1)出生日期日期型三好学生 逻辑型受奖情况备注型并根据下表填入记录学 号姓 名性别数学外语出生日期三好学生受奖情况Vf0091张晓庆男98851984.5.4否2000年获全国数学奥林匹克二等奖Vf0092陈 彬男88651983.12.12否Vf0093李 哲男56321984.2.16是Vf0094赵大明男75761984.3.9是Vf0095冯姗姗女89811982.1.2否2000年获全国中学生田径运动会100米第三名2、显示“学生花名册”表结构并把结果保存成“学生花名册定义说明”文本文件。3、显示“学生花名册”表中数学成绩大于等于80分的男同学记录。4、显示“学生花名册”表中三好学生的姓名、性别、数学、外语。5、用display 显示“学生花名册”表中所有女同学的记录。6、显示“学生花名册”的第二条到表结尾的所有记录。7、显示“学生花名册”表中记录号为奇数的男性记录。8、为“学生花名册”表追加三条记录、插入两条记录。9、给“学生花名册”表中所有少数民族的同学外语增加5分。10、逻辑删除“学生花名册”所有男性,外语和数学都没有及格的记录。11、使记录指针指向第五条记录并显示;测试表结尾、表开始位置的记录号。12、修改“学生花名册”表结构,给表添加一个总分字段(数值型、5个字符宽),并计算每个同学的总分。13、给“学生花名册”表添加一条空白记录,计算每门课程的总分,填入相应的字段名下面。二、 重点考查、掌握表的建立与维护的一般方法。、理解表的记录指针与当前记录的意义。、掌握表的打开、关闭、浏览、显示等操作方法。 掌握表结构的修改。 掌握记录的增加与删除等操作。 掌握成批替换修改命令的用法及有范围和没范围的区别。 理解表的纵向计算。三、 重点与难点分析1、表文件的组成:表结构、记录2、表结构的建立:create 表名打开表设计器3、表文件的扩展名: .dbf 备注型文件的扩展名:.fpt4、字段名的命名规则字段名(属性名)必须以汉字、字母开头,由汉字、字母、数字、下划线组成,最多10个字符(五个汉字)5、字段的类型:字符型 C,数值型 N,日期型 D,备注型 M,通用型 G,整型 I,货币型 Y6、字段的宽度 用户自定义宽度的类型:字符型、数值型系统规定宽度的:日期型、日期时间型、货币型、双精度型 8个字符备注型、通用型、整型 4个字符逻辑型(.T.真值 .F.假值) 1个字符空值 .null. 代表不确定的值7、表的显示、维护、增加、删除 表的打开 use 表名 表的关闭 use 或 close all8、表结构的显示display struct (分屏显示) list struct (滚屏显示)显示并存储到文本文件 list|display struct to file 文件名9、记录的显示list |display fields 字段名表范围for 条件to file 文件名offl 显示表中全部记录 listl 显示当前记录 displayl 显示的范围 all, rest next n, record nl 带条件的显示 list|display for 条件(not 、and、or)l 显示记录号为奇数的记录 list |display for recno()%2=110、表的修改a) 表结构的修改:modify structureb) 记录的修改:数据的两种显示方式(浏览、编辑)c) 浏览 browse for 条件fields字段名表d) 编辑 edit | change for 条件fields 字段名表e) 显示/浏览|编辑f) 成批替换修改:replace 范围for 条件 with注意:如果不跟范围子句时只对当前记录修改g) 增加记录l append 在表文件末尾追加记录l append blank 在表文件末尾追加一条空白记录l insert 在当前记录后面插入记录l insert before 在当前记录前面插入记录l insert blank 在当前记录后面插入一条空白记录l insert blank before 在当前记录前面插入一条空白记录11、命令的书写格式for to file to printer规则:l 用户必选项l 用户可选项l 每条命令必须以命令名开头,子句的顺序可以任意放置l 命令可以缩写为前四个字符,不得少于四个l 命令的各部分之间至少用一个空格分开l 命令的关键字可以大写、可小写、可大小混写,不区分大小写l 命令的执行必须以敲“回车”表示确认l 一行写不下,可用分号来作为续行符l 命令中的标点符号必须是半角符号12、删除记录先进行逻辑删除,后物理删除逻辑删除 delete for 条件范围物理删除 pack恢复记录 recall 范围for 条件 控制对逻辑删除记录的处理方式set dele on|off 物理删除所有记录(只删除表中所有记录,剩余表结构)zap四、 可能用到的命令1、 creat 表名2、 modify struct3、 use 表名 exclusive|shared4、 list|display struct to file 5、 list |display fields 字段名范围for 条件to file 文件名off6、 replace 范围条件 with 7、 append blank8、 insert blankbefore9、 delete for 条件范围10、 set delete on|off11、 go top 、go bottom 、skip +|-n12、 sum 范围for 条件to 内存变量表字段名13、 average 范围for 条件to 内存变量表字段名14、 count 范围for 条件to 内存变量表五、 关于本试验的总结实验二 表的索引、排序、多表的操作一、 实验内容1、 对“学生花名册”表按照总分的降序排序生成一个“名次”表。2、 对xuesheng表按照出生日期的升序排序,挑选出不是汉族的学生记录,生成一个“少数民族”表。3、 对“学生”先按照班级排序,班级相同的按照性别的降序排序,生成一个“同学录”表。4、 按照姓名给“学生花名册”表建立一个单索引文件,文件名为xmsy,注意观察它的扩展名。5、 给“学生花名册”表按照数学成绩的降序建立一个索引文件,文件名为sxjx6、 使用命令为“学生”表在学号字段上建立升序候选索引,索引名和表达式均为学号;建立普通索引,索引名为xmsy,索引表达式为姓名。7、 为“成绩表”在学号和成绩、课程名上分别建立普通索引,索引名和表达式均为默认。8、 为“成绩表”建立候选索引,表达式为学号+课程名,索引名为xhcj,注意观察是否能够保证表中记录惟一。9、 为stud 表建立惟一索引,索引名和索引表达式均为学号。10、 为cour表建立候选索引,索引名和索引表达式均为课程编号。11、 为scor 表建立两个普通索引,其中一个索引名和索引表达式均为学号,另一个索引名和索引表达式均为课程编号。12、 用命令建立结构复合索引,索引表达式为课程名+成绩,索引名为kcprimary,要求降序排列,并且指定kcprimary 为主控索引。13、 利用命令把“成绩表”备份到cjbak。15、将order_list1表的结构复制到order_list.dbf16、将order_list1中的记录全部追加到order_list 中17、使用locat for 查找order_list1所有订购日期为2001年的所有记录,并显示出来。18、为xuesheng表添加一个总成绩字段,和chengji表建立临时性关联并计算总成绩字段的值。19、使用“单价调整表”对“商品表”中的部分商品出厂单价进行修改(要求:按“商品号”相同,必须使用临时性关联)二、重点考察1、掌握排序的方法,知道产生的新表的扩展名。2、熟练掌握升序和降序的排序方法3、区分结构索引和临时索引的不同之处4、熟练使用命令建立结构索引(普通、候选、唯一)5、了解排序、索引的缺点6、清楚数值型字段、字符型字段、逻辑型字段的排序规则三、重点与难点分析1、排序 sort on 字段名/A|/D/C to 新表名注意:a、命令执行后必产生一个新表,只有打开新表才能看到结果b、排序的结果有表中的字段值来决定,按照某个字段的大小,先后排序(日期:越靠近现在的日期越大,越远离现在的日期越小,将来的日期比现在的大,逻辑:真值比假值大)/a 代表升序,不写默认为升序/d 代表降序/c 代表关键字不区分大小写c、不能对备注型字段、通用型字段排序2、多重排序先按第一个字段排序,第一个字段相同的再按第二个字段排序3、索引index on 字段名 to 索引文件名(.idx)4、 索引文件的降序(只对数值型数据降序)index on 数值型字段 to 索引文件名 index on 足够大的数-数值型字段 to 索引文件名5、 多重索引(字段必须是字符型,不是字符型转换成字符型 str()、dtoc())6、 索引文件的打开和关闭 打开索引文件:先打开表,再打开索引use 表set index to 文件名表打开表的同时打开索引文件use 表名 index 索引文件名表 关闭索引文件:set index to close index use 7、为一个表建立同时打开的索引文件index on 字段名 to 索引文件名index on 字段名2 to 索引文件名2 addi不关闭第一个索引文件建立第二个索引文件8、指定主控索引(改变当前索引)set order to 索引文件名set order to n9、重新索引reindex 在表打开而索引文件未打开时修改表中记录,再打开索引文件,记录不进行索引排序,只有重新索引才能维护表中的顺序10、分类汇总步骤:先分类(索引)再汇总(对数值型的数据进行汇总,按照类别汇总)total on 汇总的关键字 to 新表名 范围for 条件fields 字段名表注意:汇总的数值型字段是关键字段值相同的所有记录中该字段值的总和非汇总字段是关键字段值相同的所有记录中第一个记录的该字段值(类别里的第一条记录)若汇总值超过字段宽度时作出错处理,用一串“*”代替11、结构索引在表设计器中建立的索引叫结构索引,如果有多个字段的索引叫结构复合索引,随着表的打开而打开命令方式普通索引:index on 字段名 asce|desc tag 索引名候选索引:index on 字段名 asce|desc tag 索引名 candi唯一索引:index on 字段名 asce|desc tag 索引名 uniq结构复合索引:index on 字段名1+字段名2 tag 索引名指定主控索引:set order to tag 索引名| n12、表文件的复制表结构的复制 copy struct to 新表 fields 字段名表步骤:先打开表 use 表名 copy struct to 新表名结构、数据一块复制 copy to 新表名 for 条件fields 字段名表范围关闭表的复制copy file 表名.dbf to 新表名.dbfcopy file 表名.fpt to 新表名.fptcopy file 表名.cdx to 新表名.cdx13、表文件的更名rename 表名.dbf to 新表名.dbfrename 表名.fpt to 新表名.fptrename 表名.cdx to 新表名.cdx14、表对表的追加use 被追加表appen from 数据表 fields 字段名表必须保证数据类型相等,宽度相等15、表文件的删除(表处于关闭状态)delet file 文件名.扩展名erase 文件名.扩展名16、顺序查询locat for 条件continue?found()display如果命令执行后,记录指针指向第一条满足条件的记录,如果没找到,记录指针指向表结尾。四、可能用到的命令sort on 字段名1/a/d,字段名2/a/d to 新表名 for 条件范围index on 关键字 to 索引文件名addiindex on 关键字 to 索引文件名index on 足够大的数-关键字 to 索引文件名set index to close indexreindexindex on 字段名desc|asce tag 索引名 uniqcandicopy struct to 文件名copy to 文件名 for 条件范围临时性关联步骤select 1use 表1index on 关键字 to 索引文件名select 2use 表2index on 关键字 to 索引文件名set relation to 关键字 into 工作区别名 for 条件五、关于本试验的总结实验三 常量、变量、函数表达式一、实验内容1、显示xuesheng表中记录号为奇数的记录2、显示学生表中记录号为偶数的记录3、显示xuesheng表中记录号为1、4、7、10的记录4、显示stu表中出生年份是7的倍数的记录5、显示stu中在1980年1月1日以前出生的记录6、显示xuesheng中在1980年以后出生的记录7、显示xuesheng中闰年出生的记录8、查找xuesheng中姓名中含有“小”的记录9、显示xuesheng表中姓“王”的所有记录10、查找学生表中姓名的最后一个字是“峰”的所有记录11、把scor表所有学号的第一个字符替换成“8”12、显示系统当前的日期13、显示“今天是XXXX年XX月XX日”14、计算下列表达式的值left(123456789,len(数据库) len(space(3)-space(5) val(substr(1999,3)+right(str(year(date(),2)+15val(subst(奔腾586,5,1)*len(visual foxpro)str(109.87,7,3)(year(date()-1900)%10015、运行并注意下列表达式的取值范围int(rand()*100)二、重点考察1、内存变量的使用、内存变量的常见用法2、内存变量的赋值3、释放内存变量的作用,会正确的使用不同的释放内存变量的命令4、内存变量文件的作用,能正确地建立内存变量文件和恢复内存变量文件的内容7、 数组的定义方法8、 二维数组用一维数组的表示方式9、 函数的调用方式10、 函数的使用方法三、重点与难点分析1、字符常量:用字符定界符括起来的字符串定界符: 、 、 2、数值常量数值的科学计数法:如:0.69471020 表示成 0.6947E203、逻辑常量:逻辑真:.T.、 .t.、 .Y. 、.y.逻辑假:.F. 、. f. 、.N. 、.n.4、内存变量1) 内存变量的分类:字符型、数值型、货币型、逻辑型、日期型、日期时间型2)内存变量的赋值 内存变量=表达式 &只能把一个值赋值给一个变量 store 值 to 内存变量表 &只能把一值赋值给多个变量,不能把多个值赋值给多个变量。3)内存变量的显示display |list memory like * 代表一串字符?代表一个字符4)内存变量文件的建立save to 内存变量文件名 (.mem)5)内存变量的恢复(打开变量文件)restore from 内存变量文件名 addi当当前变量和内存变量文件的变量同名时显示内存变量文件里的变量当内存变量和字段变量同名时,若要访问内存变量的值必须使用 m.内存变量名 或m-内存变量名字段变量的优先级比内存变量的优先级高6)内存变量的清除 clear memory release all内存变量表like |except 通配符 release 内存变量表clear all (清除当前内存中的所有变量,并关闭所有的文件)3、数组变量 一组变量的集合,有数组名和下标组成A 一维数组A(1)A(2)A(3)A(4)B 二维数组B(1,1)B(1,2)B(1,3)B(2,1)B(2,2)B(2,3)二维数组可用一维数组表示如:二维数组B中的六个元素表示成一维数组b(1),b(2),b(3),b(4),b(5),b(6)2)数组的定义 dimension 数组名(下标1,下标2) declare 数组名(下标1,下标2)3)数组的赋值给数组中各元素赋同一个值 数组名=值store 值 to 数组名4)数组的使用scat to 数组名 (把当前记录复制到数组中)gather from 数组名 把数组中的数据复制到当前记录中4 系统变量系统变量都是以下划线开头的变量,是为了保证vfp能够正常运行所定义的内存变量三、vfp 中的内部函数1、函数的调用 函数名(参数表)2、求绝对值函数 abs(数值型表达式)3、求平方函数 sqrt(数值型表达式)4、求指数函数 exp(数值型表达式)Ex E=2.725、求对数函数log(数值表达式) 求自然对数log10(数值表达式) 以10为底的对数6、取整函数 int() list for recno()/2=int(recno()/2)7、求余函数 mod(数值1,数值2)整个表达式的符号由数值2决定两数同号,即为两数相除的余数两数异号,两数相除的余数,余数和表达式二求补数8、四舍五入函数round(数值表达式1,数值表达式2)功能:按的规定对的计算结果进行四舍五入处理。当为正数时,其值是小数部分保留的位数;当为负数时,其绝对值为正数部分四舍五入的位数。9、求最大值和最小值函数max(表达式1,表达式2,表达式3)min(表达式1,表达式2,表达式3)比较时各数据的类型必须相同10、len()List for len(alltrim(姓名)=411、求子串位置函数at(字符表达式1,字符表达式2)atc(字符表达式1,字符表达式2)12、取子串函数left(字符串表达式,数值表达式)例:left(abcdefg,3)subst(字符串表达式,数值表达式1,数值表达式2)12、删除字符串前后空格函数 alltrim(字符表达式) ltrim(字符表达式)rtrim(字符表达式)13、生成空格函数 space(数值表达式)14、字符串替换函数stuff(,)对的从开始到为止的字符,置换成的字符15、大小写转换函数lower(字符表达式)upper(字符表达式)16、year(日期|日期时间)17、month(日期)18、day(日期)19、ctod(字符表达式)20、str(数值型表达式1,数值表达式2,数值表达式3)21、val(字符型表达式)22、条件函数 iif(逻辑表达式,表达式1,表达式2)23、宏替换函数 &字符表达式 用内存变量或数组元素中的值取代“&”号及其后的变量宏替换号“&”与内存变量之间不能有空格,内存变量只能是字符型。&函数用法相当灵活,可通过它替换出内存变量中的命令、表达式、字段名、或文件名等如果宏替换函数后还有非空的,此时将以“.”表示的结束并将宏替换的值与的值连接起来24、表达式的分类:算术表达式、字符表达式、日期和时间表达式、关系表达式、逻辑表达式25、字符表达式中包括:连接运算,包含运算 + 代表完全连接 - 代表不完全连接 包含运算 :前面少后面多才是真四、可能用到的命令set century on |off set date to ymd|dmy|mdyset mark to / | - |. display|list memeory likesave to 内存变量文件名restore from addiscatt to 数组名gather from 数组名set exact off|on常 用 函 数 一 览 表函数类型函数格式函数功能返回值类型数 值 函 数Abs(数值型表达式)求绝对值数值Sqrt(数值型表达式)开平方数值Exp(数值型表达式)求自然数指数数值Log(数值型表达式)求自然数对数数值Log10(数值型表式)求以10为底的对数数值Int(数值型表达式)取整数函数数值Mod(数值型表达式)求余函数数值Round(数值型表达式)四舍五入函数数值Max(表达式1,)求最大值函数任何值Min(表达式1,)求最小值函数任何值Pi()函数数值字 符 函 数Len(字符表达式)求字符串长度函数数值At(字符表达式1,字符表达式2)求字串位置函数数值Left(字符表达式,数值表达式)从左边取子串函数字符Right(字符表达式,数值表达式)从右边取子串函数字符Subst(字符表达式,数值表达式1,数值表达式2)取子串函数字符Alltrim(字符串表达式)删除前后空格函数字符Ltrim(字符串表达式)删除左边空格函数字符Rtrim(字符串表达式)删除右边空格函数字符Space(数值表达式)生成空格函数字符Stuff(字符表达式1,数值表达式1,数值表达式2,字符表达式2)字符串替换函数字符Lower(字符表达式)大写转换成小写函数字符Upper(字符表达式)小写转换成大写函数字符日 期 和 时 间 函 数日 期 和 时 间 函 数Date()系统日期函数日期Time()系统时间函数字符Datetime()系统日期时间函数日期时间Year()取年份函数数值Moth()取月份函数数值Day()取日函数数值Hour(日期时间型表达式)取时函数数值Minute(日期时间型表达式)取分钟函数数值Sec()取秒函数数值数据类型转换函数Ctod(字符表达式)字符转换日期函数日期型Dtoc(日期型表达式)日期转换字符函数字符型Str(数值型表达式1,数值表达式2,数值表达式3)数值转换成字符函数字符型Val(字符型表达式)字符转换成数值函数数值型测试函数Vartype(表达式)测试表达式类型函数字符型Bof()测试表头函数逻辑型Eof()测试表结尾函数逻辑型Recno()测试当前记录号函数数值型Found()测试是否找到记录函数逻辑型五、关于本试验的总结实验四 数据库的操作一、实验内容1、打开宾馆数据库完成下列操作(1) 打开客户表,给性别字段增加约束:性别只能为男或女,默认值为女,表达式为:性别$男女。(2)为入住表创建一个主索引,主索引的索引名为fkkey,索引表达式为:客房号+客户号。(3)根据各表的名称、字段名的含义和存储的内容建立表之间的永久联系,并根据要求建立相应的普通索引,索引名与建索引的字段名相同,升序排序。2、将当前文件夹下的自由表CLASS(班级表)和TEACHER(教师表)添加到学生数据库SDB中。3、为班级表CLASS创建一个主索引和普通索引(升序),主索引的索引名和索引表达式均为班级号;普通索引的索引名和索引表达式均为班主任号。为教师表TEACHER创建一个主索引,索引名和索引表达式均为教师号。4、通过班级号字段建立班级CLASS和学生表STUDENT表间的永久联系。通过班级表CLASS的班主任号字段与TEACHER的教师号字段建立班级表CLASS和教师表TEACHER间的永久联系。为以上建立的两个联系设置参照完整性约束:更新规则为级联,删除规则为限制。插入规则为限制。5、打开一个公司销售数据库SELLDB完成如下操作(1)为各部门分年度季度销售金额和利润表S_T创建一个主索引和普通索引(升序),主索引的索引名为NO,索引表达式为部门号+年度,普通索引的索引名和索引表达式均为部门号。(2)在S_T表中增加一个名为备注的字段、字段数据类型为字符、宽度为30。(3)通过部门号字段建立S_T表和DEPT表间的永久联系,并为该联系设置参照完整性约束:更新规则为级联;删除规则为限制;插入规则为忽略。二、重点考察1、掌握数据库的建立、打开、关闭等基本操作2、掌握为数据库表建立永久性联系的作用和方法3、了解参照完整性4、熟练掌握设置字段有效性规则5、掌握建立项目,给项目中添加数据库、表的操作三、重点与难点分析1、建立数据库 creat database2、修改数据库 modify database(1)建立表(2)添加表 add table 表名(3)移去表 remove table 表名(4)折叠表3、数据库表和自由表的五条不同点(1)数据库表比自由表多了一个长表名和长字段名(2)数据库表比自由表多了一种操作方式(3)数据库表比自由表的字段多了三个特性(显示、字段有效性、字段注释)(4)数据库表比自由表多了一种索引方式(主索引)(5)数据库表比自由表之间多了一种永久性联系和参照完整性规则4、数据库的打开 open database 数据库名 exclusive|shared5、关闭数据库 close database 或 close all6、删除数据库 delete database 数据库名7、永久性联系(1)设置各表的结构索引(2)设置永久性联系一对一关系: 主主、主候一对多关系: 主普、候普8、设置参照完整性规则(1)建立永久性关联(2)清理数据库(3)设置参照完整性规则11、 完整性的分类(1)用户自定义完整性或域完整性(2)参照完整性(3)实体完整性四、可能用到的命令1、creat database 数据库名2、modify database3、open database 数据库名4、close database5、delete database 6、creat project 项目名五、关于本试验的总结实验五 SQL语言的应用一、实验内容1、根据宾馆数据库使用SQL语句查询房价大于280元的每个客户的客房号、类型号、类型名、和价格。2、从宾馆数据库中查询退房日期大于或等于2005-04-01的顾客的客户号、身份证、姓名、工作单位和该客户入住的客房号、类型名、价格信息、查询结果按价格降序排序,并将查询结果保存到表tabd中。3、从xuesheng表和chengji表中查询数学、英语、信息技术三门课中至少有一门在90分以上(含90分)的学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段,记录按照学号降序排序,查询去向为表table1。4、从xuesheng和chengji 表中找出所有1982年出生的汉族学生记录。查询结果包括学号、姓名、数学、英语和信息技术5个字段,记录按照数学成绩降序排序,查询去向为表table2。5、从xuesheng和chengji 表中找出至少有一门成绩不及格的学生记录。查询结果包括学号、姓名、数学、英语和信息技术5个字段,记录按照数学成绩降序排序,查询去向为表table3。6、使用SQL创建表table4,表结构如下民族 c(4)数学平均分 n(6,2)英语平均分 n(6,2)7、根据xuesheng表和chengji表分别统计汉族学生和少数民族学生在数学和英语两门课程上的平均分,并把统计数据保存到table4中。表table4只有两条记录,第一条记录是汉族学生的统计数据,民族字段填汉,第二条记录是少数民族学生的统计数据,民族字段填其它。8、以表employee.dbf和orders.dbf中的数据为基础,使用SQL命令检索订单数最多的前三名职工的职工号、姓名和订单数,检索结果按订单数降序排序存入表newcoun.dbf9、用SQL语句完成下列操作:将选课在5门课程以上(包括5门)的学生的学号、姓名、平均分和选课门数按照平均分降序排序,并将结果存放于数据库表stu_temp(字段名为学号、姓名、平均分、选课门数)。10、从表books、authors中查询出版过三本以上(含三本)图书的作者信息、查询信息包括:作者姓名,所在城市;查询结果按作者姓名升序保存在表newview。11、把books.dbf 表所有书名中含有计算机3个字的图书复制到表booksbak12、从sc、student表中查询选课数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课数,并按平均成绩降序排序存入tt1表中。二、重点考察1、掌握应用SQL语言对表进行建立、修改和查询的方法2、SQL语言的数据定义功能(creat table、alter table)3、SQL语言的数据修改语句(delete 、insert into 、update)4、SQL的数据查询功能(简单查询、嵌套查询、连接查询、分组查询、计算)三、重点与难点分析数据定义功能1、建立表结构creat table|dbf 表名(字段名1 类型(长度),字段名2 类型(长度))creat table|dbf 表名 (字段名1 类型(长度) primarykey |uniq check 字段有效性规则 error 出错信息 default 默认值 ,字段名2 类型(长度)creat table|dbf 表名(字段名1 类型(长度),字段名2 类型(长度),primarykey |uniq 字段名 tag 索引名)2、修改表结构增加字段 alter table 表名 add 字段名 类型(长度)设置索引 alter table 表名 add primarykey 字段名 tag 索引名修改字段的宽度和类型 alter table 表名 alter 表名 类型(长度)设置字段有效性规则alter table 表名 alter 字段名 set check 字段有效性规则 error 错误信息alter table 表名 alter 字段名 set default 默认值给字段更名 alter table 表名 rename 字段名 to 新字段名删除字段 alter table 表名 drop 字段名删除索引 alter table 表名 drop uniq tag 索引名alter table 表名 drop primarykey删除字段有效性规则 alter table 表名 alter 字段名 drop check3、输入记录 insert into 表名 (字段名表)value(字段值)4、修改记录 update 表名 set 字段名 =表达式 where 条件5、删除表中记录 delete from 表名 where 条件6、删除表 drop table 表名数据查询功能一般格式 select 查询什么字段 from 来自哪些表 where 条件1、查询表中所有数据 select * from 表名 (*代表所有字段)2、查询个别字段 select 字段名表 from 表名3、带条件的查询 select 字段名表 from 表名 where 条件4、查询并排序 select 字段名表 from 表名 where 条件 order by 关键字1 asc|desc,关键字2asc|desc5、给字段起别名 select 字段名1 as 别名1,字段名2 as 别名2 from 表名 6、总体格式 select all|distinct 字段名表 from 表名 where 条件 order by 排序字段 desc|asc group by 分组字段 having 分组条件7、简单的联接查询select 字段名表 from 表名1,表名2 where 表名1,字段名=表名2,字段名 and 条件 order by 关键字desc|asc8、嵌套查询(查询结果只来自一个表,但要用到另一个表的条件)select 字段名表 from 表名1 where 字段名 in|not in(select 字段名 from 表名2 where 条件)9、select 字段名表 from 表名where 字段名 between 小数 and 大数10、select 字段名表 from 表名 where 字段名 like % | _字符% 代表一串字符 _代表一个字符11、select 字段名表 from 表名 where 字段名 !=表达式12、sql 中用于计算的函数有count()、sum()、avg()、max()、min()函数一般使用在select后面13、利用空值查询select 字段名表 where 字段名 is null14、自联接查询(分组查找组中最大或最小的整条记录)select * from 表名 a where 字段名 1=(select max(字段名1)|min(字段名1)from 表名 b where a,字段名2=b,字段名2)15、超联接查询内联接 select 字段名表 from 表名1 inner join 表名2 on 联接条件左联接select 字段名表 from 表名1 left join 表名2 on 联接条件右联接 select 字段名表 from 表名1 right join 表名2 on 联接条件全联接 select 字段名表 from 表名1 full join 表名2 on 联接条件16、集合的并运算select 字段名表 from 表名1 where 条件1 union select 字段名表 from 表名2 where 条件217、显示前n条记录select top n 字段名表 from 表名 where 条件 order by 关键字18、显示前百分之n 的记录sele top n percent 字段名表 from 表名 where 条件 order by 关键字19、查询去向select 字段名表 from 表名 where 条件 into array 数组名select 字段名表 from 表名 where 条件 into cursor 临时表名select 字段名表 from 表名 where 条件 into table 表名select 字段名表 from 表名 where 条件 to file 文本文件名select 字段名表 from 表名 where 条件 to printerselect 字段名表 from 表名 where 条件 to screen四、经典题型分析1stock_sl(股票代码,买入价,现价,持有数量) stock_name(股票代码,股票简称,汉语拼音) 用sql语句完成下列操作:列出所有盈利(现价大于买入价)的股票简称、现价、买入价和持有数量,并将检索结果按持有数量降序存储于表stock_temp中 select 股票简称,现价,买入价,持有数量 from stock_sl,stock_name; where 现价买入价 and stock_sl,股票代码=stock_name,股票代码 ; order by 持有数量 desc into table stock_temp 2学生(学号,姓名,性别,年龄,系) 课程(科称号,课程名称) 选课(学号,课程号,成绩) 将选课在5门以上(包括5门)的学生的学号,姓名,平均分和选课门数按平均分降序排序,并将结果存于数据库表stu_temp(字段名为学号,姓名,平均分和选课门数) 方法一: select 学生.学号,姓名,avg(成绩) as 平均分,count(*) as 选课门数 from 学生,选课; where 学生,学号=选课,学号; order by 平均分desc; group by 选课,学号 having count(*)=5; into table stu_temp 方法二: select a.学号,a.姓名,avg(b.成绩) 平均分,count(b.课程号) 选课门数 from 学生 a.选课 b where a.学号=b.学号 group by b.学号 having(count(b.课程号)=5 order by 平均分 desc into dbf stu_temp 3book(索书号,书名,作者,图书登记号,价格) borrows(借书证号,姓名,系名,班级) loans(借书证号,图书登记号,借书日期) 检索“田亮”所借图书的书名、作者、价格,结果按价格降序存入book_temp中。 select 书名,作者,价格 from book ,borrows ,loans; where 姓名=田亮 and borrows.借书证号=loans.借书证号 and loans.图书登记号=book.图书登记号order by 价格 desc into dbf book_temp 4score_manager.dbc中, student(学号,姓名,性别,系部,出生日期) course(课程号,课程名,开课单位,学时数,学分) score1(学号,课程号,成绩) 在score_manager数据库中查询没有选修任何课程的学生信息,查询结果包括学号,姓名和系部字段,查询结果按升序保存在一个新表new_table中 select 学号,姓名,系部 from student where 学号 not in (select distinct 学号 from score1) into dbf NEW_TABLE 5score_manager.dbc中, student(学号,姓名,性别,系部,出生日期) course(课程号,课程名,开课单位,学时数,学分) score1(学号,课程号,成绩)统计选修了课程的人数(选修多门时,只计算一次),统计结果保存在一个新表new_table中,表中只有一个字段:学生人数 select count(distinct(学号) 学生人数 from score1 into dbf NEW_TABLE 查询没有学生选修的课程,查询结果含课程名,开课单位,结果按课程名升序保存在new_tabale2中 select 课程名,开课单位 from course ; where 课程号 not in (select distinct 课程号 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论