SQL Server 2019 单表查询实验

一、相关知识点

1. SELECT 语句的基本语法:

   SELECT column1, column2, ...

   FROM table_name;

2. 选择特定列:

   使用 SELECT 语句时,可以指定要检索的列名,用逗号分隔。也可以使用通配符 * 来选择所有列。

3. 过滤行数据:

   使用 WHERE 子句可以添加条件来过滤行数据。例如,只选择满足某个条件的行:

   SELECT column1, column2, ...

   FROM table_name

   WHERE condition;

4. 分组查询:

(1)基本语法:

   SELECT column1, column2, ..., aggregate_function(column)

   FROM table_name

   GROUP BY column1, column2, ...;

(2) 分组列:

   在 GROUP BY 子句中指定要进行分组的列。查询结果将根据这些分组列进行分组。

(3)聚合函数:

   在 SELECT 子句中,可以使用各种聚合函数对分组列进行计算。常见的聚合函数包括 SUM、COUNT、AVG、MIN 和 MAX 等。

(4)过滤分组数据:

   可以在 HAVING 子句中添加条件来过滤分组后的数据。只有满足条件的分组才会包含在查询结果中。

   SELECT column1, column2, ..., aggregate_function(column)

   FROM table_name

   GROUP BY column1, column2, ...

   HAVING condition;

(5)多列分组:

   可以在 GROUP BY 子句中指定多个列,以便按照多个列进行分组。

   SELECT column1, column2, ..., aggregate_function(column)

   FROM table_name

   GROUP BY column1, column2, ...;

(6)排序分组数据:

   可以使用 ORDER BY 子句对分组查询的结果进行排序。可以按照分组列或聚合函数的计算结果进行排序。

(7)嵌套分组:

   在 GROUP BY 子句中可以使用表达式,甚至是其他查询的结果作为分组条件,从而实现嵌套分组。

5. 排序数据:

   可以使用 ORDER BY 子句对结果进行排序。默认按照升序排列,可以使用 ASC(升序)或 DESC(降序)关键字来指定排序方式。

6. 对查询结果进行限制:

   使用 TOP 关键字可以限制查询结果的行数。例如,只选择前 5 行:

   SELECT TOP 5 column1, column2, ...

   FROM table_name;

7. 去重数据:

   使用 DISTINCT 关键字可以去重查询结果。例如,只返回不重复的城市名称:

   SELECT DISTINCT city

   FROM table_name;

8. 使用聚合函数:

   SQL Server 提供了多个聚合函数,例如 SUM、COUNT、AVG 等,用于计算列中的汇总数据。例如,计算某列的总和:

   SELECT SUM(column_name)

   FROM table_name;

二、软件版本

Microsoft SQL Server Management Studio(v18.7.1)

三、实验所用数据库

实验所基于的销售管理数据库中涉及以下表:

四、实验内容

1、指定列或全部列查询(Select

  1. 查询商品表(Product)中所有商品的信息
  2. 检索客户表(Customer)中前5位客户的公司名称、联系人姓名和地址。
  3. 从员工表(Employee)中查询所有员工的部门信息。
  4. 查询将员工表中(Employee)所有员工的工资提高10%后的信息,输出字段为:员工姓名,原工资,提高后工资。
  5. 统计员工表(Employee)中的职工数。

2、按条件查询(Where)

  1. 检索员工表所有姓李和姓章的员工信息。
  2. 检索员工表姓李的名字只有一个汉字的员工信息。
  3. 查询员工表中工资在3400以下的女性员工姓名和工资信息。
  4. 查询员工表中工资在5000到7000之间的员工信息。(Between)
  5. 检索销售订单表(Sell_Order)中,员工编号为1、5、7的员工接收订单的信息。(IN)
  6. 检索部门表(Department)中主管位置不为空的部门信息。

3、分组统计查询

  1. 查询员工表中男女员工的平均工资。输出字段性别,平均工资。
  2. 查询销售订单表中各种商品的订货总数,输出字段为商品编号,订货总数。
  3. 查询销售订单表中,订购两种以上商品的客户编号,订购商品种类。

4、对查询结果排序

  1. 查询员工表中男女员工的平均工资。输出字段性别,平均工资,按照平均工资升序排列。
  2. 查询销售订单表中各种商品的订货总数,输出字段为商品编号,订货总数,按照订货总数降序排列。

五、实验过程及数据记录

1、指定列或全部列查询(Select

(1) 查询商品表(Product)中所有商品的信息

(2) 检索客户表(Customer)中前5位客户的公司名称、联系人姓名和地址。

(3) 从员工表(Employee)中查询所有员工的部门信息。

(4) 查询将员工表中(Employee)所有员工的工资提高10%后的信息,输出字段为:员工姓名,原工资,提高后工资。

(5) 统计员工表(Employee)中的职工数。

2、按条件查询(Where)

(1) 检索员工表所有姓李和姓章的员工信息。

(2) 检索员工表姓李的名字只有一个汉字的员工信息。

(3) 查询员工表中工资在3400以下的女性员工姓名和工资信息。

(4) 查询员工表中工资在5000到7000之间的员工信息。(Between)

(5) 检索销售订单表(Sell_Order)中,员工编号为1、5、7的员工接收订单的信息。(IN)

(6) 检索部门表(Department)中主管位置不为空的部门信息。

3、分组统计查询

(1) 查询员工表中男女员工的平均工资。输出字段性别,平均工资。

(2) 查询销售订单表中各种商品的订货总数,输出字段为商品编号,订货总数。

(3) 查询销售订单表中,订购两种以上商品的客户编号,订购商品种类。

4、对查询结果排序

(1) 查询员工表中男女员工的平均工资。输出字段性别,平均工资,按照平均工资升序排列。

(2) 查询销售订单表中各种商品的订货总数,输出字段为商品编号,订货总数,按照订货总数降序排列。

六、实验小结

1、我认为实验前要熟悉查询操作的知识点,如果熟悉每个知识点做起来很轻松。我在实验中卡在了分组查询的第三题,原因是不知道count、sum、avg、max、min等聚集函数可以指定distinct短语,在指定distinct短语后可以取消指定列中的重复值。在分组查询问题的第三问中,利用count(distinct ProductID)group by CustomerID可以求出每个客户订购的商品种类数,如果不加就是每个客户的订单数。

2、实验中还需要注意distinct短语的使用,在本次实验中用到的表都不存在重复行,所以在select使用通配符(*)时不需要添加distinct。但是,在进行投影操作后就要考虑投影后的表中是否会存在相同行,这时候就需要考虑是否需要添加distinct。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值