欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机技术基础(精品).ppt

    • 资源ID:72168107       资源大小:1.03MB        全文页数:100页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机技术基础(精品).ppt

    第三章 结构化查询语言3.1 SQL语言概述语言概述 3.2 SELECT命令基本用法命令基本用法 3.3 查询结果处理查询结果处理 3.4 查询设计器查询设计器 3.5 本章小结本章小结 习题习题1结构化查询语言结构化查询语言(structured query language,SQL)既可以用于大型数据库系统,既可以用于大型数据库系统,也可以用于微型机数据库系统,是关系数据也可以用于微型机数据库系统,是关系数据库的标准语言。库的标准语言。VFP数据库管理系统,除了数据库管理系统,除了具有具有VFP命令,也支持结构查询语言命令。命令,也支持结构查询语言命令。SQL命令利用命令利用Rushmore技术实现优化处理,技术实现优化处理,一条一条SQL命令可以代替多条命令可以代替多条VFP命令。命令。23.1SQL语言概述*4/53.1.1SQL语言的特点SQL语言具有以下特点:1.综合统一综合统一SQL语言集数据库定义语言语言集数据库定义语言(database define language,DDL)、数据操纵语言数据操纵语言(data|base manufacture language,DML)、数据控制语言数据控制语言(database control language,DCL)的功能于一体,的功能于一体,可以独立完成数据库生命周期中的全部活动,包括可以独立完成数据库生命周期中的全部活动,包括定义数据库和表结构,录入数据及建立数据库查询、定义数据库和表结构,录入数据及建立数据库查询、更新、维护和重构以及数据库安全性控制等一系列更新、维护和重构以及数据库安全性控制等一系列操作,这就为数据库应用系统的开发提供了良好的操作,这就为数据库应用系统的开发提供了良好的环境。环境。32.高度非过程化高度非过程化用用SQL语言进行数据操作时,用户只需提出做什么,语言进行数据操作时,用户只需提出做什么,而不必指明怎么做。这不但大大减轻了用户的负担,而不必指明怎么做。这不但大大减轻了用户的负担,而且还有利于提高数据独立性。而且还有利于提高数据独立性。3.面向集合的操作方式面向集合的操作方式SQL语言采用集合操作方式,不仅查找结果可以是语言采用集合操作方式,不仅查找结果可以是记录的集合,而且操作对象的一次插入、删除、更记录的集合,而且操作对象的一次插入、删除、更新也可以是记录的集合。新也可以是记录的集合。4.以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。作为语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方自含式语言,它能够独立地用于联机交互的使用方式,用户可以在键盘上直接输入式,用户可以在键盘上直接输入SQL命令对数据库命令对数据库进行操作。进行操作。4作为嵌入式语言,作为嵌入式语言,SQL语句能够嵌入到高级语言语句能够嵌入到高级语言(例如例如C,FORTRAN,PL/I)程序中,供程序员设计程序中,供程序员设计程序时使用。而在两种不同的使用方式下,程序时使用。而在两种不同的使用方式下,SQL语语言的语法结构基本上是一致的。这种以统一的语法言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方法的做法,为用户设计结构提供两种不同的使用方法的做法,为用户设计程序提供了极大的灵活性与方便性。程序提供了极大的灵活性与方便性。5.语言简洁,易学易用语言简洁,易学易用SQL语言功能极强,但由于设计巧妙,语言十分简语言功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制和数据查洁,完成数据定义、数据操纵、数据控制和数据查询等核心功能只用了询等核心功能只用了9个动词:个动词:CREATE,DROP,ALTER,SELECT,INSERT,UPDATE,DELETE,GRANT,REVOKE。易学易用是易学易用是SQL的最大特点。的最大特点。53.1.2 数据定义语言数据定义语言数据定义语言由数据定义语言由CREATE、DROP和和ALTER命令组命令组成。这成。这3个命令关键字针对不同的数据库对象个命令关键字针对不同的数据库对象(如数如数据库、查询、视图等据库、查询、视图等)分别有分别有3个命令。例如针对表个命令。例如针对表对象的对象的3个命令是建表结构命令个命令是建表结构命令CREATE TABLE、修改表结构命令修改表结构命令ALTER TABLE和删除表命令和删除表命令DROP TABLE。下面就以表结构的这下面就以表结构的这3个命令为例个命令为例进行数据定义语言的讲解。进行数据定义语言的讲解。1 建立表结构命令建立表结构命令CREATE TABLE命令的语法与功能见命令的语法与功能见4.2.3节。节。【例【例3.1】使用命令建立使用命令建立“研究生研究生”自由表,其表结自由表,其表结构及要求由表构及要求由表3.1给出给出6【例【例3.2】使用命令建立数据库使用命令建立数据库XSK,然后在该库中然后在该库中建立建立student表,其表结构及要求由表表,其表结构及要求由表3.2给出。给出。【例【例3.3】在在XSK库中建立库中建立score表,其表结构及要求表,其表结构及要求由表由表3.3给出。给出。【例【例3.4】为为score表添加两个字段:表添加两个字段:“平时平时”字段字段N(5,1)和和“期中期中”字段字段 N(5,1)。ALTER TABLE score ADD 平时平时 N(5,1)ALTER TABLE score ADD 期中期中 N(5,1)【例例3.5】在在score表中,修改表中,修改“期末期末”字段为字段为 N(5,1),并设置并设置“平时平时”、“期中期中”和和“期末期末”字段的字段的值小于等于值小于等于100。ALTER TABLE score ALTER 期期末末 N(5,1)CHECK 期末期末=100 ERROR 分数不能大分数不能大于于100!ALTER TABLE score ALTER 期中期中 N(5,1)CHECK 期中期中=100 ERROR 分数不能大于分数不能大于100!7ALTER TABLE score ALTER 平时平时 N(5,1)CHECK 平时平时=100 ERROR 分数不能大于分数不能大于100!(2)语法格语法格式式2语法语法2:ALTER TABLE ALTER COLUMN NULL|NOT NULLSET DEFAULT SET CHECK ERROR DROP DEFAULT DROP CHECK 功能:修改指定的表中指定字段的功能:修改指定的表中指定字段的DEFAULT、CHECK规则,但不影响原有表的数据。规则,但不影响原有表的数据。【例【例3.6】在在score表中,删除对表中,删除对“期末期末”字段的合法字段的合法值约束,并设置值约束,并设置“平时平时”字段的缺省值为字段的缺省值为80。ALTER TABLE score ALTER 期末期末 DROP CHECK 8ALTER TABLE score ALTER 平时平时 SET DEFAULT 80(3)语法格式语法格式3语法语法3:ALTER TABLE DROP COLUMN&从指定表删从指定表删除指定的字段除指定的字段SET CHECK l ERROR&设置该字段的合法值检查设置该字段的合法值检查DROP CHECK&删除该字段的合法值设置删除该字段的合法值设置ADD PRIMARY KEY TAG FOR l DROP PRIMARY KEY&删除该表的主索引删除该表的主索引ADD UNIQUE TAG FOR l9DROP UNIQUE TAG&删除该表的删除该表的候选索引候选索引ADD FOREIGN KEY TAG FOR lREFERENCES TAG&设置该表的外部关键字设置该表的外部关键字DROP FOREIGN KEY TAG SAVE&删除该表的外部关键字删除该表的外部关键字RENAME COLUMN TO NOVALIDATE&修改表结构时,允许违反该修改表结构时,允许违反该表的数据完整性规则。表的数据完整性规则。10功能:功能:删除指定的表中指定字段、修改字段名、修删除指定的表中指定字段、修改字段名、修改指定表的完整性规则,包括主索引、外关键字、改指定表的完整性规则,包括主索引、外关键字、候选索引及表的合法值限定的添加与删除。候选索引及表的合法值限定的添加与删除。注意:注意:修改自由表,不能使用修改自由表,不能使用DEFAULT、FOREIGH KEY、PRIMARY KEY、REFERENCES 或或SET子句。子句。【例【例3.7】在在“student”表中,删除表中,删除“是否党员是否党员”字段,修改字段,修改“备注备注”字段名为字段名为“其它情况其它情况”。ALTER TABLE student DROP 是否党员是否党员 RENAME COLUMN 备注备注 TO其它情况如果在删除其它情况如果在删除字段上建立了索引,要先将索引删除再删除该字段。字段上建立了索引,要先将索引删除再删除该字段。【例【例3.8】在在student表的表的“年龄年龄”字段上建立惟一字段上建立惟一索引。索引。ALTER TABLE student ADD UNIQUE 年年龄龄 TAG 年龄年龄11例例3.9】在在student表中添加一个表中添加一个“出生日期出生日期”字段,删字段,删除除“年龄年龄”字段。字段。ALTER TABLE student ADD 出生出生日期日期 DALTER TABLE student DROP UNIQUE TAG 年龄年龄 DROP年龄年龄3 删除表命令删除表命令DROP TABLE语法:语法:DROP TABLE【例【例3.10】删除已建立的删除已建立的score表。表。DROP TABLE score3.1.3数据操纵语言数据操纵语言数据操纵语言是完成数据操作的命令,它由数据操纵语言是完成数据操作的命令,它由INSERT(插插入入)、DELETE(删除删除)、UPDATE(更新更新)和和SELECT(查查询询)等命令组成。查询也划归为数据操纵范畴,但由于等命令组成。查询也划归为数据操纵范畴,但由于它比较特殊,所以又以查询语言单独出现。它比较特殊,所以又以查询语言单独出现。121.插入记录命令插入记录命令(1)语法格式语法格式1语法语法1:INSERT INTO(,.)VALUES(,.)功能:在指定的表尾添加一条新记录,其值为功能:在指定的表尾添加一条新记录,其值为VALUES后面表达式的值。后面表达式的值。当需要插入表中所有字段的数据时,表名后面的字当需要插入表中所有字段的数据时,表名后面的字段名可以缺省,但插入数据的格式必须与表的结构段名可以缺省,但插入数据的格式必须与表的结构完全吻合;若只需要插入表中某些字段的数据,就完全吻合;若只需要插入表中某些字段的数据,就需要列出插入数据的字段名,当然相应表达式的数需要列出插入数据的字段名,当然相应表达式的数据位置应与之对应。据位置应与之对应。13【例【例3.11】向向student表中添加记录。表中添加记录。INSERT INTO student VALUES(9902101,李明李明,男男,1999/09/01,三好生三好生,CTOD(03/24/1981)INSERT INTO student(学号学号,姓名姓名)VALUES(9902103,李成功李成功)(2)语法格式语法格式2语法语法2:INSERT INTO FROM|FROM MEMVAR 功能:在指定的表尾添加一条新记录,其值来自于功能:在指定的表尾添加一条新记录,其值来自于数组或对应的同名内存变量。数组或对应的同名内存变量。14【例【例3.12】先定义了数组先定义了数组AA(5),AA中各元素的值分中各元素的值分别是:别是:AA(1)=9902001,AA(2)=张洋张洋,AA(3)=女女,AA(4)=09/01/1999,AA(5)=特长是长跑特长是长跑。利用该数组向。利用该数组向student表中添加记表中添加记录。录。INSERT INTO student FROM AA完成以上操完成以上操作后,在作后,在student表中添加一条新记录,新记录的表中添加一条新记录,新记录的值是指定的数组值是指定的数组AA中各元素的数据。新记录的中各元素的数据。新记录的“入入学年月学年月”字段为空。因为字段为空。因为VFP要求,数组中各元素要求,数组中各元素与表中各字段顺序对应。如果数组中元素的数据类与表中各字段顺序对应。如果数组中元素的数据类型与其对应的字段类型不一致,则新记录对应的字型与其对应的字段类型不一致,则新记录对应的字段为空值;如果表中字段个数大于数组元素的个数,段为空值;如果表中字段个数大于数组元素的个数,则多出的字段为空值。则多出的字段为空值。15【例【例3.13】已经定义了内存变量学号已经定义了内存变量学号=9902002,姓名姓名=汪洋汪洋,性别性别=男男,利用内存变量向,利用内存变量向student表中添加记录。表中添加记录。INSERT INTO student FROM MEMVAR完成以上操作后,在完成以上操作后,在student表中表中添加一条新记录,新记录的值除了添加一条新记录,新记录的值除了“学号学号”、“姓姓名名”和和“性别性别”字段外,其它字段均为空。因为字段外,其它字段均为空。因为VFP默认,添加的新记录的值与指定表中各字段名默认,添加的新记录的值与指定表中各字段名同名的内存变量的值。如果同名的内存变量不存在,同名的内存变量的值。如果同名的内存变量不存在,则相应的字段为空。则相应的字段为空。注意:注意:在插入数据时,若指定的表没有在任何工作在插入数据时,若指定的表没有在任何工作区中打开,在当前工作区中没有表被打开时,该命区中打开,在当前工作区中没有表被打开时,该命令执行后将在当前工作区打开该命令指定的表;令执行后将在当前工作区打开该命令指定的表;16若当前工作区打开的是其它表,则该命令执行后将若当前工作区打开的是其它表,则该命令执行后将在一个新的工作区中打开,添加记录后,仍保持原在一个新的工作区中打开,添加记录后,仍保持原当前工作区。若指定的表在非当前工作区中打开,当前工作区。若指定的表在非当前工作区中打开,添加记录后,指定的表仍在原工作区中打开,且仍添加记录后,指定的表仍在原工作区中打开,且仍保持原当前工作区。保持原当前工作区。2.删除记录命令删除记录命令在在VFP中,中,DELETE可以为指定的数据表中的记录可以为指定的数据表中的记录加删除标记。加删除标记。语法:语法:DELETE FROM!WHEREAND|OR 功能:从指定表中,根据指定的条件逻辑删除记录。功能:从指定表中,根据指定的条件逻辑删除记录。17【例【例3.14】将将“student”表所有男生的记录逻辑删表所有男生的记录逻辑删除。除。DELETE FROM student WHERE 性别性别=男男完成以上操作后,在完成以上操作后,在student表将所有男生的记录表将所有男生的记录逻辑删除了,但没有从物理上删除。只有执行了逻辑删除了,但没有从物理上删除。只有执行了PACK命令,逻辑删除的记录才真正地从物理上删命令,逻辑删除的记录才真正地从物理上删除。逻辑删除的记录还可以用除。逻辑删除的记录还可以用RECALL命令取消删命令取消删除。除。注意:在逻辑删除记录时,若指定的表没有在任何注意:在逻辑删除记录时,若指定的表没有在任何工作区中打开,在当前工作区中没有表被打开时,工作区中打开,在当前工作区中没有表被打开时,该命令执行后将在当前工作区打开该命令指定的表;该命令执行后将在当前工作区打开该命令指定的表;若当前工作区打开的是其它表,则该命令执行后将若当前工作区打开的是其它表,则该命令执行后将在一个新的工作区中打开,逻辑删除完成后,仍保在一个新的工作区中打开,逻辑删除完成后,仍保持原当前工作区。持原当前工作区。18若指定的表在非当前工作区中打开,逻辑删除完成若指定的表在非当前工作区中打开,逻辑删除完成后,指定的表仍在原工作区中打开,且仍保持原当后,指定的表仍在原工作区中打开,且仍保持原当前工作区。前工作区。3.更新记录命令更新记录命令更新记录就是对存储在表中的记录进行修改,命令更新记录就是对存储在表中的记录进行修改,命令是是UPDATE,也可以对用也可以对用SELECT语句选择出的记语句选择出的记录进行数据更新。录进行数据更新。语法:语法:UPDATE!SET=,=.WHERE AND|OR.功能:用指定的新值更新记录。功能:用指定的新值更新记录。19【例【例3.15】将将“student”表所有表所有99级学生级学生“入学入学年月年月”置为置为1999/09/10。UPDATE student SET 入学年月入学年月=1999/09/10 WHERE LEFT(学号学号,2)=99【例【例3.16】将所有男生的各科平时、期中和期末成将所有男生的各科平时、期中和期末成绩初始化为绩初始化为0。UPDATE score SET 平时平时=0,期期中中=0,期末期末=0;WHERE 学号学号 IN(SELECT 学号学号 FROM student WHERE 性别性别=男男)以上命令中,用到了以上命令中,用到了WHERE条件关键字条件关键字“IN”和对用和对用SELECT语句选语句选择出的记录进行数据更新。有关择出的记录进行数据更新。有关WHERE条件关键条件关键字和字和SELECT语句的使用,详见语句的使用,详见3.2节。节。注意:注意:UPDATE一次只能在单一的表中更新记录。一次只能在单一的表中更新记录。204.查询记录命令查询记录命令语法:语法:SELECT ALL|DISTINCT TOP PERCENT.AS,.AS.FROM FORCE 数据库名数据库名?!AS INNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOIN!AS ON .INTO|TO FILE ADDITIVE 21PREFERENCENOCONSOLE PLAIN NOWAITWHERE AND.AND|OR AND|OR.GROUP BY,.HAVINGUNION ALL SELECT命令命令ORDER BY ASC|DESC,ASC|DESC.22功能:查询。功能:查询。这个命令的子句很多,理解了这条命令各项的含义,这个命令的子句很多,理解了这条命令各项的含义,就能从数据库中查询出各种数据。就能从数据库中查询出各种数据。SQL数据查询语数据查询语言只有一条命令,即言只有一条命令,即SELECT。与其说它是一条命与其说它是一条命令,倒不如说它是一个令,倒不如说它是一个SELECT命令集合。它的选命令集合。它的选项极其丰富,同时查询条件和嵌套使用也是很复杂项极其丰富,同时查询条件和嵌套使用也是很复杂的。本章将重点介绍这条命令。的。本章将重点介绍这条命令。3.1.4 数据控制语言数据控制语言数据控制语言数据控制语言(DCL)是用来控制用户对数据库的访问是用来控制用户对数据库的访问权限的,由权限的,由GRANT(授权授权)和和REVOKE(回收回收)命令组命令组成。成。23由于由于VFP没有权限管理,所有没有数据控制语言命没有权限管理,所有没有数据控制语言命令,这是令,这是VFP的优点也是缺点。说是优点,是因为的优点也是缺点。说是优点,是因为没有这种权限管理,所以使用时既方便又简单;说没有这种权限管理,所以使用时既方便又简单;说是缺点,由于没有权限管理,所以安全性不高。数是缺点,由于没有权限管理,所以安全性不高。数据库一旦建成,什么人都可以进行操作浏览。据库一旦建成,什么人都可以进行操作浏览。243.2 SELECT命令基本用法SELECT命令的基本结构是命令的基本结构是SELECT.FORM.WHERE,它包含输出字段它包含输出字段.数据来源数据来源.查询条件。在这种固定模式中,可以不查询条件。在这种固定模式中,可以不要要WHERE,但是但是SELECT和和FROM是必备的。是必备的。3.2.1 基本查询基本查询所谓基本查询就是无条件查询,其格式如下所示。所谓基本查询就是无条件查询,其格式如下所示。SELECT ALL|DISTINCT.AS ,.AS.FROM ,.25其中:其中:ALL 表示输出所有记录,包括重复记录;表示输出所有记录,包括重复记录;DISTINCT 表示输出无重复结果的记录;表示输出无重复结果的记录;别名别名 当选择多个数据库表中的字段时,可使用当选择多个数据库表中的字段时,可使用别名来区分不同的数据表;别名来区分不同的数据表;显示列名显示列名 在输出结果中,如果不希望使用字段名,在输出结果中,如果不希望使用字段名,可以根据要求设置一个名称;可以根据要求设置一个名称;选项选项 字段名、表达式或函数;字段名、表达式或函数;表名表名 要查询的表。要查询的表。SELECT命令类似于命令类似于LIST FIELDS ,.命令,指出要输出的列,然后输出命令,指出要输出的列,然后输出结果。但是结果。但是SELECT命令的功能要强大得多。命令的功能要强大得多。26【例【例3.17】列出学生名单。列出学生名单。OPEN DATABASE D:教学管理教学管理数据库教学管理教学管理数据库&打开数据库打开数据库【例【例3.18】列出所有学生姓名,去掉重名。列出所有学生姓名,去掉重名。SELECT DISTINCT 姓名姓名 AS 学生名单学生名单 FROM 学生学生结果:学生名单结果:学生名单赵伟赵伟显示的结果中,显示的结果中,“赵伟赵伟”只出现了一次。只出现了一次。SELECT命令中的选项,不仅可以是字段名,还可命令中的选项,不仅可以是字段名,还可以是表达式,例如可以是一些函数,以是表达式,例如可以是一些函数,SELECT命令命令可操纵的函数很多,表可操纵的函数很多,表3.4中列出了常用函数。中列出了常用函数。27注意:这个结果不影响数据库表注意:这个结果不影响数据库表“学生学生”中的结果,中的结果,只是在输出时通过函数计算输出。只是在输出时通过函数计算输出。【例【例3.20】求出所有的学生入学成绩平均分。求出所有的学生入学成绩平均分。SELECT AVG(入学成绩入学成绩)AS 入学成绩平均分入学成绩平均分 FROM 学生学生结果:入学成绩平均分结果:入学成绩平均分571.55由以上两例可见,直接使用由以上两例可见,直接使用VFP提供的各种提供的各种SQL函数在输出时进行计算,便可得到相应的输出函数在输出时进行计算,便可得到相应的输出结果。结果。3.2.2 带条件查询带条件查询WHERE是条件语句关键字,是可选项,其格式如是条件语句关键字,是可选项,其格式如下所示。下所示。28WHERE AND|OR.其中,条件表达式可以是单表的条件表达式,也可以是多表其中,条件表达式可以是单表的条件表达式,也可以是多表之间的条件表达式,表达式用的比较符为:之间的条件表达式,表达式用的比较符为:=(等于等于)、!=(不等于不等于)、=(精确等于精确等于)、(大于大于)、=(大于等于大于等于)、(小于小于)、=(小于等于小于等于)。注意:在写条件表达式时,有精确匹配和不精确匹配两种情注意:在写条件表达式时,有精确匹配和不精确匹配两种情况,一般情况下,况,一般情况下,“=”表示要求精确匹配,表示要求精确匹配,“=”表示可表示可以不精确匹配。但如果系统设置以不精确匹配。但如果系统设置SET EXACT ON,则则“=”也表示要求精确匹配。系统默认的是也表示要求精确匹配。系统默认的是SET EXACT OFF。条件表达式是子查询的结果集合应满足的条件,如果某行条条件表达式是子查询的结果集合应满足的条件,如果某行条件为真就包括该行记录。表件为真就包括该行记录。表3.5是条件表达式中关键字的意是条件表达式中关键字的意义和使用方法。义和使用方法。29这种条件筛选的基本要领是:左边是一个字段,右这种条件筛选的基本要领是:左边是一个字段,右边是一个集合,在集合中测定字段值边是一个集合,在集合中测定字段值(谓词演算谓词演算)是是否满足条件。否满足条件。NOT可以与这些谓词演算符号配合使可以与这些谓词演算符号配合使用,得到一个反逻辑。用,得到一个反逻辑。【例【例3.21】求出计算机专业学生入学成绩平均分。求出计算机专业学生入学成绩平均分。SELECT 专业专业,AVG(入学成绩入学成绩)AS 入学成绩平均入学成绩平均分分 FROM 学生学生 WHERE 专业专业=计算机计算机结果:结果:专业专业 入学成绩平均分入学成绩平均分1计算机计算机 642.832 排除后列出排除后列出【例【例3.22】列出非计算机专业的学生名单。列出非计算机专业的学生名单。SELECT 学号学号,姓名姓名,专业专业 FROM 学生学生 WHERE 专专业业计算机计算机30以上命令的功能等同于:以上命令的功能等同于:SELECT 学号学号,姓名姓名,专业专业;FROM 学生学生 WHERE 专业专业!=计算机计算机或或SELECT 学号学号,姓名姓名,专业专业;FROM 学生学生 WHERE NOT(专业专业=计算机计算机)3 IN运算符运算符【例【例3.23】列出数学专业和外贸专业的学生名单。列出数学专业和外贸专业的学生名单。SELECT 学号学号,姓名姓名,专业专业 FROM 学生学生 WHERE 专专业业 IN(数学数学,外贸外贸)【例【例3.24】列出入学成绩在列出入学成绩在560分到分到650分之间的学分之间的学生名单。生名单。SELECT 学号学号,姓名姓名,入学成绩入学成绩 FROM 学学生生 WHERE 入学成绩入学成绩 BETWEEN 560 AND 65031【例【例3.25】列出所有的姓赵的学生名单。列出所有的姓赵的学生名单。SELECT 学号学号,姓名姓名 FROM 学生学生 WHERE 姓名姓名 LIKE 赵赵%【例【例3.26】列出所有期末成绩为空值的学生学号和列出所有期末成绩为空值的学生学号和课号。课号。SELECT 学号学号,课号课号 FROM 成绩成绩 WHERE 成绩成绩 IS NULL 在以上命令中,使用了运算符在以上命令中,使用了运算符IS NULL,该运算符是测试字段值是否为空值,在查该运算符是测试字段值是否为空值,在查询时用询时用“字段名字段名 IS NOT NULL”的形式,而不的形式,而不能写成能写成“字段名字段名=NULL”或或“字段名字段名!=NULL”。3.2.3 嵌套查询嵌套查询 有时候一个有时候一个SELECT命令无法完成查询任务,需要命令无法完成查询任务,需要一个子一个子SELECT的结果作为条件语句的条件,即需的结果作为条件语句的条件,即需要在一个要在一个SELECT命令的命令的WHERE子句中出现另一子句中出现另一个个SELECT命令,这种查询称为嵌套查询。命令,这种查询称为嵌套查询。32通常把仅嵌入一层子查询的通常把仅嵌入一层子查询的SELECT命令称为单层嵌套命令称为单层嵌套查询,把嵌入子查询多于一层的查询称为多层嵌套查询。查询,把嵌入子查询多于一层的查询称为多层嵌套查询。VFP只支持单层嵌套查询。只支持单层嵌套查询。注意:子注意:子SELECT的查询结果必须是确定的内容。的查询结果必须是确定的内容。1 返回单值的子查询返回单值的子查询【例【例3.27】列出选修电脑文秘应用课的所有学生的学号。列出选修电脑文秘应用课的所有学生的学号。SELECT 学号学号 FROM 成绩成绩 WHERE 课号课号=;(SELECT 课号课号 FROM 课程课程 WHERE 课名课名=电脑文秘应电脑文秘应用用)结果:学号结果:学号0103001 0103002 0101019 9901009 990201033上述上述SQL语句执行的是两个过程,首先在课程表中语句执行的是两个过程,首先在课程表中找出电脑文秘应用课的课号找出电脑文秘应用课的课号(比如比如“09001”),然后,然后再在成绩表中找出课号等于再在成绩表中找出课号等于“09001”的记录,列出的记录,列出这些记录的学号。这些记录的学号。2 返回一组值的子查询返回一组值的子查询若某个子查询返回值不止一个,则必须指明在若某个子查询返回值不止一个,则必须指明在WHERE子句中应怎样使用这些返回值。通常使用子句中应怎样使用这些返回值。通常使用条件关键字条件关键字(即谓词即谓词)ANY(或或some)、ALL和和IN。(1)ANY谓词的用法谓词的用法【例【例3.28】列出选修列出选修“09001”课的学生中期末成绩课的学生中期末成绩比选修比选修“09002”的最低期末成绩高的学生的学号和的最低期末成绩高的学生的学号和期末成绩。期末成绩。SELECT 学号学号,期末期末 AS 期末成绩期末成绩 FROM 成绩成绩 WHERE 课号课号=09001 AND 期末期末 ANY;34(SELECT 期末期末 FROM 成绩成绩 WHERE 课号课号=09002)【例【例3.29】列出选修列出选修“02002”课的学生,这些学生课的学生,这些学生的期末成绩比选修的期末成绩比选修“09002”课的最高期末成绩还要课的最高期末成绩还要高的学生的学号和成绩。高的学生的学号和成绩。SELECT 学号学号,期末期末 AS 期末成绩期末成绩 FROM 成绩成绩 WHERE 课号课号=02002 AND 期末期末 ALL;(SELECT 期末期末 FROM 成绩成绩 WHERE 课号课号=09002)结果:结果:学号学号 期末成绩期末成绩19902010 97.035该查询的含义是:先找出该查询的含义是:先找出“09002”课的所有学生的课的所有学生的成绩成绩(结果为结果为92和和51),然后再找,然后再找“02002”课期末课期末成绩中高于成绩中高于“09002”课中最高期末成绩的那些学生。课中最高期末成绩的那些学生。(3)IN谓词的用法谓词的用法【例【例3.30】列出文科类列出文科类(即专业类别为即专业类别为“A”)学生的学生的学生名单。学生名单。SELECT 学号学号,姓名姓名 FROM 学生学生 WHERE 专业专业 IN;(SELECT 专业名称专业名称 FROM 专业专业 WHERE 专业类别专业类别=A)结果:学号结果:学号 姓名姓名 0103001 郑盈莹郑盈莹 0101019 赵伟赵伟 9901009 克敏敏克敏敏 36 9902010 李丽李丽 9901109 赵伟赵伟该查询先从专业表中找出专业类别为该查询先从专业表中找出专业类别为“A”的专业名的专业名称,然后在学生表中查找专业属于称,然后在学生表中查找专业属于A类专业集合的类专业集合的那些记录。那些记录。IN是属于的意思,等价于是属于的意思,等价于“=ANY”,即等于子查询即等于子查询中任何一个值。中任何一个值。373.2.4 多表查询多表查询在一个表中进行查询,一般说来是比较简单的,而在一个表中进行查询,一般说来是比较简单的,而在多表之间查询就比较复杂,必须处理表和表间的在多表之间查询就比较复杂,必须处理表和表间的连接关系。使用连接关系。使用SELECT命令进行多表查询是很方命令进行多表查询是很方便的。便的。1 等值连接等值连接等值连接是按对应字段的共同值将一个表中的记录等值连接是按对应字段的共同值将一个表中的记录与另一个表中的记录相连接。与另一个表中的记录相连接。38【例【例3.31】输出所有学生的成绩单,要求给出学号、输出所有学生的成绩单,要求给出学号、姓名、课号、课名和总成绩。姓名、课号、课名和总成绩。SELECT a.学号学号,a.姓名姓名,b.课号课号,c.课名课名,(b.平时平时+b.期中期中+b.期末期末)/3 AS 总成绩总成绩;FROM 学生学生 a,成绩成绩 b,课程课程 c;WHERE a.学号学号=b.学号学号 AND b.课号课号=c.课号结果如课号结果如图图3.1所示。所示。以上命令中,由于以上命令中,由于“学号学号”、“课号课号”等字段名在等字段名在两个表中出现,为防止二义性,在使用时应在其字两个表中出现,为防止二义性,在使用时应在其字段名前加上表名以示区别段名前加上表名以示区别(如果字段名是惟一的,可如果字段名是惟一的,可以不加表名以不加表名),但表名一般输入时比较麻烦。所以此,但表名一般输入时比较麻烦。所以此命令中,在命令中,在FROM子句中给相关表定义了临时标记子句中给相关表定义了临时标记(即表别名即表别名),以利于在查询的其它部分中使用。,以利于在查询的其它部分中使用。39图图3.140【例【例3.32】列出列出99级学生的选课情况,要求列出学级学生的选课情况,要求列出学号、姓名、课号、课名、授课教师和学分数。号、姓名、课号、课名、授课教师和学分数。SELECT a.学号学号,a.姓名姓名 AS 学生姓名学生姓名,b.课号课号,c.课课名名,e.姓名姓名 AS 教师姓名教师姓名,c.学分学分;FROM 学生学生 a,成绩成绩 b,课程课程 c,任课任课 d,教师教师 e;WHERE a.学号学号=b.学号学号 AND b.课号课号=c.课号课号 AND c.课号课号=d.课号课号;AND d.教师代号教师代号=e.教师代号教师代号 AND LEFT(a.学号学号,2)=99结果如图结果如图3.2所示。所示。【例【例3.33】请列出至少选修请列出至少选修“09001”课和课和“09002”课学生学号。课学生学号。SELECT a.学号学号 FROM 成成绩绩 a,成绩成绩 b;41图图3.242WHERE a.学号学号=b.学号学号 AND b.课号课号=09001 AND a.课号课号=09002结果:结果:1学号学号19901009 19902010 从例从例3.33可以看出,连接不仅可以建立在不同的表可以看出,连接不仅可以建立在不同的表之间,也可以建立在同一个表上,即将表与表自身之间,也可以建立在同一个表上,即将表与表自身连接,就像是两个表一样。连接,就像是两个表一样。2 非等值连接非等值连接【例【例3.34】列出选修列出选修“09001”课的学生中,期末成课的学生中,期末成绩大于学号为绩大于学号为“0101019”的同学该门课期末成绩的的同学该门课期末成绩的那些同学的学号及其期末成绩。那些同学的学号及其期末成绩。SELECT a.学号学号,a.期末期末 AS 期末成绩期末成绩 FROM 成绩成绩 a,成绩成绩 b;43WHERE a.期末期末b.期末期末 AND a.课号课号=b.课号课号 AND b.课号课号=09001 AND b.学号学号=01010193.2.5 连接查询连接查询VFP提供的提供的SELECT命令,在命令,在FROM子句中提供一子句中提供一种称之为连接的子句。连接分为内部连接和外部连种称之为连接的子句。连接分为内部连接和外部连接。外部连接又分为左外连接、右外连接和全外连接。外部连接又分为左外连接、右外连接和全外连接。接。1 内部连接内部连接(Inner Join)实际上,上面例子全部都是内部连接。所谓内部连实际上,上面例子全部都是内部连接。所谓内部连接是指包括符合条件的每个表格中的记录。也就是接是指包括符合条件的每个表格中的记录。也就是说是所有满足连接条件的记录都包含在查询结果中。说是所有满足连接条件的记录都包含在查询结果中。44【例【例3.35】列出列出01级学生的学号、课名及其期末成级学生的学号、课名及其期末成绩。绩。SELECT a.学号学号,b.课名课名,a.期末期末 AS 期末成绩期末成绩 FROM 成绩成绩 a,课程课程 b;WHERE a.课号课号=b.课号课号 AND LEFT(a.学号学号,2)=012 外部连接外部连接(Outer Join)(1)左外连接左外连接也叫左连接也叫左连接(Left Outer Join),其系统执行过程是其系统

    注意事项

    本文(计算机技术基础(精品).ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开