数据库作业实验六

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六

实验名称:连接查询

一、实验目的

掌握使用连接的方法从多个表中查询数据。理解内连接、外连接(包括左外连接、右外连接和全外连接)、自身连接的概念和使用。要求学生熟练掌握在FROM子句和在WHERE子句中指定连接条件的这两种方法。

二、实验原理

在查询语句的FROM子句中用以下形式实现各种连接操作:

●FROM 表1 [INNER] JOIN 表2 ON 表1.列名=表2.列名(实

现内连接)

●FROM 表1 LEFT [OUTER] JOIN 表2 ON 表1.列名=表2.列

名(实现左外连接)

●FROM 表1 RIGHT [OUTER] JOIN 表2 ON 表1.列名=表2.列

名(实现右外连接)

●FROM 表1 FULL [OUTER] JOIN 表2 ON 表1.列名=表2.列

名(实现全外连接)

●FROM 表1 AS 别名1 JOIN 表1 AS 别名2 ON 别名1.列名=

别名2.列名(实现自身连接)

在查询语句的WHERE子句中用以下形式实现各种连接操作:

●FROM 表1,表2 WHERE 表1.列名=表2.列名(实现内连接)

●FROM 表1,表2 WHERE 表1.列名*=表2.列名(实现左外连接)●FROM 表1,表2 WHERE 表1.列名=*表2.列名(实现右外连接)●FROM 表1 AS 别名1 ,表1 AS 别名2 WHERE 别名1.列名=别名

2.列名(实现自身连接)

三、实验设备

安装有SQL SERVER 2005的计算机。

四、实验示例

1、检索product 表和sale_item表中数量大于2的相同产品的产品编号、产品名

称、数量、单价。

select a.prod_id,a.qty,a.unit_price,b.prod_name

from sale_item as a inner join product as b /*如果改成left join/right join 试分析结果*/

on (a.prod_id=b.pro_id) and a.qty>2

order by a.prod_id

2、查找出employee表中住址相同的员工的姓名、性别、职称、薪水、住址。select

a.emp_name,a.sex,a.title,a.salary,a.addr,

b.emp_name,b.sex,b.title,b.salary,b.addr

from employee as a inner join employee as b

on (a.emp_no!=b.emp_no) and (a.emp_name>b.emp_name) and (a.addr=b.addr)

3、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额

select a.prod_id,qty,unit_price,unit_price*qty totprice

from sale_item a,product b

where a.prod_id=b.prod_id and prod_name='14寸显示器'

五、实验内容与步骤

1、查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪

水、住址。

use [company]

go

select distinct a.emp_name,a.sex,a.title,a.salary,a.addr

from employee a,employee b

where a.addr=b.addr and a.dept=b.dept and a.sex='女'and b.sex='女'and a.emp_name!=b.emp_name

2、检索product 表和sale_item表中相同产品的产品编号、产品名称、数量、单

价。

select distinct product.prod_id,product.prod_name,qty,unit_price

from product,sale_item

where sale_item.prod_id=product.prod_id

3、检索product 表和sale_item表中单价高于2400元的相同产品的产品编号、

产品名称、数量、单价。

select distinct product.prod_id,product.prod_name,qty,unit_price

from product,sale_item

where sale_item.prod_id=product.prod_id and sale_item.unit_price >2400

4、查询在每张订单中订购金额超过24000元的客户名及其地址。

select cust_name,addr

from customer,sales

where customer.cust_id=sales.cust_id and tot_amt>24000

5、查找有销售记录的客户编号、名称和订单总额

select customer.cust_id,cust_name,zip

from customer,sales

where customer.cust_id=sales.cust_id

6、每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到

大排列。

select cust_id,prod_id,sum(qty),avg(unit_price)

from sales,sale_item

where sales.order_no=sale_item.order_no

group by cust_id,prod_id

order by cust_id,prod_id asc

7、查找在1997年中有销售记录的客户编号、名称和订单总额

select sales.cust_id,cust_name,sum(tot_amt)

from customer,sales

where customer.cust_id=sales.cust_id and year(order_date)='1996' group by sales.cust_id,customer.cust_name

8、分别使用左向外连接、右向外连接、完整外部连接检索product 表和sale_item

相关文档
最新文档