实验5 数据查询--连接查询
一、实验目的
1.熟悉等值联接查询的方法。
2.熟悉非等值联接查询的方法。
3.熟悉自身联接查询的方法。
4.熟悉外联接查询的方法。
5.熟悉复合条件联接的方法。
二、实验要求
应用SELECT语句对数据库eshop中数据进行指定条件的连接查询。
三、实验步骤
1.查询购买了商品号为“0910810004”的会员号和姓名,并以汉字标题显示,SQL代码如下所示:
SELECT members.m_account '会员号',members.m_birth '年龄'
FROM products,orders,members
WHERE products.p_no=orders.p_no
AND orders.m_account=members.m_account
AND products.p_no='0910810004'
2.查询购买了商品名称为“爱国者MP3”的会员号、姓名和商品价格,SQL代码如下所示:
SELECT members.m_account '会员号',members.m_name '姓名',products.p_price '商品价格'
FROM products,orders,members
WHERE products.p_no=orders.p_no
AND orders.m_account=members.m_account
AND products.p_name='爱国者MP3'
3.查询比“张自梁”月薪高的而和他不是同一地址的会员姓名和年龄,SQL代码如下所示:
SELECT A.m_name '姓名',DATEDIFF(YEAR,A.m_birth,GETDATE()) '年龄'
FROM members A,members B
WHERE A.m_account <> B.m_account
AND B.m_name = '张自梁'
AND A.m_salary > B.m_salary
AND A.m_address <> B.m_address
4.查询购买了“0910810004”商品的会员号和姓名,SQL代码如下所示:
SELECT members.m_account '会员号',members.m_name '姓名'
FROM products,orders,members
WHERE products.p_no=orders.p_no
AND orders.m_account=members.m_account
AND products.p_no='0910810004'
5.使用简单查询家庭地址为“湖南株洲”的会员以及年龄在30岁以上的会员详细信息,SQL代码如下所示:
SELECT *
FROM members
WHERE members.m_address='湖南株洲'
AND DATEDIFF(YEAR,m_birth,GETDATE())>30
6.使用集合查询家庭地址为“湖南株洲”的会员以及年龄在30岁以上的会员详细信息,并与步骤5进行比较,SQL代码如下所示:
SELECT *
FROM members
WHERE members.m_address='湖南株洲'
INTERSECT
SELECT *
FROM members
WHERE DATEDIFF(YEAR,m_birth,GETDATE())>30
注:union并,except差,intersect交
7.将members表和orders表之间的左向外联接包括所有会员的信息,包括没有购买商品的会员,SQL码如下所示:
SELECT members.*, orders.*
FROM members
LEFT OUTER JOIN orders
ON members.m_account = orders.m_account