實驗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