以下实验内容基于eshop数据库:
1.查询购买了商品号为“0910810004”的会员号和姓名,并以汉字标题显示;
2.查询购买了商品名称为“爱国者MP3”的会员号、姓名和商品价格;
3.查询比“张自梁”月薪高的而和他不是同一地址的会员姓名和年龄;
4.使用exists查询购买了“0910810004”商品的会员号和姓名;
5.使用in查询与“刘法治”购买至少同一种商品的会员号;
6.使用集合查询家庭地址为“河南郑州”的会员以及年龄在48岁以上的会员详细信息;
7.将members表和orders表之间的左向外联接包括所有会员的信息,包括没有购买商品的会员。
--1.查询购买了商品号为“0910810004”的会员号和姓名,并以汉字标题显示;
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”的会员号、姓名和商品价格;
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.查询比“张自梁”月薪高的而和他不是同一地址的会员姓名和年龄;
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.使用exists查询购买了“0910810004”商品的会员号和姓名;
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.使用in查询与“刘法治”购买至少同一种商品的会员号;
select distinct A.M_account
from orders A
where P_no in (select P_no
from orders B
where A.M_account<>B.M_account
and B.M_account in (select M_account from members
where B.M_account = members.M_account and M_name='刘法治'))
--6.使用集合查询家庭地址为“河南郑州”的会员以及年龄在48岁以上的会员详细信息;
select *
from members
where members.m_address='河南郑州'
intersect
select *
from members
where datediff(year,m_birth,getdate())>48
--7.将members表和orders表之间的左向外联接包括所有会员的信息,包括没有购买商品的会员。
select members.*,orders.*
from members
left outer JOIN orders
ON members.M_account = orders.M_account