首页 《Visual FoxPro程序设计(第二版)》-电子教案-王永国 第4章 SQL语言与视图和查询

《Visual FoxPro程序设计(第二版)》-电子教案-王永国 第4章 SQL语言与视图和查询

举报
开通vip

《Visual FoxPro程序设计(第二版)》-电子教案-王永国 第4章 SQL语言与视图和查询第4章查询与视图本章要点1.查询与视图的概念2.创建查询3.创建视图4.SQL语言简介查询是按条件从数据表中提取特定的信息。用户可以通过“查询”来快速搜索满足条件的记录,同时可以对记录进行排序和分组,并将结果送出。查询扩充了用户控制数据的能力,可以让用户按需要的方式显示表中的信息。查询能单独以扩展名为.QPR的文件保存,可以在命令方式下使用,可以选择查询去向,但不能更新和修改数据,而且只能一次性使用,只能访问本地数据。查询的去向有七种:“浏览”、“临时表&...

《Visual FoxPro程序设计(第二版)》-电子教案-王永国 第4章 SQL语言与视图和查询
第4章查询与视图本章要点1.查询与视图的概念2.创建查询3.创建视图4.SQL语言简介查询是按条件从数据表中提取特定的信息。用户可以通过“查询”来快速搜索满足条件的记录,同时可以对记录进行排序和分组,并将结果送出。查询扩充了用户控制数据的能力,可以让用户按需要的方式显示表中的信息。查询能单独以扩展名为.QPR的文件保存,可以在命令方式下使用,可以选择查询去向,但不能更新和修改数据,而且只能一次性使用,只能访问本地数据。查询的去向有七种:“浏览”、“临时表”、“表”、“图形”、“屏幕”、“报表”、“标签”。视图是一个类似于目录的有关数据的虚拟表或称逻辑表,视图中的数据来源于数据库中的表或者其他视图。它具有普通表的一般性质,可以对它进行浏览、修改和使用。值得一提的是利用视图修改的结果可以送回数据源,进行永久的保存。但视图依赖于数据库而存在,在新建视图之前,必须先打开相关数据库。视图和查询也很相似,都可以从一个或多个相关联的表中提取有用的信息。1.查询与视图的概念查询与视图的区别1)利用查询 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 器生成的是.QPR文件,它是完全独立的,不依赖于任何数据库和表而存在,而视图则依赖于数据库而存在。2)利用查询不能更新数据源,而利用视图可以更新数据源。3)查询的去向有七种,而视图只是一个虚拟的表。2.创建查询VisualFoxPro支持两种查询方式:使用查询工具(如查询向导、查询设计器等)和SQL查询命令。无论使用何种方式,VisualFoxPro都将用户创建的查询保存在.QPR文件中。建立查询的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 很多:(1)可以选择“文件”菜单下的“新建”,或单击“常用”工具栏上的“新建”按钮,打开“新建”对话框,然后选择“查询”并单击“新建文件”打开查询设计器;(2)可以在项目管理器的“数据”选项卡下选择“查询”,然后单击“新建”命令按钮打开“新建查询”对话框,单击“新建查询”,就可以打开查询设计器。(3)可以用CREATEQUERY命令打开查询设计器;(4)使用SQLSELECT直接编辑.QPR文件建立查询。下面主要介绍用查询设计器建立查询:用查询设计器创建查询利用查询设计器创建查询操作方法是:1)打开“文件”菜单,选择“新建”。2)在“新建”窗口,选择“查询”,按“新建文件”。3)在“打开”窗口,选择要使用的表,进入“添加表或视图”窗口。4)在“查询设计器”窗口选择可用字段。5)当表中可出现在查询中的字段被选定后,保存查询结束操作。说明:查询设计器只能建立一些规则比较简单的查询,而复杂的查询它就无能为力了。如果熟悉SQLSELECT,则可以直接用各种文件编辑器,通过自己写SQLSELECT语句来建立查询。使用查询使用查询比使用数据表和数据库更方便、更快捷、更安全。可通过以下五种方式之一运行查询:1)在“查询设计器”窗口中单击鼠标右键,在弹出的快捷菜单中单击“运行查询”选项。2)在“项目管理器”中选定查询的名称,然后单击“运行”按钮。3)在“查询”菜单中选定“运行查询”选项。4)在“命令”窗口中执行命令“DO<查询文件名.QPR>”。注意,不能缺省扩展名,必要时应写文件路径,例如:DO<查询文件名.QPR>。50单击系统常用菜单上的图标。选择“查询”菜单下“查询去向”子菜单或在“查询设计器”工具栏中单击“查询去向”按钮,将打开一个“查询去向”窗口,其中提供七种输出格式。 浏览格式:把查询结果送入浏览窗口; 临时 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 式:把查询结果存入一个临时的数据表中,可以随意处理这个临时表; 表格式:把查询结果存入一个数据表中,可以随意处理这个数据表,当关闭这个数据表后,查询结果仍将存在磁盘上; 图形格式:把查询结果以图形方式输出; 屏幕格式:把查询结果输出到屏幕上; 报表格式:把查询结果输出到报表中; 标签格式:把查询结果输出到标签中。查询去向3.创建视图视图是从一个或多个数据表中导出的“表”。它与数据表不同的是,视图中的数据是存储在原来的数据表中,因此可以把它看作是一个“虚表”。视图是不能单独存在,它是依赖于某一数据库而存在的。只有打开与视图相关的数据库才能创建和使用视图。视图可以增强数据的共享性,保证不同的用户在使用同一个数据库时,选择各自最需要的数据源;视图可以增强数据的安全性,保证用户只对与自己相关的数据进行操作。由于在VisualFoxPro系统环境下,允许使用多个关联的表建立多表视图,这不仅使多个表间建立了相互联系,而且提高了数据的利用率,丰富了数据的内容。由于数据库中数据的来源不同,视图可以分为本地视图和远程视图。(1)利用视图设计器创建视图操作步骤是:1)打开数据库文件,进入“数据库设计器”窗口。2)再打开“数据库”菜单,选择“新建本地视图”。3)在“新建本地视图”窗口,选择“新建视图”按钮,进入“视图设计器”窗口,同时弹出“添加表或视图”窗口。4)在“添加表或视图”窗口,把建立视图所依据的表添加到视图设计器中,再进入“联接条件”窗口。5)在“联接条件”窗口,选择表间的联接条件后,进入“视图设计器”窗口。6)在“视图设计器”窗口的可用字段列表框中,逐个单击可用的字段添加到“选定字段”的列表框中。7)当表中可出现在视图中的字段被选定后,保存视图。并使之被存放在打开的数据库中,一个视图文件建立完成。(2)利用命令创建视图创建视图命令格式:CREATEVIEW<视图名>AS<SQL-SELECT>例如:CREATEVIEWV_TMPAS;SELECT学号,姓名,性别,成绩FROMSTUDENT,SCORE;WHERESTUDENT.学号=SCORE.学号CREATEVIEWV_SALAS;SELECT职工号,工资AS月工资,工资*12AS年工资FROM职工删除视图命令格式:DROPVIEW<视图名>利用视图更新数据虽然视图是一个“虚表”,但是可以利用视图更新数据表中的数据。默认对视图的更新不反映在基本表中,对基本表的更新在视图中也得不到反映。但是当关闭数据库后视图中的数据将消失,再次打开数据库时视图重新从基本表中检索数据,然后构成一个临时表供用户使用。视图和查询相比,视图虽然比查询多了一个更新功能,然而,查询的输出格式的多样化又是视图所不及的。利用本地视图更新数据表中的数据操作方法是:(1)打开数据库文件(2)打开“数据库”菜单,选择“修改”。(3)在“视图设计器”窗口,选择“更新条件”选项卡,通过“表”下拉列表框指定更新的表(默认为全部表),在字段名列表框选择要更新数据的字段名(钥匙表示关键字,铅笔表示更新,默认通过基本表的关键字更新所有非关键字的字段,建议不要通过视图更新基本表中的关键字字段值);使用“SQLWHERE子句包括”框中的选项可帮助管理遇到多用户访问同一数据时,如果视图操作的数据在更新之前被别的用户修改过,就不允许进行更新操作。其含义如下: 关键字段:当基本表中的关键字字段被改变时,更新失败。关键字和可更新字段:当基本表中任何标记为可更新的字段被改变时,更新失败。关键字和已修改字段:当在视图中改变的任一字段的值在基本表中已被改变时,更新失败。“使用更新”框的选项决定当向基本表“发送SQL更新”(选中可把视图的更新送回基本表)时的更新方式:SQLDELETE然后INSERT:先用SQLDELETE命令删除基本表中被更新的旧记录,再用SQLINSERT命令向基本表插入更新后的新记录。SQLUPDATE:使用SQLUPDATE命令更新基本表。4.SQL语言简介SQL是结构化查询语言StructuredQueryLanguage的缩写,是一种十分重要的标准数据库语言。SQL语言在1986年成为国际标准语言以后,各数据库软件开发商纷纷推出SQL的关系数据库管理系统产品或接口软件,许多应用广泛的关系数据库管理系统也都增加了DBMS功能,支持标准SQL语言,从而使未来的数据库环境连接为一个统一的整体。SQL语言是一种一体化语言,它集数据定义、数据查询、数据操纵和数据控制功能于一体,简单实用。SQL语言是一个非过程化语言,它的大多数语句都是独立执行、与上下文无关。它不是数据库管理系统,也不是应用软件开发语言,它只能用于对数据库中数据的操作。SQL语言功能很强,但只有为数不多的几条命令,简单实用。SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中。(l)定义基本表CREATETABLE|DBF<表名1>[[NAME<长表名>][FREE]](<字段名1><类型>[(<字段宽度>[,<小数位数>])][NULL|NOTNULL][CHECK<逻辑表达式>[ERROR<字符型文本信息>]][DEFAULT<表达式>][PRIMARYKEY|UNIQUE][,<字段名2><类型>…])[,FOREIGNKEY<表名2索引表达式>TAG<表名2主索引标识>REFRENCES<表名2>]注意:用SQL命令新建的表自动在最小的可用工作区中以独占的方式打开,并可通过别名引用。SQLSELECT语言常用语句(1)NAME长表名:为新建表指定一个长表名。只有打开了数据库,在数据库中创建表时,才能指定一个长表名。长表名可以包含128个字符。(2)FREE:建立的表是自由表,不加入到打开的数据库中。当没有打开数据库时,建立的表是自由表。(3)<字段名1><类型>[(<字段宽度>[,<小数位数>]):指定字段名、定义字段类型、字段宽度及小数位数。字段类型可以用一个字符表示:C表示字符型,D表示日期型,T表示日期时间型,N表示数值型,F表示浮点型,I表示整型,B表示双精度型,L表示逻辑型,M表示备注型,G表示通用型。(4)NULL:允许该字段值为空。NOTNULL:该字段值不能为空、缺省值为NOTNULL。(5)CHECK<逻辑表达式>:指定该字段的合法值及该字段值的约束条件。CREATE语句说明(6)ERROR<字符型文本信息>:指定在浏览或编辑窗口中该字段输入的值不符合CHECK子句的合法值时,VisualFoxPro显示的错误信息。(7)DEFAULT<表达式>:为该字段指定一个缺省值,表达式的数据类型与该字段的数据类型要一致。(8)PRIMARKEY:为该字段创建一个主索引,索引标识名与字段名相同。(9)UNIQUE:为该字段创建一个候选索引,索引标识名与字段名相同。(10)FOREIGNKEY…REFRENCES用于指定两表之间的联系。例如:CREATEDATABASEZGSJK&&建立职工数据库CREATETABLEZGQK(编号C(3)PRIMARYKEY,姓名C(8),出生日期D,工资N(6,2)CHECK(工资>0)ERROR"工资应该大于0!")(2)插入数据INSERTINTO[数据库名!]<表名>(<字段名1>[,<字段名2>]…)VALUES(<表达式1>[,<表达式2>]…)例如:INSERTINTOZGSJK!ZGQK(编号,姓名,出生日期,工资)VALUE(“001”,“周亿新”,{^1986/08/26},218)(3)删除数据(逻辑删除)DELETEFROM[数据库名!]<表名>WHERE<条件>例如:DELETEFROMZGSJK!ZGQKWHERE姓名="周亿新"(4)修改数据UPDATE[数据库名!]<表名>SET<字段名1>=<表达式1>[<字段名2>=<表达式2>…][WHERE<条件>]例如:UPDATEZGSJK!ZGQKSET工资=816WHERE编号="001"插入、删除与修改数据(5)数据查询SELECT[ALL|DISTINCT][<表别名>.]<检索项1>AS<列名1>][,[<表别名.]<检索项2>AS<列名2>]…]FROM[数据库名!]<表名>[逻辑别名][INTODBF|TABLE|CURSOR<表名>][WHERE<连接条件>[AND<连接条件>…][AND|OR<条件表达式>[AND|OR<条件表达式>…]]][GROUPBY<列名>[,<列名>…]][HAVING<条件表达式>][ORDERBY<排序项>[ASC|DESC][,<排序项>…]][UNION[ALL]SELECT<语句>]数据查询使用SQLSELECT实现查询SQL的核心是查询。SQL的查询命令也称SELECT命令,它的基本形式是:SELECT…FROM…WHERE。数据查询命令可以实现数据库的任何查询。为清楚起见我们下面分别进行介绍:1)简单查询【例1】从STUDENT中检索所有"男"性考生信息。SELECT*FROMSTSC!STUDENTWHERE性别="男"其中"*"代表所有字段。【例2】从SCORE中检索所有成绩合格的学生信息。SELECT学号,成绩FROMSCOREWHERE成绩>=602)连接查询【例3】列出成绩合格的学生的学号、姓名、成绩SELECTSTUDENT.学号,STUDENT.姓名,SCORE.成绩FROMSTUDENT,SCOREWHERESTUDENT.学号=SCORE.学号ANDSCORE.成绩>=603)嵌套查询【例4】select*fromstsc!scorewhere学号=(select学号fromstsc!studentwhere学号="99036003")select*fromstsc!scorewhere学号in(select学号fromstsc!student)4)分组及使用库函数计算查询SELECT-SQL语言支持各种统计汇总函数,即库函数。通过库函数对满足条件的记录进行最大值MAX()、最小值MIN()、平均值AVG()、总和SUM()等统计、计数运算COUNT()。这些组函数一般是从一组值中计算出一个汇总信息,GROUPBY子句用来定义或者划分字段的值成为多个组,它能控制和影响查询的结果。【例5】查询考试成绩合格的"男"生人数SELECTCOUNT(性别)FROMSTSC!STUDENT,STSC!SCOREWHERE性别="男"AND成绩>=60ANDSTUDENT.学号=SCORE.学号【例6】按成绩分别求出男、女生的平均成绩SELECTSTUDENT.性别,SCORE.成绩FROMSTUDENT,SCOREWHERESTUDENT.学号=SCORE.学号INTOCURSORLSBSELECT性别,AVG(成绩)FROMLSBGROUPBY性别注意:HAVING短语必须跟随GROUPBY短语使用,它用来限定分组必须满足的条件。5)排序ORDERBY<排序字段1>[ASC|DESC]…【例7】按学生成绩进行降序输出SELECT*FROMSTSC!SCOREORDERBY成绩DESC【例8】显示部分结果有时只需要满足条件的前几个记录,这时使用TOP<n>[PERCENT]短语非常有用,但TOP短语要与ORDERBY短语同时使用才有效。例:显示成绩最高的三位考生的信息。SELECT*TOP3FROMSTSC!SCOREORDERBY成绩DESC例:显示成绩最低的那30%学生的信息。SELECT*TOP30PERCENTFROMSTSC!SCOREORDERBY成绩6)使用量词和谓词的查询IN与NOTIN运算【例8】select*fromstsc!scorewhere学号in(select学号fromstsc!student)注:这里IN相当于集合运算符∈。BETWEEN…AND…运算LIKE运算其中可以使用*和?【例9】检索出成绩在70到80分范围内的学生信息。SELECT*FROMSTSC!SCOREWHERE成绩BETWEEN70AND80该查询的条件等价于:(成绩>=70)AND(成绩<=80),显然用BETWEEN…AND…表达条件更清晰、更简洁。【例10】从COURSE表中检索出课程名称中含“语”的课程,SELECT*FROMCOURSEWHERE"语"$课程名称SELECT*FROMCOURSEWHERE课程名称LIKE"日语"【例11】找出没有开设外语的全部院系信息。SELECT*FROMcourseWHEREnot"语"$课程名称这里用NOT来表达“不等于”:<表达式><比较运算符>[ANY|ALL|SOME](子查询)[NOT]EXISTS(子查询)ANY,ALL和SOME是量词,其中ANY和SOME是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则就为真;而ALL则要求子查询中的所有行都使结果为真时,结果才为真。EXISTS是谓词,EXISTS或NOTEXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组【例12】检索那些仓库中还没有职工的仓库的信息。SELECT*FROM仓库表WHERENOTEXISTS;(SELECT*FROM职工表WHERE仓库号=仓库表.仓库号)以上的查询等价于:SELECT*FROM仓库表WHERE仓库号NOTIN;(SELECT仓库号FROM职工表)【例13】检索那些仓库中至少已经有一个职工的仓库的信息。SELECT*FROM仓库表WHEREEXISTS;(SELECT*FROM职工表WHERE仓库号=仓库表.仓库号)它等价于:SELECT*FROM仓库表WHERE仓库号IN;(SELECT仓库号FROM职工表)注意:[NOT]EXISTS只是判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。选讲【例14】检索有职工的工资大于或等于WH1仓库中任何一名职工工资的仓库号。SELECTDISTINCT仓库号FROM职工表WHERE工资>=ANY(SELECT工资FROM职工表WHERE仓库号=”WH1”)它等价于:SELECTDISTINCT仓库号FROM职工表WHERE工资>=;(SELECTMIN(工资)FROM职工表WHERE仓库号=”WH1”)【例15】检索有职工的工资大于或等于WH1仓库中所有职工工资的仓库号。SELECTDISTINCT仓库号FROM职工表WHERE工资>=ALL(SELECT工资FROM职工表WHERE仓库号=”WH1”)它等价于:SELECTDISTINCT仓库号FROM职工表WHERE工资>=;(SELECTMAX(工资)FROM职工表WHERE仓库号=”WH1”)7)超连接查询SELECT……FROM<表名1>INNER|LEFT|RIGHT|FULL|JOIN<表名2>ON<连接条件>WHERE……【例16】内部联接—只有满足联接条件的记录才出现在查询结果中。SELECT仓库表.仓库号,城市,面积,职工号,工资;FROM仓库表[INNER]JOIN职工表;ON仓库表.仓库号=职工表.仓库号如下两种命令格式也是等价的:SELECT仓库表.仓库号,城市,面积,职工号,工资;FROM仓库表,职工表;WHERE仓库表.仓库号=职工表.仓库号【例17】左联接—除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。SELECT仓库表.仓库号,城市,面积,职工号,工资;FROM仓库表LEFTJOIN职工表;ON仓库表.仓库号=职工表.仓库号【例18】右联接—除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中。SELECT仓库表.仓库号,城市,面积,职工号,工资;FROM仓库表RIGHTJOIN职工表;ON仓库表.仓库号=职工表.仓库号实际上,E8所在的仓库“WH8”并不存在,这在实际应用中是不允许的。【例19】全联接—除满足联接条件的记录出现在查询结果外,两个表中不满足联接条件的记录也出现在查询结果中。SELECT仓库表.仓库号,城市,面积,职工号,工资;FROM仓库表FULLJOIN职工表;ON仓库表.仓库号=职工表.仓库号 注意:VisualFoxPro的SQLSELECT语句的联接格式只能实现两个表的联接。:8)集合的并运算SQL语言支持集合的并(UNION)运算,即可以将两个SELECT查询的结果通过运算合并成一个查询结果,但要求这两个查询结果具有相同的字段个数及相应字段来自同一域。【例20】查询结果是城市为北京和合肥的仓库信息。SELECT*FROMCKWHERECS=“北京”;UNION;SELECT*FROMCKWHERECS=“合肥”格式1(添加(ADD)字段或修改(ALTER)字段):ALTERTABLE<表名1>ADD|ALTER<字段名><类型>[(宽度[,小数])][NULL|NOTNULL][CHECK<条件>[ERROR提示]][DEFAULT<表达式]>][PRIMARYKEY|UNIQUE][REFERENCES<表名2>[TAG标识名]]该格式语法基本与CREATETABLE语法相对应。【例21】为订购单1表添加一个货币类型的总金额字段。ALTERTABLE订购单1;ADD总金额YCHECK总金额>0ERROR“总金额应该大于0!”(6)表结构的修改【例22】将订购单1表的订购单号字段的宽度由原来的5改为6。ALTERTABLE订购单1ALTER订购单号C(6)该命令格式可以修改字段的类型、宽度,但是不能修改字段名、有效性规则、错误信息和默认值,不能删除字段与已经定义的规则等。格式2(修改和删除有效性规则、错误信息和默认值): ALTERTABLE<表名1>ALTER <字段名>[NULL|NOTNULL] [SETDEFAULT<表达式]>] [SETCHECK<条件>[ERROR提示]] [DROPDEFAULT] [DROPCHECK]定义修改有效性规则、错误信息和默认值删除字段有效性规则、错误信息和默认值格式3:ALTERTABLE<表名>[DROP字段名][SETCHECK<条件>[ERROR<提示>]][DROPCHECK][ADDPRIMARYKEY<表达式>TAG标识名2[FOR<条件>]][DROPPRIMARYKEY][ADDUNIQUE<表达式>[TAG<标识名>[FOR<条件>]]][DROPUNIQUETAG<标识名>][ADDFOREIGNKEY[表达式]TAG<标识名>[FOR<条件>]REFERENCES<表名2>[TAG<标识名>]][DROPFOREIGNKEYTAG<标识名>[SAVE]][RENAMECOLUMN<老字段名>TO<新字段名>]该格式可以删除字段(DROP)、可以修改字段名(RENAMECOLUMN)、可以定义、修改和删除表一级的有效性规则等。【例23】将订购单1表的总金额字段名改为金额。ALTERTABLE订购单1RENAMECOLUMN总金额TO金额【例24】删除订购单1表中的金额字段。ALTERTABLE订购单1DROPCOLUMN金额【例25】将订购单1表的职工号定义为候选索引(候选关键字),索引名是ZGHSY。ALTERTABLE订购单1ADDUNIQUE职工号TAGZGHSY【例26】删除订购单1表的候选索引ZGHSY。ALTERTABLE订购单1DROPUNIQUETAGZGHSY(7)删除表DROPTABLE<表名>注意:表名无需扩展名,且直接从磁盘上删除对应的DBF文件,故是数据库表应打开数据库,否则打开数据库时将出错。思考题1.SQL的含义是什么?用SQL语言实现查询的种类可概括为哪几类?2.什么是视图,什么是查询?3.视图与查询有什么不同,各自有什么优点?4.用视图文件可以修改表中数据吗?5.查询文件有几种查询输出形式?实验题目实训7关系数据库标准语言——SQL1.掌握SQL的数据定义功能;2.掌握SQL的数据更新功能;3.熟练掌握SQL的数据查询功能;(详见配套实训)
本文档为【《Visual FoxPro程序设计(第二版)》-电子教案-王永国 第4章 SQL语言与视图和查询】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
科技制造的艺术美
暂无简介~
格式:ppt
大小:428KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2019-11-02
浏览量:14