第3课 实验6 高级查询.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验6 高级查询 姓名: 学号: 专业: 班级: 同组人: 无 实验日期: 【实验目的与要求】 掌握基本的连接查询操作 等值连接 非等值连接 自身连接 外连接 掌握嵌套查询操作 【实验内容与步骤】 思考问题:如何使用SQL来创建数据库表? 准备工作:若上个实验的数据库表还没有创建,请先创建之,并按照实验要求输入测试数据。 6.1 连接 连接查询主要包括: 等值连接 非等值连接 自身连接 外连接 1.等值连接 以等于运算符 (=) 为基础的连接称为等值连接。通常情况下,所有连接都是等值连接。等值连接的语法如下: SELECT column list1 FROM table name list WHERE mon_column = mon_column AND mon_column = mon_column; 实验6-1 查询所有产品的名称、类别名称和库存量等数据。 请给出结果截图: 实验6-2 查询所有订单的订单代号、客户公司名称和运货费,查询结果按订单代号的升序排列。 请给出结果截图: 实验6-3 查询由北京客户订购的运货费等于于8元的订单的订单代号、客户公司名称和运货费。 请给出结果截图: 等值连接可在两个表上执行,也可在多个表上执行。 在一个连接中使用四个表: 实验6-4 查询每一客户的客户代号、公司名称及其订单的订单代号、订购日期、产品名称和数量等数据。 请写出查询结果: 练习6-1 修改实验6-4中给出的语句并以如下方式给出,然后观察发生什么情况。 SELECT Cno,Company, Ono,Order_date,Pname,Qty FROM Customer,Orders,Order_items,Product WHERE Customer.Cno=Orders.Cno AND Orders.Ono=Order_items.Ono AND Order_items.Pno=Product.Pno; 给出上面的选择语句后,会出现 “Column ambiguously defined”(列定义模糊不清)的出错信息。这是因为“Ono”存在于两个表(即Orders表 和Order_items表)之中。我们需要明确指定要从哪个表选择Ono,在这种情况下,可以从任何一个表中选择Ono。 2.非等值连接 实验6-5 查询所有单价介于20和35元之间的产品的名称、类别名称、单价和库存量等数据。 请给出结果截图: 3.自身连接 自身连接是连接的另一种形式。在这种情况下,连接是在单个表上进行的,就像它是两个独立的表。 表的每个行都与其本身组合,并与表的所有行组合。 实验6-6 查询单价正好相差0.5倍的每一对产品的名称及其单价。 请给出结果截图: 注意:在进行表的自身连接时,须在FROM子句中给同一个表取不同的别名,并在书写SELECT语句的其它子句时把这些代表同一表的不同别名看成是具有相同数据的“不同表”(读者在理解自身连接查询时,可以将它们看成不同的表,但实际上只有一个表)。 练习6-2 查询与“Du Wei”客户在同一城市的其他客户的姓名及其电话。 写出相应的SQL语句,并给出查询的结果: 4. 外连接 前面介绍的查询都是内连接。内连接不选择表中不符合查询条件的记录。这些值可通过外连接获得,外连接利用运算符加号 (+)。 语法如下: SELECT (column_names) FROM (tablenames) WHERE (table1.column1 = table2.column2)(+); 实验6-7 查询所有客户的代号、姓名以及其订单的代号和订购日期与订单状态,查询结果按客户代号的升序排列。 先请看下面的SQL语句及其查询结果: 请给出结果截图: 上面的查询是一个内连接,由于客户“C0003”和“C0004”没有订单,他们都不满足查询条件,因此他们的信息没有出现在查询结果中;如果我们想让这两个客户的信息也出现在查询结果中就需要使用下面的外连接语句: 请给出结果截图: 试比较上面的两个查询语句中查询结果有何区别? 6.2 嵌套查询 嵌套查询是指将一个SELECT-FROM-WHERE查询块嵌套在另一个查询块的WHERE或HAVING短语的条件中的查询。 1.带有比较运算符的子查询 实验6-8 查询与“Du Wei”客户在同一城市的其他客户的姓名及其电话。 请给出结果截图: 本查询包括了两个SELECT-FROM-WHERE查询块,其中下层的查询块嵌套在上层的查询块中。我们将上层的查询块称为父查询,而把下层的查询块称为子查询。子查询的处理先于父查询。本嵌套查询的过程如下: ⑴ 先通过子查询,在Customer表中找到“Du Wei”客

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档