SQL Server数据查询语句
在SQL server中数据查询语句包括Select、From、where、group by和order by子句。
一、select语句的语法
select是SQL Server中最核心,最常用的命令,用于从数据库中查询数据。特德基本语法格式如下所示:
select [distinct] 列名1,列名2...
from 表名 [where 条件]
[group by 列名1,列名2,.....] --将数据分组
[having 条件] --对分组后的数据进行筛选
[order by 列名 [ASC/DESC],....] --对最终结果排序
1、select子句:
用于指明查询结果集的目标列。目标列可以是从数据源中投影得到的字段、与字段相关的表达式或数据统计的函数表达式,目标列还可以是常量。如果目标列中使用了两个基本表或试图中相同的列名(多表联合是出现),要在列名前面加表名限定(表明.列名)
--基本语法格式
SELECT [ ALL | DISTINCT ] [ TOP (expression) [ PERCENT ]column1 [ AS alias1 ],column2 [ AS alias2 ],expression [ AS alias3 ],...
- all(默认):返回所有符合条件的行,包括重复行
- distinct:去除重复行,只返回唯一不同的值;对性能有影响,因为需要排序和去重操作
- top子句:限制返回的行数
- *:指明返回在from子句中包括的表和视图的全部列
2、group by子句
用于将具有相同值的行分组到汇总行中。它通常与聚合函数(如count,sum,avg,max,min)配合使用,以便于对每个组进行计算。核心思想:将一个大表,根据某列的相同值,分成多个小组,然后对每个小组进行统计计算。
SELECT column1, aggregate_function(column2)
FROM table_name
WHERE conditions -- 可选:在分组前过滤行
GROUP BY column1
ORDER BY column1; -- 可选:对结果排序
--group by查询Sales表每个人所销售的总金额
select SalesPerson as 销售姓名,sum(Amount) as 总金额 from Sales
where SalesPerson!='赵六' --在group by分组之前的数据where可以对其附加条件
group by SalesPerson --根据销售姓名进行分组
having sum(Amount)>500 --查找总销售金额超过500的销售员,;where是不可以与聚合函数一起用的,所以在group by分组之后的数据不能使用where;having则不可以在group by之前使用