时间:2021-07-01 10:21:17 帮助过:2人阅读

 Select ProductID,ProductName,CategoryID,UnitPrice
Select ProductID,ProductName,CategoryID,UnitPrice From Products
From Products
 Select ProductID As ID,ProductName As Name,CategoryID,UnitPrice As Price
Select ProductID As ID,ProductName As Name,CategoryID,UnitPrice As Price From Products
From Products
 2)在结果集中可以使用表达式计算列
 Select ProductID,ProductName,CategoryID,UnitPrice,
Select ProductID,ProductName,CategoryID,UnitPrice, OutPrice=UnitPrice*1.2
OutPrice=UnitPrice*1.2 From Products
From Products
 3)Order by对结果集中的列进行排序,如果倒序,加DESC,如果是多列,选按第一列排序,如果第一列相同,按第二列排序,依此类推
 Select ProductID,ProductName,CategoryID,UnitPrice
Select ProductID,ProductName,CategoryID,UnitPrice From Products
From Products Order by CategoryID,Unitprice Desc
Order by CategoryID,Unitprice Desc
 4)Top n:显示结果集中的前n行,使用Top n时可以不存在Order by;Top n With Ties:如果第n行后存在与第n行相等的值,则也显示这些行,使用Top n With Ties时,一定要有Order by。
 Select Top 12
Select Top 12  ProductID,ProductName,CategoryID,UnitPrice
ProductID,ProductName,CategoryID,UnitPrice From Products
From Products
 Select Top 12 With Ties
Select Top 12 With Ties ProductID,ProductName,CategoryID,UnitPrice
ProductID,ProductName,CategoryID,UnitPrice From Products
From Products Order By UnitPrice
Order By UnitPrice
  
 2、where条件子句:
使用where时后接条件表达式,条件表达式可以是:
1)使用比较操作符连接的条件
2)使用逻辑操作符连接的条件
3)使用Between...and连接的条件:
where c betweeb v1 and v2相当于where c>=v1 and c<=v24)使用in:
where c in(v1,v2,v3)相当于where c=v1 or c=v2 or c=v35)使用Is Null或Is Not Null
6)使用like做字符串的模糊查询,其中支持的通配符有:
下划线,表示任意单一字符;
星号,表示任意多个任意字符;
[<list>],表示单一字符,字符必须是列表中存在的字符;
[^<list>],表示单一字符,字符必须是列表中不存在的字符;
3、汇总和分类汇总
1)使用聚集函数进行数据汇总,使用Group by <Column_Name [, ...n]>进行分类汇总
Select sum(UnitPrice) as [SUM]
From Products
Select CategoryID, sum(UnitPrice) as [SUM]
From Products
group by CategoryID
2)查询的列必须是在Group By中出现的类3)必须按条件语句(where)、分类汇总语句(group by)、排序语句(order by)的顺序查询。系统也将按照条件语句(where)、分类汇总语句(group by)、排序语句(order by)的顺序执行。
Select CategoryID,sum(UnitPrice) as [SUM]
From Products
Where ProductID<50
group by CategoryID
Order By [Sum] Desc
4)如果对汇总结果实现条件,使用Having子句,不可以使用Where条件。
4、关于排名等的函数
在SQL Server中新引入的函数:Rank、Dense_Rank、Row_Number、NTile(n)
Select ProductID,ProductName,UnitPrice,
Rank() over(Order By UnitPrice) as [Rank],
Dense_Rank() over(Order By UnitPrice) as [Dense_Rank],
Row_Number() over(Order By UnitPrice) as [Row_Number],
NTile(10) over(Order By UnitPrice) as [NTile]
From Products
 5、多表连接
1)使用Where连接的情况
Select ProductID,ProductName,CategoryName
From Products,Categories
where Products.CategoryID=Categories.CategoryID
2)使用Join语句连接Select ProductID,ProductName,CategoryName
From Products p join Categories c
on p.CategoryID=c.CategoryID
3)Join连接类型:
(1)内连接
(2)外连接
(3)交叉连接
6、子查询
1)做为单值使用:要求查询的结果为单行单列,与比较操作符搭配使用。
declare @sum money
select @sum=sum(UnitPrice) from Products
select * from Products
where UnitPrice>@sum
Select * from
Where UnitPrice>(Select sum(UnitPrice) from Products)
2)做为多值使用:要求查询的结果为单列,与In操作符搭配使用。
Select p.* from
Products p join Categories c on p.CategoryID=c.CategoryID
where CategoryName like ‘c%‘
Select * from Products
where CategoryID in
(Select CategoryID from Categories
where CategoryName like ‘c%‘)
3)做为结果集(也可以简单地理解为一个“表”)使用。
Select ProductID,ProductName,UnitPrice
from
(
Select ProductID,ProductName,UnitPrice
Row_Number() over(order by UnitPrice) as RowNumber
From Prodcuts
) as t
where RowNumber between 41 and 50
SQL Server(三):Select语句
标签: