内容正文:
查询操作
第五章
01
单表查询
单表查询
01
选择列
1.所有列
【任务1-1】网站销售部管理人员或采购部管理人员需要了解所有商品的详细信息。
SELECT*
FROM Goods
该语句无条件地把Goods表中的全部信息查询出来,所以也称为全表查询,这是最简单的一种查询,运行结果如图5-3所示。
单表查询
01
选择列
2.指定列
【任务1-2】网站管理人员在了解商品信息时只需要了解所有商品的商品号、商品名称和商品单价信息,而不需要了解商品的其他信息。
SELECTg ID, g_Name, gPrice
FROM Goods
该语句把 Goods表中所有商品的g_ID(商品号)、g_Name(商品名称〉和g_Price(商品单价)查询出来,运行结果如图5-4所示。
单表查询
01
选择列
3.计算列
【任务1-3】在Goods表中存储了商品的基本信息(包括商品数量和商品单价),现在需要了解网站中所有商品的商品号、商品名称和商品总金额。
SELECT gID,g Name,g Price*gNumber
FROM GoodsR
运行结果如图5-6所示。
单表查询
01
选择列
4.使用别名
在显示结果集时,可以指定以别名(显示的名称〉代替原来的列名,通常也用来显示结果集中列的汉字标题。
【任务1-4】要求了解所有商品的商品号、商品名称和总价值,但希望以汉字标题商品号、商品名称和总价值表示g_ID、g_Name和g _Price*g_Number。
SELECT g ID商品号, g Name 商品名称,g_Price*g_ Number 总价值FROM Goods
运行结果如图5-7所示。
单表查询
01
选择行
1.查询满足条件的行
查询满足指定条件的记录可以通过WHERE子句实现,WHERE后可以使用关系运算符来进行条件判断。在WHERE中常见的运算符如表5-2所示。
单表查询
01
选择行
1.查询满足条件的行
(1)简单条件查询。
【任务1-5】需要了解所有商品中“热点”商品的所有信息。
SELECT*
FROM Goods
WHERE g_Status=’热点’
运行结果如图5-8所示。
单表查询
01
选择行
1.查询满足条件的行
(2)复合条件查询。使用逻辑运算符AND和OR可连接多个查询条件。如果这两个运算符同时出现在同一个WHERE子句中,则 AND 的优先级高于OR,但用户可以用括号改变优先级。
【任务1-6】需要了解商品类别为“01”、商品单价在2500元以上的商品信息,要求以汉字标题显示商品号、商品名称、商品类别号和价格。
运行结果如图5-9所示。
单表查询
01
选择行
2.消除重复行
【任务1-16】需要了解在 WebShop 网站进行购物并下订单的会员编号,如果一个会员下了多个订单,则只需要显示一次会员编号。
SELECT g_ID FROM OrderDetails
运行结果如图5-19所示。
单表查询
01
选择行
2.消除重复行
如果想让会员编号“c0001”只显示一次,则必须指定DISTINCT短语。
SELECT DISTINCT g_ID
FROM OrderDetails
运行结果如图5-20所示。
单表查询
01
ORDER BY子句
在利用T-SQL语句进行查询时,如果没有指定查询结果的显示顺序,DBMS 将按其最方便的顺序(通常是记录在表中的先后顺序)输出查询结果。
【任务2-1】需要了解商品类别号为“01”的商品的商品号、商品名称和商品单价,并要求根据商品的价格进行降序(价格由高到低)排列。
运行结果如图5-22所示。
单表查询
01
GROUP BY子句
GROUP BY子句可以将查询结果表的各行按某一列或多列取值相等的原则进行分组。一般情况下,分组的目的是便于进一步统计。在SELECT子句中使用聚合函数对记录组进行操作,可返回应用于一组记录的单一值。T-SQL中常见的聚合函数如表5-3所示。
单表查询
01
分页和排名
过去使用SQL Server 2000进行分页时,需要用到临时表。在SQL Server 2019中,借助于ROW_NUMBER可以很方便地实现分页。ROW_NUMBER的基本语句格式如下:
使用RANK可返回结果集的分区内每行的排名,行的排名是相关行之前的排名数加1。RANK的基本语句格式如下:
$$