【网学网提醒】:网学会员鉴于大家对十分关注,论文会员在此为大家搜集整理了“VF二级培训讲义_(SQL查询、查询设计器、SQL数据表的操...”一文,供大家参考学习
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
第三部分关系数据库标准语言SQL
一、SQL概述
1.1SQL的概念:SQL(StructuredQueryLanguage)是结构化查询语言的简称,它引领着关系数据库的发展方
向,是未来关系数据库发展的标准。1.2SQL的特点:?一体化
?高度非过程化?非常简洁
?直接以命令方式交互使用1.3SQL的主要命令:?数据查询:SELECT
?数据定义:CREATE、DROP、ALTER?数据操纵:INSERT、UPDATE、DELETE
二、使用命令建立SQL查询
2.1查询的概念:查询是从指定的表或视图中提取满足条件的记录,然后按照想得到的输出类型定向输出查询
结果。2.2SQL查询语句格式:
?SELECT:要查询的数据(字段)
?FROM:数据来源(要查询的数据来自哪个或哪些表)?WHERE:查询需要满足的条件
?GROUPBY:对查询的数据进行分组?ORDERBY:对查询结果进行排序
2.3SQL简单查询:
1.在当前数据库当前表中查询某一数据
基本格式:SELECTSelect_ItemFROMTable
其中:Select_Item:字段名列表Table:数据表名称例题2.1:从职工关系中检索所有工资值。实现语句:SELECT工资FROM职工2.在指定数据库指定表中查询某一数据
基本格式:SELECT[Alias.]Select_ItemFROM[DatabaseName!]Table
例题2.2:从订货管理数据库中的职工数据表中检索所有工资值。实现语句:SELECT职工.工资FROM订货管理数据库!职工3.在当前数据库当前表中查询所有数据
基本格式:SELECT*FROMTable
例题2.3:从当前数据库中当前数据表中检索所有数据。实现语句:SELECT*FROM职工
4.在当前数据库当前表中查询所有数据(不允许内容重复)
基本格式:SELECT[ALL|DISTINCT]Select_ItemFROMTable
例题2.4:从当前数据库中当前数据表中检索所有不重复的工资数据。...实现语句:SELECTDISTINCT工资FROM职工
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
5.在当前数据库当前表中进行条件查询
基本格式:SELECTSelect_ItemFROMTableWHEREJoinCondition
例题2.5:在当前数据库当前表中,查询工资大于1210元职工的仓库号Select仓库号from职工where工资>1210
实现语句:SELECT仓库号FROM职工WHERE工资>1210
例题2.6:查询在仓库“WH1”或“WH2”工作,并且工资少于1250元的职工工号
实现语句:SELECT职工号FROM职工WHERE工资<1250AND(仓库号=”WH1”OR仓库号=”WH2”)完整格式:
SELECT[ALL|DISTINCT][Alias.]Select_Item|*FROM[DatabaseName!]Table[WHEREJoinCondition]2.4SQL联接查询:
联接查询的含义:联接查询是一种基于多个关系的查询,即将多个数据表中数据构成一个查询集合,并在其中查询出符合要求的记录。
例题2.7:找出工资多于1230元的职工号和他们所在的城市。
实现语句:SELECT职工号,城市FROM职工,仓库WHERE工资>1230AND(职工.仓库号=仓库.仓库号)特别注意:
?职工.仓库号=仓库.仓库号是连接条件
?如果在FROM之后有两个关系,则这两个关系之间肯定有一种联系,否则无法构成检索表达式
例题2.8:找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
实现语句:SELECT职工号,城市FROM职工,仓库WHERE面积>400AND(职工.仓库号=仓库.仓库号)2.5SQL嵌套查询:
例题2.9:哪些城市至少有一个仓库的职工工资为1250元?
实现语句:SELECT城市FROM仓库WHERE仓库号in(SELECT仓库号FROM职工WHERE工资=1250)
例题2.10:查询所有职工的工资都多于...1210元的仓库信息。
实现语句:SELECT*FROM仓库WHERE仓库号NOTIN(SELECT仓库号FROM职工WHERE工资<=1210)例题2.11:找出和职工E4挣同样工资的所有职工。
实现语句:SELECT职工号FROM职工WHERE工资=(SELECT工资FROM职工WHERE职工号=”E4”)2.6SQL几个特殊运算符:
?BETWEEN…AND:…和…之间
?LIKE:字符串匹配运算符
例题2.12:检索出工资在1220元到1240元范围内的职工信息。
实现语句:SELECT*FROM职工WHERE工资BETWEEN1220AND1240
例题2.13:从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。实现语句:SELECT*FROM供应商WHERE供应商名LIKE“%公司”通配符:
?%:表示任意多个字符(含0个)?_:表示一个字符2.7SQL排序:
基本格式:ORDERBYOrder_Iten[ASC|DESC][,Order_Iten[ASC|DESC]…]例题2.14:按职工的工资值升序检索出全部职工信息。
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
实现语句:SELECT*FROM职工ORDERBY工资注意:默认为升序
例题2.15:先按仓库号排序,再按工资排序并输出全部职工信息。实现语句:SELECT*FROM职工ORDERBY仓库号,工资
2.8SQL计算查询:1.用于检索的函数:
COUNT()—计数SUM()—求和AVG()—计算平均值MAX()—求最大值MIN()—求最小值2.例子:
例题2.16:找出供应商所在地的数目。
实现语句:SELECTCOUNT(DISTINCT地址)FROM供应商例题2.17:求出供应商数据表中记录数目。实现语句:SELECTCOUNT(*)FROM供应商例题2.18:求支付的工资总数。
实现语句:SELECTSUM(工资)FROM职工
例题2.19:求北京和上海的仓库职工的工资总和。
实现语句:SELECTSUM(工资)FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE城市=”
北京”OR城市=”上海”)例题2.20:求所有职工的工资都多于1210元的仓库的平均面积。
实现语句:SELECTAVG(面积)FROM仓库WHERE仓库号NOTIN(SELECT仓库号FROM职工WHERE工
资<=1210)例题2.21:求在WH2仓库工作的职工的最高工资值。
实现语句:SELECTMAX(工资)FROM职工WHERE仓库号=”WH2”2.9SQL分组与计算查询:
基本格式:GROUPBYGroupColumn[,GroupColumn…]
例题2.22:求每个仓库的职工的平均工资。
实现语句:SELECT仓库号,AVG(工资)FROM职工GROUPBY仓库号2.10SQL的几个特殊选项:1.将查询结果存放到数组中:语句格式:INTOARRAYArrayName
例题:将查询到的职工放到数组TEMP中。SELECT*FROM职工INTOARRAYtemp2.将查询结果存放到临时文件中语句格式:INTOCURSORCursorName
临时文件是一只读的DBF文件,可以像一般的DBF文件一样使用,但只读。当关闭该文件时该文件会自动删除。
例题:将查询到的职工放到DBF文件TEMP中。SELECT*FROM职工INTOCURSORtemp3.将查询结果存放到永久表中
语句格式:INTODBF|TABLETableName
例题:将查询到的职工放到DBF文件TEMP中。SELECT*FROM职工INTODBFtemp
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
4.将查询结果存放到文本文件中语句格式:TOFILEFileName
例题:将查询到的职工放到文本文件TEMP中。SELECT*FROM职工TOFILEtemp5.将查询结果直接输出到打印机中语句格式:TOPRINT[PROMPT]例题:SELECT*FROM职工TOPRINT
三、利用查询设计器查询
3.1查询设计器:
1.建立查询的方法:
?使用“项目管理器”建立查询;?使用“新建”对话框建立查询;
?使用命令CREATEQUERY命令建立查询;?通过直接编辑.qpr文件建立。
2.查询设计器:
?字段:选择需要显示的字段;?联接:编辑联接条件;?筛选:指定查询条件;
?排序依据:用于指定排序字段;?分组依据:用于分组;
?杂项:指定是否要重复记录及列在前面的记录,与DISTINCT及TOP对应。
3.2查询设计器的局限性:利用查询设计器不能够设计出所有的查询,如:嵌套查询、查询去向到数组等。3.3运行查询:1.查询运行方法:
?使用“项目管理器”运行;?使用命令运行:格式:DOQueryFile
注意:使用命令运行查询时,必须给出查询文件的扩展名qpr,如:DOabc.qpr
如果不给出扩展名(DOabc),VFP将把命令解释为DOabc.prg,即执行程序文件。
2.查询去向:
?浏览:在“浏览(BROWSE)”窗口显示;?临时表:命名的临时文件;?表:命名表;?图形:统计图;
?屏幕:屏幕直接输出(类似LIST);?报表:报表文件.frx?标签:标签文件.lbx
四、数据表记录的SQL操作:
4.1插入:
标准格式:INSERTINTOdbf_name[(fname1[,fname2,…])]VALUES(eExoression1[,eExoression2,…])
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
VFP特殊格式:INSERTINTOdbf_nameFROMARRAYArrayName|FROMMEMVAR例题4.1:往订购单关系中插入元组(”E7”,”S4”,”OR01”,2001/05/25)。实现语句:INSERTINTO订购单VALUE(”E7”,”S4”,”OR01”,{^2001-05-25})例题4.2:往订购单关系中插入元组(”E7”,”OR01”)。
实现语句:INSERTINTO订购单(职工号,订购单号)VALUE(”E7”,”OR01”)注意:
?用INSERT命令在数据表中插入数据时,该数据表事先可以不必打开;
?当数据表设置了“主索引”或“候选索引”时,不能用以前的INSERT与APPEND来添加记录,只能使
用INSERTINTO添加。(实际有出入)
4.2更新:格式:
UPDATETableNameSETColumn_Name1=eExoression1[,Column_Name2=eExoression2…][WHERECondition]例题3.4:给WH1仓库的职工提高10%的工资。
实现语句:UPDATE职工SET工资=工资+工资*0.1WHERE仓库号=”WH1”等价语句:replace工资with工资*1.1for仓库号=”WH1”4.3删除:
格式:DELETEFROMTableName[WHERECondition]
例题3.5:删除仓库关系中仓库号值是WH2的元组。实现语句:DELETEFROM仓库WHERE仓库号=”WH2”
注意:在VFP中,SQLDELETE命令同样是逻辑删除,如果要物理删除记录同样需要使用PACK命令。
五、数据表结构的SQL操作:
5.1表定义:
1.建立数据表简单操作
基本格式:CREATETABLE|DBFTableName[NameLongTableName]|[FREE]
(FieldName1FieldType[(nFieldWidth[,nPrecision])]…)其中:TableName:新建数据表的表名称
FieldName:字段名
FieldType:用字母表示的字段类型NFieldWidth:字段总宽度NPrecision:小数位数FREE:建立自由表例题5.1:用SQL命令建立“订货管理1”数据库,然后建立“仓库1”数据表。实现语句:CREATEDATABASE订货管理1
CREATETABLE仓库1(仓库号C(5),城市C(10),面积I)2.数据表字段有效性设置方法...
基本格式:CREATETABLE|DBFTableName1[NameLongTableName][FREE]
(FieldName1FieldType[(nFieldWidth[,nPrecision])]
[CHECKlExpression[ERRORcMessageText1]]…)
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
例题5.2:用SQL命令建立“订货管理1”数据库,然后建立“仓库1”数据表,并定义面积字段的有效
性规则为[面积必须大于0]。
实现语句:CREATEDATABASE订货管理1
CREATETABLE仓库1(仓库号C(5),城市C(10),面积I;CHECK(面积>0)ERROR“面积必须大于0”)3.数据表字段默认值设置方法...
基本格式:CREATETABLE|DBFTableName1[NameLongTableName][FREE]
(FieldName1FieldType[(nFieldWidth[,nPrecision])]
[DEFAULTeExpression]…)
例题5.3:建立数据表“仓库1”,并将“仓库1”数据表的“面积”字段的默认值设置为200。实现语句:CREATETABLE仓库1(仓库号C(5),城市C(10),面积IDEFAULT200)4.数据表字段主关键字或候选索引设置方法.........
基本格式:CREATETABLE|DBFTableName1[NameLongTableName][FREE]
(FieldName1FieldType[(nFieldWidth[,nPrecision])]
[PRIMARYKEY|UNIQUE]…)注意:UNIQUE在此处是候选索引
例题5.4:建立数据表“仓库1”,并将“仓库号”字段设置为主关键字。实现语句:CREATETABLE仓库1(仓库号C(5)PRIMARYKEY,城市C(10),面积I)5.2表删除:
基本格式:DROPTABLE|DBFTableName例题5.5:删除数据表“仓库1”。实现语句:DROPTABLE仓库1
5.3表结构修改:
1.添加新字段、修改已有字段并设置字段级相关规则:...
基本格式:
ALTERTABLETableNameADD|ALTER[COLUMN]FieldNameFieldType[(nFieldWidth[,nPrecision])]
[NULL|NOTNULL]&;&;字段是否允许为空[CHECKlExpression[ERRORcMessageText]]&;&;设置字段的有效性规则[DEFAULTeExpression]&;&;设置字段的有效性规则[PRIMARYKEY|UNIQUE]&;&;设置字段索引类型例题5.6:为订购单1表增加一个货币类型的总金额字段。
实现语句:ALTERTABLE订购单1ADD总金额YCHECK总金额>0ERROR“总金额应该大于0”例题5.7:将订购单1表的订购单号字段的宽度由原来的5改为6。实现语句:ALTERTABLE订购单1ALTER订购单号C(6)2.定义、修改、删除字段级有效性规则和默认值定义:...基本格式:
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
ALTERTABLETableNameALTER[COLUMN]FieldNameNULL|NOTNULL&;&;字段是否允许为空ALTERTABLETableNameALTER[COLUMN]FieldNameSETCHECKlExpression[ERRORcMessageText]ALTERTABLETableNameALTER[COLUMN]FieldNameDROPCHECK
ALTERTABLETableNameALTER[COLUMN]FieldNameSETDEFAULTeExpressionALTERTABLETableNameALTER[COLUMN]FieldNameDROPDEFAULT例题5.8:修改(定义)总金额字段的有效性规则。
实现语句:ALTERTABLE订购单1ALTER总金额SETCHECK总金额>100ERROR“总金额应该大于100”例题5.9:删除总金额字段的有效性规则。
实现语句:ALTERTABLE订购单1ALTER总金额DROPCHECK3.删除字段、修改字段名,定义、修改、删除表一级的有效性规则:...基本格式:
ALTERTABLETableNameDROP[COLUMN]FieldName
ALTERTABLETableNameRENAME[COLUMN]FieldName1TOFieldName2ALTERTABLETableNameSETCHECKlExpression[ERRORcMessageText]ALTERTABLETableNameDROPCHECK
例题5.10:将订购单1表的总金额字段名改为金额。实现语句:ALTERTABLE订购单1RENAME总金额TO金额例题5.11:删除订购单1金额字段。实现语句:ALTERTABLE订购单1DROP金额
&;&;设置字段的有效性规则&;&;删除字段的有效性规则&;&;设置字段的默认值&;&;删除字段的默认值
&;&;删除字段&;&;修改字段名
&;&;设置表的有效性规则&;&;删除表的有效性规则
六、视图:
6.1视图的命令操作:
1.视图的定义格式:
格式:CREATEVIEWViewNameASSelectStatement
其中:SelectStatement:查询语句,用于限定视图中的数据2.从单个表派生出视图:构成视图的内容来源于单个表。
例题6.1:利用“职工”数据表,建立包含职工号与仓库号的视图。实现语句:CREATEVIEWewASSELECT职工号,仓库号FROM职工注:视图一旦定义,就可以和基本表一样进行各种查询与修改。3.从多个表派生出视图:
例题6.2:利用“职工”和“仓库”数据表,建立包含职工号、仓库号、城市、面积、工资的视图。实现语句:CREATEVIEWewAS;
SELECT职工号,职工.仓库号,城市,面积,工资FROM职工,仓库WHERE仓库.仓库号=职工.仓库号注:视图一旦定义,就可以和基本表一样进行各种查询与修改。4.删除视图:
基本格式:DROPVIEWViewName例题6.3:删除视图ew。实现语句:DROPVIEWdw
重庆市普通高校专转本统一选拔考试系数据库标准语言SQL
5.关于视图的说明:?视图可以更新;
?视图不含真正的数据,仅是原表的一个窗口;
?在视图中可以进行查询操作,但视图的插入、更新操作有一定的限制;
?如果一个视图来源于单个表,则可以进行插入与更新操作,不能进行删除操作;?如果一个视图来源于多个表,则插入、更新与删除操作都不能进行。?可以从一个表或多个相关联的表中提取有用信息;?可以用来更新表,并将结果永久保存在磁盘上;?只有在包含视图的数据库打开时,才能使用视图。6.2建立视图:1.建立视图的方法:
?使用“项目管理器”建立视图;?使用“新建”对话框建立视图;
?使用命令CREATEVIEW命令打开视图设计器建立视图;?通过直接使用命令CREATEVIEW…AS…建立。2.视图设计器与查询设计器的区别:
?视图建立后直接保存在数据库中,在磁盘上没有相应文件,查询要形成.qpr文件;?视图可以更新,查询不能更新(除非重新查询);?查询有“查询去向”,视图没有。6.3视图的分类:
?本地视图:使用当前数据库中的表建立的视图。?远程视图:使用非当前数据库中的表建立的视图。