计算机二级 第5章关系数据库标准语言SQL_第1页
计算机二级 第5章关系数据库标准语言SQL_第2页
计算机二级 第5章关系数据库标准语言SQL_第3页
计算机二级 第5章关系数据库标准语言SQL_第4页
计算机二级 第5章关系数据库标准语言SQL_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

第5章关系数据库标准语言SQL,SQL(StructuredQueryLanguage-结构化查询语言),前言,当表中的记录较少,如几条、几十条记录时,通过浏览窗口或LOCATE、SEEK查找命令可以很快查到符合条件的记录。但当表较大,有几百条、几千条甚至上万条记录时,再使用浏览窗口就非常困难,而通过SEEK或LOCATE命令只能显示本次查找结果,不能保留。建立数据库的目的不仅仅是为了存储数据,更重要的是利用数据库技术来处理这些数据,以得到这些数据所包含的信息。表的查询是数据处理的重要工作之一,在很多时候,用户所需要的只是大量数据中的一部分而已。本章主要介绍关系数据库标准语言SQL。,5.1SQL概述,SQL标准是1986年10月由美国ANSI公布的,ISO于1987年6月正式采纳为国际标准SQL89SQL92SQL语言的特点1.SQL是一种一体化的语言,包含数据定义、数据查询、数据操纵和数据控制等功能,可以完成数据库活动中的全部工作2.SQL是一种高度非过程化的语言3.SQL语言非常简洁4.SQL语言可直接以命令方式交互使用,也可嵌入到程序设计语言中,SQL命令动词,5.2查询功能,SQL语言的核心是查询。SQL语言的查询命令也称作SELECT命令,它的基本形式由SELECTFROMWHERE查询块组成,多个查询块可嵌套执行。SELECTALL|DISTINCTAS列名字段名AS列名,FROMINNER|LEFTOUTER|RIGHTOUTER|FULLOUTERJOINONWHEREANDGROUPBY,HAVINGORDERBYASC|DESCINTO|TOFILEADDITIVE|TOPRINTERPROMPT|TOSCREEN,SELECT说明要查询的数据;FROM说明要查询的数据来自哪些表,可基于单表也可基于多表进行查询WHERE说明查询条件,即选择元组的条件GROUPBY用于对查询结果进行分组HAVING跟随GROUPBY语句使用,用于限定分组必须满足的条件ORDERBY用于对查询的结果进行排序,示例表:xj、cj、kc表,包含如下字段,5.2.1简单查询例5.1:从学籍表中查找姓名字段SELECT姓名FROMXJ从成绩表中查找出课程号字段SELECT课程号FROMCJSELECTDISTINCT课程号FROMCJDISTINCT用于去掉查询结果中的重复值,例5.2:检索学籍表中所有元组和字段SELECT*FROMXJ例5.3:检索成绩表中成绩大于70的学生学号和成绩SELECT学号,成绩FROMCJWHERE成绩70,例5.4:查询XJ表中,出生日期在1988-1-1之前的学生的姓名和家庭住址select姓名,家庭住址fromxjwhere出生日期=70),注意:当FROM之后的多个关系中含有相同的属性名时,这时必须用关系前缀指明属性所属的关系,如xj.学号,cj.课程号等。点号前面是关系名(表名),后面是属性名(表中的字段名)。,5.2.3嵌套查询,这类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。例如,当检索一个关系中的元组时,它的条件依赖于相关的另一个关系中的元组的属性值。例5.8:查询成绩不及格同学的家庭住址SELECTdistinct家庭住址fromxjwhere学号in(select学号fromcjwhere成绩=ANY(SELECT成绩FROMCJWHERE学号=“2003010101”)例5.30查找出成绩大于学号为2003010101同学所有科目成绩的学生成绩信息。FROMCJWHERE成绩=ALL(SELECT成绩FROMCJWHERE学号=“2003010101”),5.2.12超连接查询,在新的SQL查询中支持两个新的关系连接运算符,原来的连接是只有满足连接条件,相应的结果才会出现在结果表中;而这两个新的连接运算是,首先保证一个表中满足条件的元组都在结果表中,然后将满足连接的元组与另一个表的元组进行连接,不满足连接条件的则应将来自另一表的属性值为空值。超连接分左连接和右连接,左连接是在结果表中包含第一个表中满足条件的所有记录;如果结果表是在连接条件上匹配的元组,则第二个表返回相应值,否则第二个表返回空值;右连接是在结果表中包含第二个表中满足条件的所有记录;如果结果表是在连接条件上匹配的元组,则第一个表返回相应值,否则第一表返回空值。,VF中超连接的语法格式为:SELECTFROM表名INNER|LEFT|RIGHT|FULLJOIN表名ON连接条件WHERE例5.31查询相应学号同学的课程名,任课教师和科目成绩。SELECTCJ.学号,KC.课程名,KC.任课教师,CJ.成绩FROMCJJOINKCONCJ.课程号=KC.课程号,例5.32左连接(查询相应学号同学的课程名,任课教师和科目成绩。)SELECTCJ.学号,KC.课程名,KC.任课教师,CJ.成绩FROMCJLEFTJOINKCONCJ.课程号=KC.课程号例5.33右连接(查询相应学号同学的课程名,任课教师和科目成绩。)SELECTCJ.学号,KC.课程名,KC.任课教师,CJ.成绩FROMCJRIGHTJOINKCONCJ.课程号=KC.课程号,例5.34全连接(查询相应学号同学的课程名,任课教师和科目成绩。)SELECTCJ.学号,KC.课程名,KC.任课教师,CJ.成绩FROMCJFULLJOINKCONCJ.课程号=KC.课程号,5.2.13集合的并运算,SQL支持集合的并(UNION)运算,即可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果。但是要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域(相同的数据类型和取值范围),例如:查询学号为2003010101和2003010110两位同学的信息。SELECT*FROMCJWHERE学号=2003010101UNIONSELECT*FROMCJWHERE学号=2003010110,5.2.14VFP中SQLSELECT的几个特殊选项,1.只显示前几项记录TOP数值表达式PERCENTORDERBY例5.35查询CJ表中课程号001前3名的学生成绩信息SELECT*TOP3FROMCJWHERE课程号=001ORDERBY成绩DESC例5.36显示成绩最高的那50%学生的成绩信息SELECT*TOP50PERCENTFROMCJORDERBY成绩DESC,2.将查询结果存放到数组中使用INTOARRAY数据名例:将学号为”2003010101”同学的成绩信息放到SZ数组中SELECT*FROMCJINTOARRAYSZWHERE学号=2003010101“3.将查询结果存放在临时文件中使用INTOCURSOR例:将学号为”2003010101”同学的成绩信息放到临时文件aaa中SELECT*FROMCJINTOCURSORaaaWHERE学号=2003010101“,4.将查询结果存放到永久表中INTODBF|TABLE表名将学号为”2003010101”同学的成绩信息放到表bbb中SELECT*FROMCJINTOTABLEbbbWHERE学号=2003010101“5.将查询结果存放到文本文件中TOFILE文件名ADDITIVE6.将查询结果直接输出到打印机TOPRINTERPROMPT,5.3操作功能,操作功能是指对数据库中数据的操作功能,主要包括数据的插入、更新和删除3方面的内容。5.3.1插入数据格式1:INSERTINTO表名(字段名列表)VALUES(表达式列表)格式2:INSERTINTO表名FROMARRAY数组名FROMMEMVAR注:在表的末尾插入数据同APPEND命令,5.3.2更新数据格式为:UPDATE表名SET字段名=表达式WHERE条件例:将CJ表中课程号为001的成绩减去5分。UPDATECJSET成绩=成绩-5WHERE课程号=0015.3.3删除数据格式为:DELECTFROM表名WHERE条件注:该删除为逻辑删除。,5.4定义功能,定义功能包括数据库的定义、表的定义、视图的定义、存储过程的定义、规则的定义和索引等若干部分。5.4.1表的定义格式为:CREATETABLE|DBF表名(字段名类型(宽度),)NULLNOTNULLCHECK逻辑表达式ERROR信息提示DEFAULT表达式PRIMARYKEY|UNIQUE,5.4.2表的删除格式为:DROPTABLE表名5.4.3表结构的修改格式1:ALTERTABLE表名ADDALTERCOLUMN字段名类型(宽度)格式2:ALTERTABLE表名ALTERCOLUMN字段名NULLNOTNULLSETDEFAULT表达式SETCHECK逻辑表达式ERROR信息提示DROPDEFAULTDROPCHECK格式3:ALTERTABLE表名DROPCOLUMN字段名,5.4.4视图的定义,在VF中,视图是一个定制的虚拟表,可以是本地的、远程的或带参数的。可以引用一个或多个表,或引用其他视图。视图是可更新的。创建视图的格式为:CREATEVIEW视图名AS查询语句查询语句说明和限定了视图中的数据;视图的字段名将与查询语句中指定的字段名或表中的字段名同名。,1.从单个表派生出的视图例:从XJ表中查找所有学生的学号,姓名和家庭住址生成视图v_xjCREATEVIEWv_xjASSELECT学号,姓名,家庭住址FROMXJ2.从多个表派生出的视图例:从XJ表,CJ表和KC表中查找每位同学的学号,姓名,性别,家庭住址,课程名,任课教师和成绩生成视图v_xscjbCREATEVIEWv_xscjbASSELECTXJ.学号,XJ.姓名,XJ.性别,XJ.家庭住址,KC.课程名,KC.任课教师,CJ.成绩FROMXJ,CJ,KCWHEREXJ.学号=CJ.学号ANDCJ.课程号=KC.课程号,3.视图中的虚字段例:定义一个视图,它包含XJ表中的学号,姓名,年龄,政治面貌字段。CREATEVI

温馨提示

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

评论

0/150

提交评论