第4章结构化查询语言SQL和报表.ppt
《第4章结构化查询语言SQL和报表.ppt》由会员分享,可在线阅读,更多相关《第4章结构化查询语言SQL和报表.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章结构化查询语言SQL和报表 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望4.1SQL语言的基本概述结构化查询语言(StructuredQueryLanguage,简称SQL)SQL是用于对存放在计算机数据库中的数据进行组织、管理和检索的工具,是一种用于和数据库进行交互通信的计算机语言。SQL是1974年由Boyce和Chamberlin提出的,并在IBM公司研制的SystemR上首次实现了这种语言,由于它的功能丰富,使用方式灵活和语言简洁易学等突出特点,很
2、受计算机界的欢迎。现在SQL语言已成为关系型数据库操纵语言的国际标准。VFP提供了SQL语言支持2022/12/624.1.1SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构,其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。在SQL语言中,一个关系就对应于一个表,基本表本身是独立存在的表,对应一个存储文件;存储文件的逻辑结构组成了关系型数据库的内模式。视图是从基本表或其他视图导出的表,视图只是一个虚表。在用户看来,视图和基本表都是关系,而存储文件对用户是透明的。2022/12/634.1.2SQL的基本功能SQL语言由3部分组成:数据定义语言DDL(Dat
3、eDefinitionLanguage)。数据操纵语言DML(DateManipulationLanguage)。数据控制语言DCL(DateControlLanguage)。其主要命令如表4-1所示。SQL功能命令数据定义语言DDLCreate、Drop、Alter数据操纵语言DMLSelect、Insert、Update、Delete数据控制语言DCLGrant、Revoke其中,数据定义语言DDL提供了完整的定义数据库所必需的语言工具,用来创建、修改、删除数据库对象;数据操纵语言DML用于查询或者修改数据;数据控制语言DCL用来管理用户的访问权限,由于VFP没有权限管理功能,所以不支持D
4、CL命令。2022/12/644.2 数据定义语言DDL数据定义语言是对关系模式的一级定义,用来定义被存放数据的结构和组织,以及数据项之间的关系。SQL数据定义语言可以用来定义数据表、视图和索引。Create语句:用于定义和生成数据对象,比如创建表、视图和索引。Drop语句:用于删除一个现有的数据对象,比如视图、表、索引。Alter语句:用于改变一个数据库对象。比如对一个表的字段进行删除、添加和修改,或者修改表的结构。2022/12/654.2.1 用Create语句创建基本表命令格式:CREATETABLE表名FREE(宽度,小数)NULLNOTNULLCHECKERRORDEFAULTPR
5、IMARYKEY/UNIQUE,)命令功能:创建数据表的结构。2022/12/664.2.1用Create语句创建基本表(续)命令说明:CREATETABLE表名:指定创建表文件名。FREE:在数据库打开的情况下创建的是自由表。默认在数据库未打开时创建的是自由表,在数据库打开时创建的是数据库表。CHECK:为字段值指定约束条件;ERROR:用来指定当不满足约束条件时显示的出错信息。DFAULT:指定默认的字段值。PRIMARYKEY:指定当前字段为主索引关键字;UNIQUE:指定当前字段为候选索引关键字。NULL/NOTNULL:表示该字段是否可以为空。2022/12/674.2.1用Crea
6、te语句创建基本表(续)【例4.1】在图书馆管理系统中创建dzzl(读者种类)表,包含zlbh(种类编号)、zlmc(种类名称)、jssl(借书数量)、jsqx(借书期限)、bz(备注)几个字段。OPENDATABASE图书馆管理CTEATETABLEdzzl(zlbhc(10)notnull,zlmcc(10)notnull,jsslc(8),jsqxc(8),Bzc(20)若在命令窗口执行MODIFYSTRUCTURE命令,就可以在弹出的对话框中见到dzzl表结构,如图4-2所示。图图4-2 创建的创建的dzzl表结构表结构2022/12/684.2.1用Create语句创建基本表(续)【
7、例4.2】创建一个名为“通讯录”的自由表,包含姓名、工作单位、电话号码、家庭住址4个字段,所得的表预览如图4-3所示。CREATETABLE通讯录FREE(姓名C(10),工作单位C(20),电话号码C(12),家庭住址C(20)BROWSE由于没有向表中添加任何记录,所以在预览时看不见任何的记录。图图4-3 创建的通讯录表创建的通讯录表2022/12/694.2.1用Create语句创建基本表(续)【例4.3】创建一个“图书订单”的数据库,并在此数据库中创建一个“图书”表,图书表含有订单号、图书编号、书名、单价、数量等字段。CREATEDATEBASE图书订单CREATETABLE图书(订单
8、号C(10);DEFAULT10001,图书编号C(10)PRIMARYKEY,;书名C(10),单价N(8,2);数量N(6)CHECK数量=100AND数量=1000;ERROR数量范围在100和1000之间)图图4-4 图书表的索引图图书表的索引图预览此表的设计器可以看见“图书编号”已经被设为主索引,如图4-4所示。2022/12/6104.2.1用Create语句创建基本表(续)【例4.4】在图书订单数据库中建立一个新表“订单”表,含有订单编号、图书编号、客户编号、订货日期、发货日期几个字段。OPENDATABASE图书订单CREATETABLE订单(订单编号C(10)PRIMARYK
9、EY,;客户编号C(10),订货日期D,发货日期D;图书编号C(10),FOREIGNKEY图书编号;TAG图书编号REFERENCES图书)图图4-5 图书表和订单表之间的关系图书表和订单表之间的关系在命令窗口中输入“MODIFYDATABASE订数订单”命令,可在弹出的“数据库设计器”窗口中见到图书表和订单表之间已建立的关系,如图4-5所示。2022/12/6114.2.2用Alter修改基本表命令格式1:ALTER TABLE ADD/ALTERCOLUMN (字段宽度,小数位数)NULLNOT NULL CHECKERROR DEFAULT PRIMARY KEY/UNIQUE REF
10、ERENCESTAG 命令功能:修改表中原有的字段,或者在表中增加新的字段。2022/12/6124.2.2用Alter修改基本表(续)命令说明:ADDCOLUMN(字段宽度,小数位数):增加新字段,并指定新增字段的名称、类型、字段宽度及小数位数。NULLNOTNULL:指定新字段是否接受空值。ALTERCOLUMN(字段宽度,小数位数):修改原有字段,并指定修改后的字段名称、类型、字段宽度及小数位数。其他的参数含义同CREATETABLE。2022/12/6134.2.2用Alter修改基本表(续)【例4.5】修改在例4.2中创建的通讯录表,增加一个“性别”字段,SQL命令如下:ALTERT
11、ABLE通讯录ADDCOLUMN性别C(10)再把表中字段“家庭住址”修改为“工作地址”,SQL命令如下:ALTERTABLE通讯录RENAMECOLUMN家庭住址TO工作地址预览修改后的表如图4-6所示,与图4-3对比就可以发现多出了一个字段“性别”,字段“家庭住址”改为了“工作地址”。图图4-6 修改后的通讯录表修改后的通讯录表2022/12/6144.2.2用Alter修改基本表(续)【例4.6】修改例4.3中创建的图书表,将“书名”字段的宽度改为20且不准为空值。SQL命令如下:OPENDATABASE图书订单ALTERTABLE图书ALTER书名C(20)NOTNULL命令格式2:A
12、LTERTABLEALTERCOLUMNNULLNOTNULLSETCHECKERRORSETDEFAULTDROPCHECKDROPDEFAULT 2022/12/6154.2.2用Alter修改基本表(续)命令功能:删除或者设置字段的默认值或约束条件。命令说明:SETCHECKERROR:为字段设置约束条件。SETDEFAULT:设置默认值。DROPDEFAULT:删除默认值。DROPCHECK:删除约束条件。2022/12/6164.2.2用Alter修改基本表(续)【例4.7】在例4.3创建的图书表中,为“图书编号”字段设置一个默认值200601并删除数量的约束条件,SQL命令如下:A
13、LTER TABLE 图 书 ALTER 图 书 编 号 SETDEFAULT200601ALTERTABLE图书ALTER数量DROPCHECK2022/12/6174.2.2用Alter修改基本表(续)命令格式3:ALTERTABLEDROPCOLUMNADDPRIMARYKEYTAGDROPPRIMARYKEYADDUNIQUETAGDROPUNIQUETAGSETCHECKERRORDROPCHECKADDFOREIGNKEYTAGREFERENCESTAGDROPFOREIGNKEYTAGSAVERENAMECOLUMNTO 2022/12/6184.2.2用Alter修改基本表(续
14、)命令功能:删除表中的字段、设置或删除表的主索引、候选索引、对字段重新命名或者删除指定的字段的约束条件。命令说明:DROPCOLUMN:删除指定的字段。ADDPRIMARYKEYTAG:建立主索引。DROPPRIMARYKEY:删除主索引。ADDUNIQUETAG:建立候选索引。DROPUNIQUETAG:删除候选索引。ADDFOREIGNKEYTAG:建立外索引。REFERENCESTAG:指定建立关联的父表。DROPFOREIGNKEYTAGSAVE:删除外索引。RENAMECOLUMNTO:对字段重新命名。2022/12/6194.2.2用Alter修改基本表(续)【例4.8】在例4.3
15、创建的图书表中,为“书名”创建一个候选索引,并且删除“数量”字段,如图4-7所示。SQL语句如下:ALTERTABLE图书ADDUNIQUE书名;ALTERTABLE图书DROPCOLUMN数量图图4-7 例例4.8图图在图4-7中,字段“数量”被删除,并创建候选索引“书名”。2022/12/6204.2.2用Alter修改基本表(续)【例4.9】在第1章创建的“图书管理系统”的dzzl中,为jssl创建一个默认值15,当输入有错误时就会显示“值为15”,删除表中的候选索引。SQL语句如下:ALETERTABLEdzzlALTERjsslSETDEFAULT15;ERROR“值为15”;ALE
16、TERTABLEdzzlDROPUNIQUETAGzlbh 2022/12/6214.2.3用DROP命令删除一个表随着数据库设计的变化,数据库的结构也在不断的变化,新建的表就会不断地代替旧表,这时某些旧表就不再需要了,可以用DROP TABLE 命令删除它。命令格式:DROP TABLE 命令功能:删除一个表,包括在这个表上建立的索引。命令说明:指定被删除的表。【例4.10】删除在例4.2中创建的通讯录表,SQL命令如下:DROPTABLE通讯录 2022/12/6224.3数据操纵语言DML数据操纵实际上就是管理数据,这也是创建表的基本目的,主要是对关系中的具体数据进行查询、更新、删除和插
17、入,但不能够改变数据的结构。DML命令如表4-2所示。命令功能UPDATE更新数据库中的已有数据DELETE用于从数据表中删除数据INSERT增加一个新的数据到表中SELECT数据查询表表4-2 DML的命令及功能的命令及功能2022/12/6234.3.1INSERT命令用CREATETABLE命令创建一个表后,创建的表中没有具体的数据,可以用INSERT命令向表中插入数据。命令格式:INSERTINTO表名(列名1,列名2,)VALUES(,)命令说明:INTO表名:指定接受新数据的目标表。VALUES:指明增加记录的字段值。向表中添加的数据必须与指定字段名的类型相匹配。字符串要用单引号或
18、者双引号括起来,日期型可用CTOD函数处理或者直接引用。2022/12/6244.3.1INSERT命令(续)【例4.11】在例4.4创建的订单表中插入一个新的记录:订单编号:200601读者编号:10001订货日期:2006-02-1发货日期:2006-02-10图书编号:100012使用INSERT语句把该记录插入到订单表中,SQL语句如下:INSERTINTO订单(订单编号,读者编号,订货日期,发货日期,图书编号);VALUES(200601,10001,CTOD(02-1-06),CTOD(02-10-06),100012)2022/12/6254.3.2UPDATE命令UPDATE语
19、句用来更新表中的记录。命令格式:UPDATESET=,=WHERE命令说明:UPDATE:指明要修改的记录的表的名称。SET:指明更新的字段名和字段值。WHERE:限定要修改的行,如果没有WHERE子句,该字段下的所有字段值都将被新值替换。2022/12/6264.3.2UPDATE命令(续)【例4.12】把第1章中创建的SJ表中“价格”大于30元且“页数”大于300的图书的“备注”改为“珍贵图书”,SQL命令如下:UPDATESJSETBZ=珍贵图书WHEREJG30ANDYS300若把价格大于30元的或页数大于300页的图书的备注(bz)改为珍贵图书,SQL命令如下:UPDATESJSET
20、BZ=珍贵图书WHEREJG30ORYS300 2022/12/6274.3.3DELETE命令DELETE命令用来删除一行或者多行记录。命令格式:DELETEFROMWHERE命令说明:FROM子句:指出将删除的目标表。WHERE:指明被删除的记录满足的条件,若没有WHERE子句则删除所有记录。【例4.13】在第1章创建的SJ表中,把“价格”大于30元且“页数”大于300的图书记录删掉,SQL语句如下:DELETEFROMSJWHEREJG30ANDYS3002022/12/6284.4查询和SELECT命令SELECT是数据查询命令。SELECT命令虽然属于数据操纵范围,但它是SQL的核心
21、,在SQL命令中使用的是最多的,我们将它和查询单独作为一节。VFP6.0的查询设计器或SELECT-SQL语句可用来方便地检索存储在表或者视图中的信息。利用查询设计器可以搜索满足条件的记录,并且可将查询保存在.qpr文件中。2022/12/6294.4.1创建和添加查询1启动查询设计器若要打开查询设计器,应首先打开一个要查询的数据库,然后采用以下方式之一:(1)“文件”菜单启动查询设计器(2)从“工具”菜单启动查询设计器(3)使用CREATEQUERY命令打开查询设计器2022/12/630(1)“文件”菜单启动查询设计器从“文件”菜单中选择“打开”命令,启动“打开”对话框,并在对话框的“文件
22、类型”中选择“项目”类型,再选取要打开的项目名称,最后单击“确定”按钮,出现项目管理器对话框。在项目管理器中选择“数据”选项卡,再选取“查询”选项。单击“新建”按钮,此时出现“添加表或视图”对话框,然后从数据库下拉列表框中选择待查询的数据库名称。再从“选定”栏中选择“表”或“视图”,本例选择了“表”。从“数据库中的表”列表框中选择要添加的表。重复这一步骤,直到选取了所需要的全部表。单击“关闭”按钮,返回“查询设计器”窗口,如图4-8所示。2022/12/631(1)“文件”菜单启动查询设计器(续)图4-8查询设计器2022/12/632(2)从“工具”菜单启动查询设计器在VFP6.0主菜单中,
23、选择“工具”,指向“向导”,选择“查询”,弹出“向导选取”对话框,再选择“查询向导”,可根据查询向导的提示创建查询。(3)使用CREATEQUERY命令打开查询设计器在命令窗口中输入CREATEQUERY即可打开查询设计器。2022/12/6332创建查询(1)查询设计器查询设计器的窗口如图4-8所示。在查询设计器上半部分的窗口中,列出用户已选定的要查询的表或视图。表或视图之间的连线表示表之间的连接关系。查询设计器下半部分的窗口中有6个选项卡:“字段”:选定包含在查询结果中的字段。“联接”:确定各数据表或视图之间的连接关系。“筛选”:相当于命令SETFILTERTO,利用过滤的方法查找一个特定
24、的数据子集。“排序依据”:决定查询结果输出中记录或行的排列顺序“分组依据”:所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组的计算。“杂项”:指定是否要对重复记录进行检索,同时是否对记录(返回记录的最大数目或最大百分比)做限制。2022/12/634(2)创建查询的步骤1)按上面介绍的方法打开查询设计器。2)添加出现在查询结果中的表或视图。如本例已打开“图书馆管理”数据库,并已选择添加了Dz.dbf、Jy.dbf和Sj.dbf三个表。3)选定要包含在查询结果中的字段。在“字段”选项卡中,从可用字段列表框中选择需要的字段,即单击需要的字段,再单击“添加”按钮;或者双击需要的
25、字段。4)如果要“可用字段”列表框中的全部字段都包含在查询结果中,可单击“全部添加”按钮;单击“全部移去”按钮,则将已选定的字段(列于选定字段列表框中)全部作废。此时单击“运行”按钮即可看到查询结果。5)保存查询。从“文件”菜单中选择“保存”命令,打开如图4-9所示的“另存为”对话框中,在“保存类型”下拉框中选择“查询”类型,在“保存文档为:”文本框中输入查询文件名,本例取名为“读者借阅”,然后单击“保存”按钮即可。2022/12/635(2)创建查询的步骤(续)图4-9“另存为”对话框2022/12/636(2)创建查询的步骤(续)【例4.14】查询书籍表中的部分信息。将Sj.dbf表添加到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 查询 语言 SQL 报表
限制150内