实验5.3 连接查询

更新于 2026年10月10日 版权声明
实验5.3 连接查询

【实验目的】

①掌握涉及多表的等值连接。

②掌握自身连接。

③掌握涉及多表的内连接。

④掌握涉及多表的外连接。

【实验内容】

①查询所有满足条件“顾客通过代理商订了货”的顾客-代理商姓名组合(cname,aname)。

②查询居住在同一城市的所有顾客对。

③查询订购了某个被代理商a06订购过的产品的所有顾客的cid值。

④查询至少订购了一件价格低于0.50元的商品的所有顾客的名字。

⑤查询通过居住在Duluth或Dallas的代理商订了货的所有顾客的cid值。

⑥查询既订购了产品p01又订购了产品p07的顾客的cid值。

⑦查询所有顾客的顾客号、顾客姓名、订购的产品号,订购数量(没有订购过产品的顾客的订购信息显示为空)。

【实验步骤】

(1)等值连接

查询所有满足条件“顾客通过代理商订了货”的顾客-代理商姓名组合(cname,aname)。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT DISTINCT customers.cname, agents.aname
FROM customers, orders, agents
WHERE customers.cid = orders.cid AND orders.aid = agents.aid;

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.15所示。

图示

图5.15 等值连接的查询结果

(2)自连接查询

查询居住在同一城市的所有顾客对。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT c1.cid cid1, c2.cid cid2
FROM customers c1, customers c2
WHERE c1.city = c2.city AND c1.cid < c2.cid;

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.16所示。

图示

图5.16 自连接查询结果

(3)自连接查询(不重复)

查询订购了被代理商a06订购过的产品的所有顾客的cid值。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT DISTINCT y.cid FROM orders x, orders y
WHERE x.pid = y.pid AND x.aid = 'a06';

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.17所示。

图示

图5.17 自连接(不重复)查询结果

(4)JOIN连接查询

查询至少订购了一件价格低于0.60元的商品的所有顾客的名字。(https://www.daowen.com)

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT DISTINCT cname
FROM ((orders o
JOIN (SELECT pid FROM products WHERE price < 0.60) p ON o.pid = p.pid)
JOIN customers c ON o.cid = c.cid);

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.18所示。

图示

图5.18 JOIN连接查询的结果

(5)连接查询一

查询通过居住在Duluth或Dallas的代理商订了货的所有顾客的cid值。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT DISTINCT cid FROM orders, agentsWHERE orders.aid = agents.aidAND (city = 'Duluth' OR city = 'Dallas');

③单击工具栏中的图标 图示 或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.19所示。

图示

图5.19 连接查询一的结果

(6)连接查询二

查询既订购了产品p01又订购了产品p07的顾客的cid值。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口输入下面的SQL语句:

SELECT DISTINCT x.cid FROM orders x, orders y
WHERE x.pid='p01' AND x.cid=y.cid AND y.pid='p07';

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.20所示。

图示

图5.20 连接查询二的结果

(7)左外连接查询

查询所有顾客的顾客号、顾客姓名、订购的产品号,订购数量(没有订购过产品的顾客的订购信息显示为空)。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口分别输入下面的SQL语句:

SELECT c.cid, c.cname, o.pid, o.qty
FROM customers c LEFT OUTER JOIN orders o
ON c.cid=o.cid;
或
SELECT c.cid, c.cname, o.pid, o.qty
FROM customers c LEFT OUTER JOIN orders o
USING (cid);

③单击工具栏中的 图示 图标或者按下快捷键“Ctrl+Enter”,执行上面的SQL语句。观察“Output”输出区域面板,如果提示信息前有绿色小钩,则说明语句执行成功,结果如图5.21和图5.22所示,比较查询结果,说明这两种用法是等效的。

图示

图5.21 左外连接查询结果一

图示

图5.22 左外连接查询结果二

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)