版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章SQL语句
(时间:8次课,16学时)第6章SQL语句
(时间:8次课,16学时)1第6章SQL语句
学习目的与要求:SQL是结构化查询语言(StucturedQueryLanguage)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。SQL语言拥有使用方式灵活、语句简洁、功能齐全等特点,深受用户欢迎,已成为目前应用最广泛的关系数据库语言,几乎所有的关系型数据库型系统都支持它。VisualFoxPro并不支持所有的SQL语句,它只支持其中的子集。本章将介绍常用的SQL语句使用,主要包括数据查询、数据定义和数据操作功能。要求熟练掌握这些命令的应用。第6章SQL语句
学习目的与要求:2第6章SQL语句6.1数据库的操作语句6.2表的创建与删除语句6.3SQL的数据操作功能6.4SQL的数据查询功能
6.5本章实训6.6本章习题第6章SQL语句6.1数据库的操作语句36.1数据库的操作语句6.1.1数据库的创建6.1.2数据库的删除6.1数据库的操作语句6.1.1数据库的创建46.1.1数据库的创建
SQL创建数据库的命令和第三章讲的命令一样,这里只做简单介绍。【命令格式】CREATEDATABASEDatabaseName【命令说明】DatabaseName指的是所要创建的数据名。具体应用见【例6-1】。6.1.1数据库的创建5
【例6-1】创建名为CJGL的数据库。命令如下:CREATEDATABASECJGL &&在当前路径下创建了名为CJGL的数据库。MODIFYDATABASE &&打开名为CJGL的数据库设计器,如图6.1所示。图6.1【例6-66.1.2数据库的删除【命令格式】DELETEDATABASEDatabaseName【命令说明】DatabaseName指的是所要删除的数据名。但在删除数据库之前,必须先关闭该数据库。具体应用见【例6-2】6.1.2数据库的删除【命令格式】7【例6-2】删除名为CJGL的数据库。命令如下:CLOSEDATABASE &&关闭例6-1所建立的数据库。DELETEDATABASECJGL &&删除已经关闭的数据库,弹出如图6.2所示,单击【是】按钮就删除了该数据库。图6.2【例6-2】删除名为CJGL的数据库。命令如下:图6.286.2表的创建和删除语句6.2.1表的创建6.2.2表结构的修改6.2.3表的删除6.2.4将表移出数据库6.2.5将自由表添加到数据库6.2表的创建和删除语句6.2.1表的创建96.2.1表的创建【一般常用命令格式】CREATETABLE|DBFTableName[FREE](FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][CKECKlExpression1[ERRORcMessagetext1]][DEFAULTeExpression1][PRIMARYKEY|UNIQUE][,FieldName2…]【命令说明】(1)TableName指的是所要创建的表名。(2)FREE指的是要创建一个自由表。(3)FieldName1指的是新建表的字段名。6.2.1表的创建【一般常用命令格式】10(4)FieldType指的是字段的数据类型,数据类型得用英文表示,具体见第三章所介绍的。(5)nFieldWidth指的是字段的宽度。(6)nPrecision指的是数值型数据的小数位数。(7)NULL|NOTNULL指的字段中是否允许保存空值。(8)CKECKlExpression1[ERRORcMessagetext1]指的是验证字段的值是否符合指定的表达式,不符合可以有错误提示信息。(9)DEFAULTeExpression1指的是给指定字段设置默认值。(10)PRIMARYKEY|UNIQUE指的是给指定字段设置主索引或唯一索引。
(4)FieldType指的是字段的数据类型,数据类型得用英11【例6-3】在数据库“成绩管理”中创建数据库表XS。命令如下:OPENDATABASE成绩管理CREATETABLEXS(XHC(2),XMC(10),XBC(2),CSRQD,SFTYL,XBBHC(2))&&在成绩管理数据库中建立表XS,如图6.3所示。图6.3【例6-3】在数据库“成绩管理”中创建数据库表XS。命令如下12【例6-4】创建数据库表XS1,要求给XB字段定义规则:XB的值为“男”或“女”,出错提示信息为“性别必须为男或者女”;XH为主关键字,不允许为空值;SFTY默认值为.T.。命令如下:CREATETABLEXS1(XHC(2)NOTNULLPRIMARYKEY,XMC(10),XBC(2)CHECKXB=”男”ORXB=”女”,CSRQD,SFTYLDEFAULT.T.,XBBHC(2))然后查看表XS1的结构,如图6.4所示。
图6.4【例6-4】创建数据库表XS1,要求给XB字段定义规则:XB136.2.2表结构的修改1.添加字段【命令格式】ALTERTABLETabelName1ADD[COLUNMN]FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][CHECKlExpression1[ERRORcMessagetext1]][DEFAULTeExpression1][PRIMARYKEY|UNIQUE]【命令说明】这里的参数的含义和创建表的含义一致,参照执行。6.2.2表结构的修改1.添加字段14【例6-5】为XS表添加NL字段,NL大于零。命令如下:ALTERTABLEXSADDNLN(2)CHECKNL>0ERROR”年龄必须大于零”命令执行后进入表XS的表设计器,如图6.5所示。图6.5【例6-5】为XS表添加NL字段,NL大于零。命令如下:图6152.修改字段【命令格式】ALTERTABLETabelName1ALTER[COLUNMN]FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][SETCHECKlExpression1[ERRORcMessagetext1]][SETDEFAULTeExpression1][DROPCHECK][DROPDEFAULT][RENAMECOLUMNFieldName1TOFieldName2]2.修改字段16【命令说明】(1)SETCHECKlExpression1[ERRORcMessagetext1]指给指定字段增加规则或修改规则。(2)SETDEFAULTeExpression1指给指定字段增加默认值或修改默认值。(3)DROPCHECK指删除指定字段的规则。(4)DROPDEFAULT指删除指定字段的默认值。(5)RENAMECOLUMNFieldName1TOFieldName2指给字段FieldName1重新命名为FieldName2。其他的参数的含义和创建表的含义一致,参照执行。【命令说明】17【例6-6】为XS表修改NL字段有效性规则,NL>16。命令如下:ATLERTABLEXSALTERNLN(2)SETCHECKNL>16ERROR”年龄必须大于16周岁!”【例6-7】把SP1表中NL字段更改为RXNL。命令如下:ATLERTABLEXSRENAMECOLUMNNLTORXNL【例6-8】删除XS表RXNL字段的有效性规则。命令如下:ATLERTABLEXSALTERRXNLDROPCHECK【例6-6】为XS表修改NL字段有效性规则,NL>16。命令186.2.3表的删除【命令格式】DROPTABLETableName【命令说明】该命令是直接从磁盘上删除指定的表名的DBF文件。但该表如果是数据库表,就必须先打开该表所在的数据库,然后使用该命令删除表,否则数据库中将还保留有该表的信息,会有错误提示。【例6-10】删除表SP1。DROPTABLESP16.2.3表的删除【命令格式】196.2.4将表移出数据库【命令格式】REMOVETABLETableName|?[DELETE]【命令说明】(1)该命令是把指定数据库表移出数据库。(2)?指调出【移去】对话框,从中选择要移去的表。(3)DELETE指把指定表移出后,并从磁盘上删除。【例6-11】将表XS移出数据库CJGL,但不删除。命令和操作如下:6.2.4将表移出数据库【命令格式】20【例6-11】将表XS移出数据库CJGL,但不删除。命令和操作如下:OPENDATABASECJGLMODIFYDATABASEREMOVETABLEXS &&该命令执行后出现如图6.6所示的对话框。在图6.6中单击【是】按钮,就把表XS移出数据库CJGL,但并没有删除表XS,数据库设计器如图6.7所示。
图6.6图6.7【例6-11】将表XS移出数据库CJGL,但不删除。命令和操216.2.5将自由表添加到数据库【命令格式】ADDTABLETableName|?[NAMELongTableName]【命令说明】(1)该命令是把指定自由表添加到指定的数据库中,成为数据库表。(2)?:指调出【打开】对话框,从中选择要添加的自由表。(3)NAMELongTableName:指为添加的数据库表指定一个长名。6.2.5将自由表添加到数据库【命令格式】22【例6-12】将表XS添加到数据库CJGL中。命令如下:OPENDATABASECJGLMODIFYDATABASEADDTABLEXS命令执行后数据库设计器如图6.8所示。图6.8【例6-12】将表XS添加到数据库CJGL中。命令如下:图6236.3SQL的数据操作功能6.3.1数据的插入6.3.2数据的更新6.3.3数据的删除SQL的数据操作功能只要是对已有表中数据的操作,主要包括记录的插入、更新和删除三大方面的操作。6.3SQL的数据操作功能6.3.1数据的插入24从本节开始将要使用“成绩管理”数据库中的表的数据,其具体数据如图6.9所示:图6.9从本节开始将要使用“成绩管理”数据库中的表的数据,其具体数据256.3.1数据的插入
VisualFoxPro支持两种SQL数据的插入格式,第一种是标准格式,第二种是特殊格式。一般使用第一种格式。【第一种命令格式】INSERTINTOTableName[(FieldName1[,FieldName2,…])]VALUES(eExpression1[,eExpression2,…])【命令说明】(1)TableName指所要插入记录的表名。(2)FieldName1[,FieldName2,…]指插入记录所要用到的字段。该参数可以不选,默认为对所有字段都需要插入值。(3)eExpression1[,eExpression2,…]指插入记录对应字段的值。(4)所插入字段的值必须和该对应的字段的数据要求一致,包括数据类型、数据长度的范围、数据小数位数。(5)所插入的记录字段的值必须和字段的个数保持一致,不能多也不能少,否则会出错。6.3.1数据的插入VisualFoxPro支持两种S26【例6-13】给课程表插入一条记录。命令如下:INSERTINTO课程(课程号,课程名称,学分)VALUES(’C6’,’桌面程序设计’,5)由于该命令是对表中所有字段都插入一个值,还可以使用下面命令进行操作:INSERTINTO课程VALUES(’C6’,’桌面程序设计’,5)命令执行结果如图6.10所示。图6.10【例6-13】给课程表插入一条记录。命令如下:图6.1027【第二种命令格式】INSERTINTOTableNameFROMARRAYAraayName【命令说明】(1)该命令是从指定的数据组中插入数据成为记录。(2)AraayName指数组名。该数组必须先定义,而且各元素的赋值符合指定表相应字段的定义,这样才可以使用数组插入记录。【第二种命令格式】28【例6-14】给课程表插入一条记录。命令序列如下:DIMEX(3) &&定义一个一维数组X,有3个元素。X(1)=’C7’X(2)=’专业英语’X(3)=3INSERTINTO课程FROMARRAYX命令执行结果如图6.11所示。
图6.11【例6-14】给课程表插入一条记录。命令序列如下:图6.11296.3.2数据的更新【命令格式】UPDATETableNameSETColumnName1=eExpression1[,ColumnName2=eExpression2…])][WHEREConditon]【命令说明】(1)ColumnName1、ColumnName2…指对所要修改的字段名。(2)eExpression1、eExpression2…指对所要修改字段更新的数据值。可以是常量和表达式。(3)WHEREConditon指对满足条件的数据进行更新。(4)所更新字段和新的值必须保持一致。6.3.2数据的更新【命令格式】30【例6-15】把课程表中政治课程的课程名更改为“思想道德”,学分改为4。命令如下:UPDATE课程;SET课程名称=’思想道德’,学分=4;WHERE课程名称=’政治’命令执行结果如图6.12所示。
图6.12【例6-15】把课程表中政治课程的课程名更改为“思想道德”,316.3.3数据的删除【命令格式】DELETEFROMTableName[WHEREConditon]【命令说明】(1)该命令是对指定表的记录进行逻辑删除,需要物理删除还要借助PACK命令。(2)WHEREConditon指对满足条件的数据进行删除。6.3.3数据的删除【命令格式】32【例6-16】删除课程表中课程号为“C6”课程记录。命令如下:DELETEFROM课程WHERE课程号=’C6’命令执行结果如图6.13所示。图中的黑色方块表示作了删除标记,但记录并没有真正删除,还保留在表中。如果要去掉删除标记和物理删除该条记录,可以参见第三章所讲解的表数据删除方法。
图6.13【例6-16】删除课程表中课程号为“C6”课程记录。命令如下336.4SQL的数据查询功能6.4.1数据库的简单查询6.4.2数据库的复杂查询SQL的数据查询功能是数据库中最常用、最重要的数据操作,它可以在指定的表中查询满足条件的数据,该命令应用广泛,但格式比较复杂。6.4SQL的数据查询功能6.4.1数据库的简单查询34【命令格式】
SELECT[ALL|DISTINCE][TOPnExpr[PERCENT]][Alias.][Select_Item[ASColumn_Name][,[Alias.][Select_Item[ASColumn_Name]…]FROM[FORCE][DatabaseName!]Table[[AS]Local_Alias][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINDatabaseName!]Table[[AS]Local_Alias][ONJoinCondition…][[INTODestination]|[TOFILEFileName[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT][WHEREJoinCondition[ANDJoinCondition...][AND|ORFilterCondition[AND|ORFilterCondition...]]][GROUPBYGroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECT命令][ORDERBYOrder_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]由于该命令格式比较复杂,下面将分别在各种应用中进行说明和介绍:【命令格式】356.4.1数据库的简单查询数据列查询条件查询简单计算查询分组查询查询结果排序查询结果保存6.4.1数据库的简单查询数据列查询36【命令格式】SELECT[ALL|DISTINCE][Alias.][Select_Item1[ASColumn1_Name][,[Alias.][Select_Item2[ASColumn2_Name]…]FROM[DatabaseName!]Table[[AS]Local_Alias]【命令说明】(1)ALL|DISTINCE:指查询表中所有数据或去掉重复的记录。(2)[Alias.][Select_Item1[ASColumn1_Name]:从指定的表中(可以使用别名)引用相关的字段或着表达式,ASColumn1_Name对查询结果的列名重新命名。(3)FROM[DatabaseName!]Table[[AS]Local_Alias]:指从指定的表(可以是数据库中的表)查询数据,这里可以给表指定一个别名,在所有字句中都可以应用。1.数据列查询【命令格式】1.数据列查询37(4)该命令是从指定表中查询表中的所有或者部分列的数据。【例6-17】查询学生表中所有数据。命令如下:SELECT*FROM学生&&这里*代表所有字段
结果如图6.14所示。【例6-18】查询学生表的学号和姓名。命令如下:SELECT学号AS学生的编号,姓名ASXMFROM学生结果如图6.15所示。图6.14图6.15(4)该命令是从指定表中查询表中的所有或者部分列的数据。图638【例6-19】查询选课表中有选课的学生的学号。命令如下:SELECTDISTINCT学号FROM选课结果如图6.16所示。
图6.16【例6-19】查询选课表中有选课的学生的学号。命令如下:图639【主要命令格式】SELECT…FROM…WHERECondition【命令说明】该命令是查询满足条件的数据,Condition为条件表达式。具体应用如下:(1)使用关系和逻辑表达式的条件查询。【例6-20】查询成绩不及格的情况。命令如下:SELECT*FROM选课WHERE成绩<60结果如图6.17所示。2.条件查询图6.17【主要命令格式】2.条件查询图6.1740(2)使用范围查询BETWEEN…AND…或者NOTBETWEEN…AND…。【例6-21】查询成绩在80到100之间的情况。命令如下:SELECT*FROM选课WHERE成绩BETWEEN80AND100结果如图6.18所示。图6.18(2)使用范围查询BETWEEN…AND…或者NOTBE41(3)使用字符匹配查询LIKE…或NOTLIKE…。%:代表任意长度的字符串。_:代表任意单个字符。【例6-22】查询所以姓王的学生情况。命令如下:SELECT*FROM学生WHERE姓名LIKE'王%'结果如图6.19所示。图6.19(3)使用字符匹配查询LIKE…或NOTLIKE…。图642(4)空值查询ISNULL或ISNOTNULL。【例6-23】查询学生表系部编号不为NULL的情况。命令如下:SELECT*FROM学生WHERE系部编号ISNOTNULL结果如图6.20所示。
图6.20(4)空值查询ISNULL或ISNOTNULL。图6.43(5)确定集合查询IN或NOTIN。【例6-24】查询系部编号为”2”或”3”的学生情况。命令如下:SELECT*FROM学生WHERE系部编号IN('2','3')结果如图6.21所示。图6.21(5)确定集合查询IN或NOTIN。图6.2144【主要命令格式】SELECT...FROM…[WHERECondition]【命令说明】(1)SELECT短语后主要书写计算表达式和函数。(2)计算检索的函数主要有:COUNT(DISTINCT|ALL)*)——统计记录个数。SUM(DISTINCT|ALL)<ColumnName>)——计算一数值列的总和。AVG(DISTINCT|ALL)<ColumnName>)——计算一数值列的平均值。MAX(DISTINCT|ALL)<ColumnName>)——求一列的最大值。MIN(DISTINCT|ALL)<ColumnName>)——求一列的最小值。3.简单计算查询【主要命令格式】3.简单计算查询45【例6-25】统计学生表中的记录个数。命令如下:SELECTCOUNT(*)AS学生人数FROM学生结果如图6.22所示。【例6-26】计算选课表的成绩总和、平均分、最大分、最小分。命令如下:SELECTSUM(成绩)AS总和,AVG(成绩)AS平均分,MAX(成绩)AS最大分,MIN(成绩)AS最小分FROM选课结果如图6.23所示。图6.22图6.23【例6-25】统计学生表中的记录个数。命令如下:图6.22图46【主要命令格式】SELECT…FROM….GROUPBYGroupColumn[,GroupColumn...][HAVINGFilterCondition]【命令说明】(1)GroupColumn是指分组的标志列。(2)HAVINGFilterCondition是指限制分组的条件。【例6-27】分别统计学生表中的男女生人数。命令如下:SELECT性别,COUNT(*)AS人数FROM学生GROUPBY性别结果如图6.24所示。4.分组查询【主要命令格式】4.分组查询47【例6-28】统计成绩有两门以上在70分的情况。命令如下:SELECT学号,COUNT(课程号)AS课程门数FROM选课;WHERE成绩>=70;GROUPBY学号HAVINGCOUNT(*)>=2结果如图6.25所示。图6.24图6.25【例6-28】统计成绩有两门以上在70分的情况。命令如下:图48【主要命令格式】、SELECT[TOPnExpr[PERCENT]]…FROM….ORDERBYOrder_Item[ASC|DESC][,Order_Item[ASC|DESC]...]【命令说明】(1)Order_Item:指的选定的对查询结果排序的列。(2)ASC|DESC:指的是排序的顺序。ASC指升序,默认为升序。DESC指的是降序。(3)TOPnExpr[PERCENT]:指查询结果显示特定数目的记录。TOPnExpr表示现在最前面的N条记录。TOPnExprPERCENT表示显示查询结果记录数目的百分比。这里必须和排序结合使用,不能单独使用。5.查询结果排序【主要命令格式】、5.查询结果排序49【例6-29】对学生表数据按出生日期的升序降序排序。命令如下:SELECT*FROM学生;ORDERBY出生日期DESC&&结果如图6.26所示。【例6-30】查询课程号为“C1”,成绩最高的前三名情况。命令如下:SELECT*TOP3FROM选课WHERE课程号=’C1’;ORDERBY成绩DESC&&结果如图6.27所示。
图6.26图6.27【例6-29】对学生表数据按出生日期的升序降序排序。命令如下50【主要命令格式】SELECT…FROM….INTOTABLE[|CURSOR]Destination|TOFILEFileName[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]【命令说明】(1)INTOTABLE[|CURSOR]Destination:指查询结果保存到新表。将结果永久保存在表中则使用INTOTABLE;如果接查询结果保存到临时表中则使用INTOCURSOR,临时表的不永久保存,关闭后不在存在。(2)TOFILEFileName:[ADDITIVE]指查询结果保存到文本文件。(3)TOPRINTER[PROMPT]:指查询结果输出到打印机。(4)TOSCREEN:指查询结果到屏幕。6.查询结果保存【主要命令格式】6.查询结果保存51【例6-31】查询成绩不及格的情况,将结果保存到表BJGQK。命令如下:SELECT*FROM选课;WHERE成绩<60;INTOTABLEBJGQKSELECT*FROMBJGQK表BJGQK的记录数据如图6.28所示。图6.28【例6-31】查询成绩不及格的情况,将结果保存到表BJGQK526.4.2数据的复杂查询联接查询子查询6.4.2数据的复杂查询联接查询531)自然联接查询自然联接查询也叫等值联接查询或者内联接查询,一般用于查询结果须从两个表或两个以上表中去获取。【一般命令格式】SELECT…FROMTable1INNERJOINTable2ONTable1.Column=Table2.Column…或者SELECT…FROMTable1,Table2…WHERETable1.Column=Table2.Column[AND…]…1.联接查询1)自然联接查询1.联接查询54【命令说明】(1)命令格式中我们一般使用第二种。指的是从多个表中查询满足条件的数据。要求多个表中互相之间有联系保证有同名字段。(2)Table1.Column=Table2.Column指两个有联系的表中具有的相同字段名。这是建立联接查询的基本条件。(3)该命令给多表建立连接后,可以和前面所有讲的简单查询一起结合使用,查询满足条件的数据。【例6-32】查询学生李小明所选课的情况。命令如下:SELECTA.学号,姓名,课程名称,成绩FROM学生A,选课B,课程C;WHEREA.学号=B.学号ANDC.课程号=B.课程号AND姓名=”李小明”结果如图6.29所示。【命令说明】55【例6-33】统计每门课程选课学生的人数。命令如下:SELECT课程.课程号,课程名称,COUNT(学号)AS学生人数FROM课程,选课;WHERE课程.课程号=选课.课程号;GROUPBY1结果如图6.30所示。命令中的1指的是查询结果所包含的第一列,也就是课程.课程号。图6.29图6.30【例6-33】统计每门课程选课学生的人数。命令如下:图6.2562)左联接查询【一般命令格式】SELECT…FROMTable1LEFTJOINTable2ONTable1.Column=Table2.Column【命令说明】(1)该命令指除满足联接条件的记录出现在查询结果外,第一个表不满足联接条件的记录也出现在查询结果中。
(2)查询结果的记录个数以第一个表的记录个数为准,没有匹配的字段值,自动填写NULL。2)左联接查询57【例6-34】为学生和选课表建立左联接。命令如下:SELECT*FROM学生LEFTJOIN选课;ON学生.学号=选课.学号部分结果如图6.31所示。图6.31【例6-34】为学生和选课表建立左联接。命令如下:图6.31583)右联接查询【一般命令格式】SELECT…FROMTable1RIGHTJOINTable2ONTable1.Column=Table2.Column【命令说明】(1)该命令指除满足联接条件的记录出现在查询结果外,第二个表不满足联接条件的记录也出现在查询结果中。(2)查询结果的记录个数以第二个表的记录个数为准,没有匹配的字段值,自动填写NULL。3)右联接查询59【例6-35】为学生和选课表建立右联接。命令如下:SELECT*FROM学生RIGHTJOIN选课;ON学生.学号=选课.学号部分结果如图6.32所示。
图6.32【例6-35】为学生和选课表建立右联接。命令如下:图6.32604)完全联接查询【一般命令格式】SELECT…FROMTable1FULLJOINTable2ONTable1.Column=Table2.Column【命令说明】该命令指除满足联接条件的记录出现在查询结果外,两个表不满足联接条件的记录也出现在查询结果中。4)完全联接查询61【例6-36】为学生和选课表建立完全联接。命令如下:SELECT*FROM学生FULLJOIN选课;ON学生.学号=选课.学号部分结果如图6.33所示。图6.33【例6-36】为学生和选课表建立完全联接。命令如下:图6.3622.子查询【一般命令格式】SELECT…FROM…WHERE…(SELECT…FROM…)【命令说明】(1)子查询适合用于查询结果必须先从一个查询中来得来。(2)子查询可以使用IN、NOTIN、关系运算符等。【例6-37】查询没有选课的学生情况。命令如下:SELECT*FROM学生WHERE学号NOTIN;(SELECTDIST学号FROM选课)结果如图6.34所示。2.子查询【一般命令格式】63【例6-38】统计学生表中的记录个数。命令如下:SELECT姓名FROM学生WHERE学号IN;(SELECT学号FROM选课GROUPBY1HAVINGCOUNT(课程号)>4)结果如图6.35所示。图6.34图6.35【例6-38】统计学生表中的记录个数。命令如下:图6.34图646.5本章实训实验目的:熟悉各语句的命令格式和功能熟练掌握数据定义语句的使用熟练掌握数据操作语句对表中数据的灵活操作
重点掌握查询语句的灵活使用
6.5本章实训实验目的:65根据下面提供的数据,用SQL完成以下的操作。1.创建数据库TSGL,并打开。建立程序61.prg,并输入以下命令:createdatabasetsglopendatabasetsgl2.在数据库TSGL中创建以下表。表的结构如下:TS(SSHC(10),SMC(30),ZZC(6),TSDJHC(10),CBSC(10),JGN(6.2))JYZ(JSZHC(5),XMC(10),XBMC(8),BJC(4))JYDJ(JSZHC(5),TSDJHC(6),JSRQD)建立程序62.prg,并输入以下命令:createtablets(sshc(2),smc(30),zzc(6),tsdjhc(10),cbsc(10),jgn(6.2))createtablejyz(jszhc(5)primarykey,xmc(10),xbmc(8),bjc(4))createtablejydj(jszhc(5),tsdjhc(6),jsrqd)实验内容:根据下面提供的数据,用SQL完成以下的操作。实验内容:663.给数据库TSGL中所创建表输入数据,具体数据如下:表TS的数据如下表:sshsmzztsdjhcbsjgTP311.138VisualFoxPro程序设计教程匡松T00101川大29TP311.138VisualFoxPro程序设计教程匡松T00102川大29TP311.138数据库应用基础周察金T00201高等20.90TP311.138SQLServer2000实例教程杨学全T00301电子25C931.6管理信息系统李永平C00101科学18表JYZ的数据如下表:jszhxmxbmbj01101扬扬电子系01-101201田田计算机系02-101202同同计算机系02-201102天天电子系01-23.给数据库TSGL中所创建表输入数据,具体数据如下:ssh67表jydj的数据如下表:jszhtsdjhjsrq01201C002012005-03-2001101T001012005-03-1601202T002012005-04-2101102T002012005-03-2001101T002012005-03-1601102T003012005-03-0501101T003012005-04-1601202T001012005-03-0601201T002012005-03-20表jydj的数据如下表:jszhtsdjhjsrq0120168建立程序63.prg,并输入以下命令:opendatabasetsgl*给表TS插入数据*insertintotsvalues("TP311.138","VisualFoxPro程序设计教程","匡松","T00101","川大",29)insertintotsvalues("TP311.138","VisualFoxPro程序设计教程","匡松","T00102","川大",29)insertintotsvalues("TP311.138","数据库应用基础","周察金","T00201","高等",20.90)insertintotsvalues("TP311.138","SQLServer2000实例教程","杨学全","T00301","电子",25)insertintotsvalues("C931.6","管理信息系统","李永平","C00101","科学",18)*代码接下页建立程序63.prg,并输入以下命令:69*给表JYZ插入数据*insertintojyzvalues("01001","扬扬","电子系","01-1")insertintojyzvalues("01201","田田","计算机系","02-1")insertintojyzvalues("01202","同同","计算机系","02-2")insertintojyzvalues("01102","天天","电子系","01-2")*给表JYDJ插入数据*insertintojydjvalues("01201","C00201",{^2005-03-20})insertintojydjvalues("01101","T00101",{^2005-03-16})insertintojydjvalues("01202","T00201",{^2005-04-21})insertintojydjvalues("01102","T00201",{^2005-03-20})insertintojydjvalues("01101","T00201",{^2005-03-16})insertintojydjvalues("01102","T00301",{^2005-03-06})insertintojydjvalues("01101","T00301",{^2005-04-16})insertintojydjvalues("01202","T00101",{^2005-03-06})insertintojydjvalues("01201","T00201",{^2005-03-20})*给表JYZ插入数据*704.把TS表中TSDJH字段长度改为6。建立程序64.prg,并输入以下命令:opendatabasetsglaltertabletsaltertsdjhc(6)5.用户输入所要查找的书名,显示查询结果。建立程序65.prg,并输入以下命令:opendatabasetsglaccept"请输入所要查找的书名:"toshumingselect*fromtswheresm=shuming6.查询田田所借图书的信息。建立程序66.prg,并输入以下命令:opendatabasetsglselectts.*fromts,jydj,jyzwherets.tsdjh=jydj.tsdjhandjydj.jszh=jyz.jszhandxm="田田"4.把TS表中TSDJH字段长度改为6。建立程序64.prg717.统计每个出版社每种图书的数目,结果保存到cbsm。建立程序67.prg,并输入以下命令:opendatabasetsglselectcbs,count(tsdjh)fromtsgroupbycbsintotablecbsm8.查询借书在3本以上的读者信息。建立程序68.prg,并输入以下命令:opendatabasetsglselect*fromtswherejyzhin;(selectjyzhfromjydjgroupbyjyzhhavingcount(tsdjh)>=3)9.运行程序。按顺序依次61.prg、62.prg…68.prg。每运行一个程序注意观察其结果。7.统计每个出版社每种图书的数目,结果保存到cbsm。建立程72实验总结:通过本章的上机实验,要求能够熟练掌握SQL语句对不同数据操作要求时的应用,能利用SQL进行数据定义、数据操作、数据查询。
6.6本章习题(略)实验总结:6.6本章习题(略)73第6章SQL语句
(时间:8次课,16学时)第6章SQL语句
(时间:8次课,16学时)74第6章SQL语句
学习目的与要求:SQL是结构化查询语言(StucturedQueryLanguage)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。SQL语言拥有使用方式灵活、语句简洁、功能齐全等特点,深受用户欢迎,已成为目前应用最广泛的关系数据库语言,几乎所有的关系型数据库型系统都支持它。VisualFoxPro并不支持所有的SQL语句,它只支持其中的子集。本章将介绍常用的SQL语句使用,主要包括数据查询、数据定义和数据操作功能。要求熟练掌握这些命令的应用。第6章SQL语句
学习目的与要求:75第6章SQL语句6.1数据库的操作语句6.2表的创建与删除语句6.3SQL的数据操作功能6.4SQL的数据查询功能
6.5本章实训6.6本章习题第6章SQL语句6.1数据库的操作语句766.1数据库的操作语句6.1.1数据库的创建6.1.2数据库的删除6.1数据库的操作语句6.1.1数据库的创建776.1.1数据库的创建
SQL创建数据库的命令和第三章讲的命令一样,这里只做简单介绍。【命令格式】CREATEDATABASEDatabaseName【命令说明】DatabaseName指的是所要创建的数据名。具体应用见【例6-1】。6.1.1数据库的创建78
【例6-1】创建名为CJGL的数据库。命令如下:CREATEDATABASECJGL &&在当前路径下创建了名为CJGL的数据库。MODIFYDATABASE &&打开名为CJGL的数据库设计器,如图6.1所示。图6.1【例6-796.1.2数据库的删除【命令格式】DELETEDATABASEDatabaseName【命令说明】DatabaseName指的是所要删除的数据名。但在删除数据库之前,必须先关闭该数据库。具体应用见【例6-2】6.1.2数据库的删除【命令格式】80【例6-2】删除名为CJGL的数据库。命令如下:CLOSEDATABASE &&关闭例6-1所建立的数据库。DELETEDATABASECJGL &&删除已经关闭的数据库,弹出如图6.2所示,单击【是】按钮就删除了该数据库。图6.2【例6-2】删除名为CJGL的数据库。命令如下:图6.2816.2表的创建和删除语句6.2.1表的创建6.2.2表结构的修改6.2.3表的删除6.2.4将表移出数据库6.2.5将自由表添加到数据库6.2表的创建和删除语句6.2.1表的创建826.2.1表的创建【一般常用命令格式】CREATETABLE|DBFTableName[FREE](FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][CKECKlExpression1[ERRORcMessagetext1]][DEFAULTeExpression1][PRIMARYKEY|UNIQUE][,FieldName2…]【命令说明】(1)TableName指的是所要创建的表名。(2)FREE指的是要创建一个自由表。(3)FieldName1指的是新建表的字段名。6.2.1表的创建【一般常用命令格式】83(4)FieldType指的是字段的数据类型,数据类型得用英文表示,具体见第三章所介绍的。(5)nFieldWidth指的是字段的宽度。(6)nPrecision指的是数值型数据的小数位数。(7)NULL|NOTNULL指的字段中是否允许保存空值。(8)CKECKlExpression1[ERRORcMessagetext1]指的是验证字段的值是否符合指定的表达式,不符合可以有错误提示信息。(9)DEFAULTeExpression1指的是给指定字段设置默认值。(10)PRIMARYKEY|UNIQUE指的是给指定字段设置主索引或唯一索引。
(4)FieldType指的是字段的数据类型,数据类型得用英84【例6-3】在数据库“成绩管理”中创建数据库表XS。命令如下:OPENDATABASE成绩管理CREATETABLEXS(XHC(2),XMC(10),XBC(2),CSRQD,SFTYL,XBBHC(2))&&在成绩管理数据库中建立表XS,如图6.3所示。图6.3【例6-3】在数据库“成绩管理”中创建数据库表XS。命令如下85【例6-4】创建数据库表XS1,要求给XB字段定义规则:XB的值为“男”或“女”,出错提示信息为“性别必须为男或者女”;XH为主关键字,不允许为空值;SFTY默认值为.T.。命令如下:CREATETABLEXS1(XHC(2)NOTNULLPRIMARYKEY,XMC(10),XBC(2)CHECKXB=”男”ORXB=”女”,CSRQD,SFTYLDEFAULT.T.,XBBHC(2))然后查看表XS1的结构,如图6.4所示。
图6.4【例6-4】创建数据库表XS1,要求给XB字段定义规则:XB866.2.2表结构的修改1.添加字段【命令格式】ALTERTABLETabelName1ADD[COLUNMN]FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][CHECKlExpression1[ERRORcMessagetext1]][DEFAULTeExpression1][PRIMARYKEY|UNIQUE]【命令说明】这里的参数的含义和创建表的含义一致,参照执行。6.2.2表结构的修改1.添加字段87【例6-5】为XS表添加NL字段,NL大于零。命令如下:ALTERTABLEXSADDNLN(2)CHECKNL>0ERROR”年龄必须大于零”命令执行后进入表XS的表设计器,如图6.5所示。图6.5【例6-5】为XS表添加NL字段,NL大于零。命令如下:图6882.修改字段【命令格式】ALTERTABLETabelName1ALTER[COLUNMN]FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][SETCHECKlExpression1[ERRORcMessagetext1]][SETDEFAULTeExpression1][DROPCHECK][DROPDEFAULT][RENAMECOLUMNFieldName1TOFieldName2]2.修改字段89【命令说明】(1)SETCHECKlExpression1[ERRORcMessagetext1]指给指定字段增加规则或修改规则。(2)SETDEFAULTeExpression1指给指定字段增加默认值或修改默认值。(3)DROPCHECK指删除指定字段的规则。(4)DROPDEFAULT指删除指定字段的默认值。(5)RENAMECOLUMNFieldName1TOFieldName2指给字段FieldName1重新命名为FieldName2。其他的参数的含义和创建表的含义一致,参照执行。【命令说明】90【例6-6】为XS表修改NL字段有效性规则,NL>16。命令如下:ATLERTABLEXSALTERNLN(2)SETCHECKNL>16ERROR”年龄必须大于16周岁!”【例6-7】把SP1表中NL字段更改为RXNL。命令如下:ATLERTABLEXSRENAMECOLUMNNLTORXNL【例6-8】删除XS表RXNL字段的有效性规则。命令如下:ATLERTABLEXSALTERRXNLDROPCHECK【例6-6】为XS表修改NL字段有效性规则,NL>16。命令916.2.3表的删除【命令格式】DROPTABLETableName【命令说明】该命令是直接从磁盘上删除指定的表名的DBF文件。但该表如果是数据库表,就必须先打开该表所在的数据库,然后使用该命令删除表,否则数据库中将还保留有该表的信息,会有错误提示。【例6-10】删除表SP1。DROPTABLESP16.2.3表的删除【命令格式】926.2.4将表移出数据库【命令格式】REMOVETABLETableName|?[DELETE]【命令说明】(1)该命令是把指定数据库表移出数据库。(2)?指调出【移去】对话框,从中选择要移去的表。(3)DELETE指把指定表移出后,并从磁盘上删除。【例6-11】将表XS移出数据库CJGL,但不删除。命令和操作如下:6.2.4将表移出数据库【命令格式】93【例6-11】将表XS移出数据库CJGL,但不删除。命令和操作如下:OPENDATABASECJGLMODIFYDATABASEREMOVETABLEXS &&该命令执行后出现如图6.6所示的对话框。在图6.6中单击【是】按钮,就把表XS移出数据库CJGL,但并没有删除表XS,数据库设计器如图6.7所示。
图6.6图6.7【例6-11】将表XS移出数据库CJGL,但不删除。命令和操946.2.5将自由表添加到数据库【命令格式】ADDTABLETableName|?[NAMELongTableName]【命令说明】(1)该命令是把指定自由表添加到指定的数据库中,成为数据库表。(2)?:指调出【打开】对话框,从中选择要添加的自由表。(3)NAMELongTableName:指为添加的数据库表指定一个长名。6.2.5将自由表添加到数据库【命令格式】95【例6-12】将表XS添加到数据库CJGL中。命令如下:OPENDATABASECJGLMODIFYDATABASEADDTABLEXS命令执行后数据库设计器如图6.8所示。图6.8【例6-12】将表XS添加到数据库CJGL中。命令如下:图6966.3SQL的数据操作功能6.3.1数据的插入6.3.2数据的更新6.3.3数据的删除SQL的数据操作功能只要是对已有表中数据的操作,主要包括记录的插入、更新和删除三大方面的操作。6.3SQL的数据操作功能6.3.1数据的插入97从本节开始将要使用“成绩管理”数据库中的表的数据,其具体数据如图6.9所示:图6.9从本节开始将要使用“成绩管理”数据库中的表的数据,其具体数据986.3.1数据的插入
VisualFoxPro支持两种SQL数据的插入格式,第一种是标准格式,第二种是特殊格式。一般使用第一种格式。【第一种命令格式】INSERTINTOTableName[(FieldName1[,FieldName2,…])]VALUES(eExpression1[,eExpression2,…])【命令说明】(1)TableName指所要插入记录的表名。(2)FieldName1[,FieldName2,…]指插入记录所要用到的字段。该参数可以不选,默认为对所有字段都需要插入值。(3)eExpression1[,eExpression2,…]指插入记录对应字段的值。(4)所插入字段的值必须和该对应的字段的数据要求一致,包括数据类型、数据长度的范围、数据小数位数。(5)所插入的记录字段的值必须和字段的个数保持一致,不能多也不能少,否则会出错。6.3.1数据的插入VisualFoxPro支持两种S99【例6-13】给课程表插入一条记录。命令如下:INSERTINTO课程(课程号,课程名称,学分)VALUES(’C6’,’桌面程序设计’,5)由于该命令是对表中所有字段都插入一个值,还可以使用下面命令进行操作:INSERTINTO课程VALUES(’C6’,’桌面程序设计’,5)命令执行结果如图6.10所示。图6.10【例6-13】给课程表插入一条记录。命令如下:图6.10100【第二种命令格式】INSERTINTOTableNameFROMARRAYAraayName【命令说明】(1)该命令是从指定的数据组中插入数据成为记录。(2)AraayName指数组名。该数组必须先定义,而且各元素的赋值符合指定表相应字段的定义,这样才可以使用数组插入记录。【第二种命令格式】101【例6-14】给课程表插入一条记录。命令序列如下:DIMEX(3) &&定义一个一维数组X,有3个元素。X(1)=’C7’X(2)=’专业英语’X(3)=3INSERTINTO课程FROMARRAYX命令执行结果如图6.11所示。
图6.11【例6-14】给课程表插入一条记录。命令序列如下:图6.111026.3.2数据的更新【命令格式】UPDATETableNameSETColumnName1=eExpression1[,ColumnName2=eExpression2…])][WHEREConditon]【命令说明】(1)ColumnName1、ColumnName2…指对所要修改的字段名。(2)eExpression1、eExpression2…指对所要修改字段更新的数据值。可以是常量和表达式。(3)WHEREConditon指对满足条件的数据进行更新。(4)所更新字段和新的值必须保持一致。6.3.2数据的更新【命令格式】103【例6-15】把课程表中政治课程的课程名更改为“思想道德”,学分改为4。命令如下:UPDATE课程;SET课程名称=’思想道德’,学分=4;WHERE课程名称=’政治’命令执行结果如图6.12所示。
图6.12【例6-15】把课程表中政治课程的课程名更改为“思想道德”,1046.3.3数据的删除【命令格式】DELETEFROMTableName[WHEREConditon]【命令说明】(1)该命令是对指定表的记录进行逻辑删除,需要物理删除还要借助PACK命令。(2)WHEREConditon指对满足条件的数据进行删除。6.3.3数据的删除【命令格式】105【例6-16】删除课程表中课程号为“C6”课程记录。命令如下:DELETEFROM课程WHERE课程号=’C6’命令执行结果如图6.13所示。图中的黑色方块表示作了删除标记,但记录并没有真正删除,还保留在表中。如果要去掉删除标记和物理删除该条记录,可以参见第三章所讲解的表数据删除方法。
图6.13【例6-16】删除课程表中课程号为“C6”课程记录。命令如下1066.4SQL的数据查询功能6.4.1数据库的简单查询6.4.2数据库的复杂查询SQL的数据查询功能是数据库中最常用、最重要的数据操作,它可以在指定的表中查询满足条件的数据,该命令应用广泛,但格式比较复杂。6.4SQL的数据查询功能6.4.1数据库的简单查询107【命令格式】
SELECT[ALL|DISTINCE][TOPnExpr[PERCENT]][Alias.][Select_Item[ASColumn_Name][,[Alias.][Select_Item[ASColumn_Name]…]FROM[FORCE][DatabaseName!]Table[[AS]Local_Alias][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINDatabaseName!]Table[[AS]Local_Alias][ONJoinCondition…][[INTODestination]|[TOFILEFileName[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT][WHEREJoinCondition[ANDJoinCondition...][AND|ORFilterCondition[AND|ORFilterCondition...]]][GROUPBYGroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECT命令][ORDERBYOrder_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]由于该命令格式比较复杂,下面将分别在各种应用中进行说明和介绍:【命令格式】1086.4.1数据库的简单查询数据列查询条件查询简单计算查询分组查询查询结果排序查询结果保存6.4.1数据库的简单查询数据列查询109【命令格式】SELECT[ALL|DISTINCE][Alias.][Select_Item1[ASColumn1_Name][,[Alias.][Select_Item2[ASColumn2_Name]…]FROM[DatabaseName!]Table[[AS]Local_Alias]【命令说明】(1)ALL|DISTINCE:指查询表中所有数据或去掉重复的记录。(2)[Alias.][Select_Item1[ASColumn1_Name]:从指定的表中(可以使用别名)引用相关的字段或着表达式,ASColumn1_Name对查询结果的列名重新命名。(3)FROM[DatabaseName!]Table[[AS]Local_Alias]:指从指定的表(可以是数据库中的表)查询数据,这里可以给表指定一个别名,在所有字句中都可以应用。1.数据列查询【命令格式】1.数据列查询110(4)该命令是从指定表中查询表中的所有或者部分列的数据。【例6-17】查询学生表中所有数据。命令如下:SELECT*FROM学生&&这里*代表所有字段
结果如图6.14所示。【例6-18】查询学生表的学号和姓名。命令如下:SELECT学号AS学生的编号,姓名ASXMFROM学生结果如图6.15所示。图6.14图6.15(4)该命令是从指定表中查询表中的所有或者部分列的数据。图6111【例6-19】查询选课表中有选课的学生的学号。命令如下:SELECTDISTINCT学号FROM选课结果如图6.16所示。
图6.16【例6-19】查询选课表中有选课的学生的学号。命令如下:图6112【主要命令格式】SELECT…FROM…WHERECondition【命令说明】该命令是查询满足条件的数据,Condition为条件表达式。具体应用如下:(1)使用关系和逻辑表达式的条件查询。【例6-20】查询成绩不及格的情况。命令如下:SELECT*FROM选课WHERE成绩<60结果如图6.17所示。2.条件查询图6.17【主要命令格式】2.条件查询图6.17113(2)使用范围查询BETWEEN…AND…或者NOTBETWEEN…AND…。【例6-21】查询成绩在80到100之间的情况。命令如下:SELECT*FROM选课WHERE成绩BETWEEN80AND100结果如图6.18所示。图6.18(2)使用范围查询BETWEEN…AND…或者NOTBE114(3)使用字符匹配查询LIKE…或NOTLIKE…。%:代表任意长度的字符串。_:代表任意单个字符。【例6-22】查询所以姓王的学生情况。命令如下:SELECT*FROM学生WHERE姓名LIKE'王%'结果如图6.19所示。图6.19(3)使用字符匹配查询LIKE…或NOTLIKE…。图6115(4)空值查询ISNULL或ISNOTNULL。【例6-23】查询学生表系部编号不为NULL的情况。命令如下:SELECT*FROM学生WHERE系部编号ISNOTNULL结果如图6.20所示。
图6.20(4)空值查询ISNULL或ISNOTNULL。图6.116(5)确定集合查询IN或NOTIN。【例6-24】查询系部编号为”2”或”3”的学生情况。命令如下:SELECT*FROM学生WHERE系部编号IN('2','3')结果如图6.21所示。图6.21(5)确定集合查询IN或NOTIN。图6.21117【主要命令格式】SELECT...FROM…[WHERECondition]【命令说明】(1)SELECT短语后主要书写计算表达式和函数。(2)计算检索的函数主要有:COUNT(DISTINCT|ALL)*)——统计记录个数。SUM(DISTINCT|ALL)<ColumnName>)——计算一数值列的总和。AVG(DISTINCT|ALL)<ColumnName>)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四氟丙烯项目合作计划书
- 2025年制动装置项目发展计划
- 2025年矫味剂合作协议书
- 慢性疲劳的营养支持
- 糖尿病患者的营养食谱
- 昏迷状态护理查房
- 辽宁省2025秋九年级英语全册Unit8ItmustbelongtoCarla课时2SectionA(3a-3c)课件新版人教新目标版
- 2025年驾校学车项目合作计划书
- 肺炎临床护理课件
- 足部护理的日常实践
- 2025全国交管12123学法减分必考题库和答案(完整版)
- 市妇幼保健院关于调整实验室质量管理委员会通知
- 24秋国家开放大学《计算机系统与维护》实验1-13参考答案
- AQ 2049-2013 地质勘查安全防护与应急救生用品(用具)配备要求
- SLT800-2020河湖生态系统保护与修复工程技术导则
- 贵州省黔东南州2022-2023学年七年级上学期期末文化水平测试数学试卷(含答案)
- 小品聪明的小明小明同学台词
- 《思想道德与法治》材料分析题
- CQI-12特殊过程:涂装系统评估表(中文第三版)
- 套筒窑工艺控制
- GB/T 2975-2018钢及钢产品 力学性能试验取样位置及试样制备
评论
0/150
提交评论