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

    结构化查询语言(SQL).pdf

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

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

    结构化查询语言(SQL).pdf

    结构化查询语言(SQL)SQL 概述 SQL的内容在笔试和上机考试中均占到大约 30%的比例,此外它还是查询和视图的基础,因此是学习的重点也是难点。SQL 是结构化查询语言 Structure Query Language 的缩写。SQL 包含了查询功能、数据定义、数据操纵和数据控制功能,在VFP 中没有提供数据控制功能。SQL 主要特点 1 SQL 是一种一体化语言。2 SQL 是一种高度非过程化的语言。3 SQL 语言非常简洁。4 SQL 语言可直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。查询功能 SELECT 命令的特点:1 可以自动打开数据库、表文件加以查询,而不需要事先用 OPEN DATABASE 或 USE 命令打开。2 可以直接选取数据表中的数据,而不需要事先用 SET RELATION 命令建立关联。3 当需要的索引文件不存在时,会自动建立暂存索引文件,以支持快速搜索技术(Rushmore)来查询。4 其查询结果可输出到文件、表、屏幕或报表上,还可以转换成统计图表。命令格式:SELECT FROM WHERE 可与 LIST FIELDS FOR 对照学习。关系操作:投影,选择,联接。说明:功能强大,语法灵活;要处理的数据表无须事先打开,通过FROM 子句指明并打开。1 SELECT 短语:说明要查询的数据;对应的关系操作为投影,类似于 FIELDS 子句。2 FROM 短语:说明要查询的数据来自哪个或哪些表,可对单个表或多个表进行查询;3 WHERE 短语:说明查询条件;对应的关系操作为选择,类似于 FOR 子句。如是多表查询还可能过该子句指明联接条件,进行联接。4 GROUP BY 短语:用于对查询结果进行分组,可利用它进行分组汇总;类似于 TOTAL 命令。5 HAVING 短语:跟随 GROUP BY 使用,它用来限定分组必须满足的条件;6 ORDER BY 短语:用于对查询的结果进行排序;类似于 SORT命令。示例数据库:学生管理,包括三个表:学生,课程,选课(通过该表反映“学生”与“课程”之间“多对多”的联系。问题:请同学们分别指出三个表的主关键字。一、简单查询 简单查询基于单个表。例:1查询学生信息 SELE*FROM 学生&“*”号代表所有列。类似于:USE 学生 LIST 2查询男生学生的学号、姓名及生日 SELE 学号,姓名,生日 FROM 学生 WHERE 性别=”男”类似于 USE 学生 LIST 学号,姓名,生日 FOR 性别=”男”3.查询学分大于 5的课程的信息 SELE*FROM 课程 WHERE 学分5 类似于 USE 学生 LIST FOR 学分5 4、查询学分不在 6到 9 之间的 Sele *from 课程 where 学分 not between 6 and 9 二、简单联接查询 联接是关系的基本操作之一,联接查询基于多个关系的查询。例:查询男生学生的选课信息,包括姓名,学号及成绩。分析:本例的查询结果包括两个表“学生”与“选课”的属性,适用于联接查询。SELE 姓名,选课.学号,成绩;FROM 学生,选课;WHERE 学生.学号=选课.学号 AND 性别=”男”说明:如果命令太长一行写不下可在行末加分号“:”表续行 选课.学号:因为两个表中均有“学号”字段,所以必须指明所属表。学生.学号=选课.学号:连接条件。还可使用如下 SQL语句:SELE 姓名,选课.学号,成绩;FROM 学生 JOIN 选课 ON 学生.学号=选课.学号;WHERE 性别=”男”说明:JOIN ON:建立表与表之间的联接。自连接:sele S.雇员姓名,领导,E.雇员姓名 from 雇员 S,雇员 E where S.雇员号=E.经理 三、嵌套查询 嵌套查询是另一类基于多个关系的查询,此类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。1、例:查询女生学生选课信息,包括学号,课程号,成绩。SELE*;FROM 选课;WHERE 学号 IN(SELE 学号 FROM 学生 WHERE 性别=”女”)说明:IN:相当于集合运算符。还可使用如下 SQL语句:简单联接查询 SELE 选课.学号,课程号,成绩;FROM 选课 JOIN 学生 ON 选课.学号=学生.学号;WHERE 性别=”女”2、查询有“硬盘”订购需求的订购单明细记录:这个例子要求查询订购单明细表中的记录,而查询条件是产品标的名称,Sele *from 订购单明细 where 产品号 IN;(sele 产品号 from 产品 where 名称=“硬盘”)3、排除法查询的例子:查询所有订购数量(即订购单中每个订购项目的数量)都在 50 以上的订购单的信息 Sele *from 订购单 where 订单号 not in;(sele 订单号 from 订购单明细 where 数量=50)Sele *from 订购单 where 订单号 not in;(sele 订单号 from 订购单明细 where 数量=50)and 订单号 in(sele 订单号 from 订购单明细)4、找出和某某产品同等价位的所有产品信息:内外层查询的同一个表,内层查询查处单价,外层查询根据这个单价查询产品信息 Sele *from 产品 where 单价=;(sele 单价 from 产品 where 规格说明=“某某产品”)5、内外层互相查询嵌套查询 四、特殊运算符 1 BETWEEN AND 意为“和之间”例:查询成绩在 80 分到 90 分之间的选课信息。SELE*FROM 选课 WHERE 成绩 BETWEEN 80 AND 90 等价于:SELE*FROM 选课 WHERE 成绩=80 AND 成绩80 八、使用空值进行查询 空值的概念:空值就是缺值或还没有确定值,不能把它理解为任何意义的数据。比如表示价格的一个字段值,空值表示没有定价,而数值 0 可能表示免费。空值与空(或空白)字符串、数值 0 等具有不同的含义。例:假设在选课中有些学生某门课程还没有考试,则成绩为空。试找出尚未考试的选课信息。SELE*FROM 选课 WHERE 成绩 IS NULL 注:不能写成“=NULL”例:试找出成绩不为空的选课信息。SELE*FROM 选课 WHERE 成绩 IS NOT NULL 九、别名与自联接查询 在联接操作中,要使用关系名作前缀,为简单起见,SQL允许在 FROM短语中为关系名定义别名。格式为:例:查询选课信息中的姓名,课程名,成绩。SELE 姓名,课程名,成绩;FROM 学生 S,课程 C,选课 SC;WHERE S.学号=SC.学号 AND C.课程号=SC.课程号 说明:在上面的例子中,别名并不是必须的,但是在关系的自联接操作中,别名则是必不可少的。SQL 不仅可以对多个关系实行联接操作,也可将同一关系与其自身进行联接,这种联接就称为自联接。在这种自联接操作关系上,本质上存在着一种特殊的递归联系,也就是关系中的一些元组,根据出自同一值域的两个不同的属性,可以与另外一些元组有一种对应关系(一对多的联系)。注:元组即记录。例:试查询先修课的课程名 在本例中,先修课号与课程号出自同一值域,会涉及自联接查询。SELE DISTINCT C2.先修课号 C1.课程名;FROM 课程 C1,课程 C2;WHERE C1.课程号=C2.先修课号 十、内外层相关嵌套查询 前面讨论的嵌套查询是外层查询依赖于内层查询的结果,而内层查询与外层查询无关。但有时也需要内、外层互相关的查询,这时内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果。例:查询只有一个学生选修的课程的学号,课程号及成绩。SELE*;FROM 选课 SC1;WHERE SC1.课程号 NOT IN;(SELE 课程号 FROM 选课 SC2 WHERE SC1.学号SC2.学号)SELE*FROM 选课 SC1;WHERE NOT EXIST(SELE*FROM 选课 SC2;WHERE SC1.学号SC2.学号 AND SC2.课程号=SC1.课程号)十一、用量词和谓词的查询 前面已学过NOT IN 运算符,此处还有两种与子查询相关的运算符。格式 1:ANY|ALL|SOME(子查询)格式 2:NOT EXISTS(子查询)说明:1ANY、ALL 和 SOME 为量词,ANY 和 SOME 是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果为真;ALL则要求子查询中的所有行都使结果为真时,结果才为真。2EXISTS 为谓词,EXISTS 和 NOT EXISTS 是用来检查在子查询中是否有结果返回,也就是存在元组或不存在元组。例:查询选修有课程的学生的学号,姓名,性别及生日。SELE*FROM 学生 WHERE EXIST(SELE*FROM 选课 WHERE 学生.学号=选课.学号)注:本例中内层查询引用了外层查询的表,只有这样使用谓词 EXISTS或 NOT EXISTS 才有意义。例:确定哪些客户目前没有订购单:这里的查询是客户没有订购单子记录或不存在订购单子记录 Sele *from 客户 where not exists ;(sele *from 订购单 where 客户号=客户.客户号):此查询等价于 sele *from 客户 where 客户号 not in(sele 客户号 from 订购单)例:查询学分最高的课程信息。SELE*FROM 课程 WHERE 学分=ALL(SELE 学分 FROM 课程)SELE*FROM 课程 WHERE NOT 学分ANY(SELE 学分 FROM 课程)SELE*FROM 课程 WHERE NOT 学分SOME(SELE 学分 FROM 课程)SELE*FROM 课程 WHERE 学分=(SELE MAX(学分)FROM 课程)例:查询学分不是最高的课程信息。SELE*FROM 课程 WHERE 学分ANY(SELE 学分 FROM 课程)SELE*FROM 课程 WHERE 学分2 习题:P151/9 P154/17 命令格式 3:ALTER TABLE 表名 DROP COLUMN字段名 SET CHECK.ERROR.DROP CHECK RENAME COLUMN 字段名 TO 新字段名.说明:此格式可删除字段,可修改字段名,可定义、修改和删除表一级的有效性规则等。例:将课程表的先修课号字段名改为先修课。ALTER TABLE 课程 RENAME 先修课号 TO 先修课 例:删除课程表中的先修课字段。ALTER TABLE 课程 DROP 先修课 四、视图操作 1定义视图 命令格式:CREATE VIEW 视图名 AS select 查询语句 说明:视图是一个虚表,它一旦建立使用方法跟表十分类似,它不会形成单独的文件,它的内容保存在数据库中,所以自由表不能建立视图。这是视图与查询的一个区别。例:CREATE VIEW 学生成绩 AS;SELE 姓名,SUM(成绩)AS 总分,AVG(成绩)AS 平均分;FROM 学生 JOIN 选课 ON 学生.学号=选课.学号;GROUP BY 选课.学号 USE 学生成绩 BROW SELE*FROM 学生成绩 2视图的删除 命令格式:DROP VIEW 第五节 例题解析(略)

    注意事项

    本文(结构化查询语言(SQL).pdf)为本站会员(g****s)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开