1、项目五 WebShop数据库的查询,项目任务:,【任务1】单表查询,【任务3】子查询。,【任务4】联合查询,【任务2】连接查询,【任务5】分布式查询,【任务6】在SSMS中实现查询,【任务1】单表查询,基本语句格式:SELECT ALL|DISTINCT . FROM , . WHERE GROUP BY HAVING ORDER BY ASC | DESC ,【任务1-1】选择列,【任务1-1-1】(选择所有列)网站销售部管理人员或采购部管理人员需要了解所有商品的详细信息。,SELECT * FROM Goods,课堂练习1,查询WebShop数据库中会员信息表Customers中的所有内容
2、,SELECT * FROM Customers,【任务1-1-2】(选择指定列)网站管理人员在了解商品信息时只需要了解所有商品的商品号、商品名称和商品单价。,SELECT g_ID,g_Name,g_PriceFROM Goods,课堂练习1,查询WebShop数据库中会员信息表Customers中会员的编号(c_ID)、用户名(c_Name)、真实姓名(c_TrueName)和密码(c_Password)。,SELECT c_ID,c_Name,c_TrueName,c_PasswordFROM Customers,课堂练习2,查询WebShop数据库中会员信息表Customers中会员的
3、编号(c_ID)、用户名(c_Name)、真实姓名(c_TrueName)、年龄(c_Age)和密码(c_Password)。,SELECT c_ID,c_Name,c_TrueName,c_Password, YEAR(GetDate()-YEAR(c_birth) c_AgeFROM Customers,【任务1-1-3】(计算列)现在需要了解Goods表中所有商品的商品号、商品名称和商品总额。,SELECT g_ID,g_Name,g_Price*g_NumberFROM Goods,【任务1-1-4】(使用列别名)要求了解所有商品的商品号、商品名称和总价值,以汉字标题商品号、商品名称和
4、总价值表示g_ID、g_Name和g_Price*g_Number。,SELECT g_ID 商品号,g_Name 商品名称,g_Price*g_Number 总价值FROM Goods,【提示】 用户可以通过指定别名来改变查询结果的列标题。 指定别名方法: “列名 列标题” ; “列名 AS 列标题” ; “列标题=列名”,SELECT g_ID 商品号,g_Name AS 商品名称,总价值=g_Price*g_NumberFROM Goods,课堂练习1,查询WebShop数据库中会员信息表Customers中会员的编号(c_ID)、用户名(c_Name)、真实姓名(c_TrueName)
5、、年龄和密码(c_Password)并以汉字标题显示列名。,SELECT 编号=c_ID,c_Name AS 用户名,c_TrueName 真实姓名,c_Password AS 密码, YEAR(GetDate()-YEAR(c_birth) 年龄FROM Customers,课堂练习2,查询WebShop数据库中订单表Orders中订单编号(o_ID)、订单日期(o_Date)、订单员工(o_ID)、并以汉字标题显示列名。,SELECT o_ID 订单编号,o_Date 订单日期,o_ID 订单员工FROM Orders,【任务1-2】选择行(查询记录),查询满足条件的记录通过WHERE子句
6、实现。在WHERE子句中,使用关系运算符进行条件的判断,【任务1-2-1】(简单查询)查询商品信息表中的“热点”商品的所有信息。,SELECT *FROM GoodsWHERE g_Status=热点,课堂练习1,查询员工表中的所有记录。,SELECT *FROM Employees,课堂练习2,查询WebShop数据库中“VIP会员”的详细情况。,SELECT *FROM CustomersWHERE c_Type=VIP,【任务1-2-2】(复合条件查询)查询商品类别为“01”,商品单价在2500元以上的商品信息,并以汉字标题显示商品号、商品名称、商品类别号和价格,SELECT g_ID
7、商品号, g_Name 商品名称, t_ID 商品类别号, g_Price 价格FROM GoodsWHERE t_ID =01 AND g_Price2500,【任务1-2-3】(复合条件查询)查询“湖南”省的所有男性的会员或者是年龄在30岁以下的会员的会员号、会员名称、性别、籍贯和年龄。,SELECT c_ID 会员号, c_Name 会员名称, c_Gender 性别, c_Address 籍贯, YEAR(GetDate()-YEAR(c_birth) 年龄FROM CustomersWHERE (c_Gender =男 AND LEFT(c_Address,2)=湖南) OR (YE
8、AR(GetDate()-YEAR(c_birth)30),课堂练习1,查询WebShop数据库中男“VIP会员”的详细情况。,SELECT *FROM CustomersWHERE c_Type=VIP AND c_Gender =男,课堂练习2,查询2007年6月30日以前生产,而且商品价格大于4000元的商品编号及商品名称 。,SELECT g_Name 商品名称, g_ID 商品编号 FROM Goods WHERE g_ProduceDate4000,查询进货总金额小于10000元的商品的商品名称、商品类别、商品价格、商品数量,课堂练习3,SELECT g_Name 商品名称, g_
9、ID 商品类别, g_Price 商品价格,g_Number 商品数量FROM Goods WHERE g_Price*g_Number2500ORDER BY t_ID,g_Price DESC,课堂练习1,对会员信息表按年龄进行降序排列,SELECT *FROM CustomersORDER BY YEAR(GetDate()-YEAR(c_birth) DESC,课堂练习2,对会员信息表按会员类型进行升序,类型相同的按年龄进行降序排列,SELECT *FROM CustomersORDER BY c_TYPE YEAR(GetDate()-YEAR(c_birth) DESC,【任务1-
10、4】GROUP BY 子句,GROUP BY子句用来对查询结果进行分组其语法格式如下:GROUP BY ALL 列名列表 WITH CUBE | ROLLUP ,聚合函数的功能是对整个表或表中的列组进行汇总、计算,求平均值或总和,常见的聚合函数及其功能,【任务1-4-1】(简单分组)了解每一类别的商品总数,SELECT t_ID 类别号,COUNT(t_ID) 商品数FROM GoodsGROUP BY t_ID,课堂练习1,统计会员信息表是中男、女会员的总人数,SELECT c_Gender 性别 ,COUNT(c_Gender ) 人数FROM CustomersGROUP BY c_Ge
11、nder,课堂练习2,按照商品状态分别统计“热点”、“促销”、“推荐”商品的数量,SELECT g_Status 商品状态, COUNT(g_Status ) 数量FROM GoodsGROUP BY g_Status,【任务1-4-2】(分组后排序)了解每一个订单的总金额,并根据订单总额进行升序排列,SELECT o_ID 订单编号, SUM(d_Price*d_Number ) 总金额FROM OrderDetailsGROUP BY o_IDORDER BY SUM(d_Price*d_Number ),课堂练习1,统计2006年1月1日到2007年7月1日的商品类别、商品进货总数量、商品平均价格,并按照商品进货总数量降序排列。,SELECT t_ID 商品类别, SUM(g_Number) AS 商品进货总数量, AVG(g_Price) AS 商品平均价格FROM GoodsWHERE g_ProduceDate BETWEEN 2006-1-1 And 2007-1-1GROUP BY t_ID ORDER BY SUM(g_Number) DESC,【任务2】连接查询,【任务3】子查询。,【任务4】联合查询,【任务5】分布式查询,【任务6】在SSMS中实现查询,