SQL Server2012学习之(九) :select语句及其子句的基本操作

这篇博客主要是使用T-SQL语句进行数据库操作。包括简单的select语句,where、Order by、Group by、having子句等操作。

1.简单的select语句操作
select语句的语法操作见下图,可以借助之后的代码来理解。

SQL Server2012学习之(九) :select语句及其子句的基本操作_第1张图片

查询所有列的所有值,在新建查询中输入
select  from  Person . Address       //*代表所有列
即可,见下左图

查询部分列,输入要查询的部分列(AddressID,City以逗号为间隔)
select  AddressID , City  from  Person . Address
即可,见下右图

SQL Server2012学习之(九) :select语句及其子句的基本操作_第2张图片
 

用select语句作为计算器,输入要计算的数
select  14 * 43  as  计算结果     //把14*13保存在新建的列“计算结果”中
即可,见下左图

用select语句把数据表中的某几列保存在新表中,输入
select  AddressID , City  as  地址  from  Person . Address     //把Person.Address表中的AddressID,City数据取出,存入“地址”表中
即可,见下右图

SQL Server2012学习之(九) :select语句及其子句的基本操作_第3张图片     

用select语句把数据表中某列的重复信息剔除,输入
select  DISTINCT  City  from  Person . Address     //DISTINCT关键字表示City中不允许出现两组相同的数据
即可 ,见下图

SQL Server2012学习之(九) :select语句及其子句的基本操作_第4张图片

2.设置查询条件(where子句)

在查询过程中,有时会加上一些限定条件,比如性别或者具体的名字信息,以达到检索目的,这是就需要使用where子句

以AdventureWorks2012中的Person.Person为例,在新建查询中输入
select  from  Person . Person
where  FirstName = 'Terri'     //where限定人名的FirstName
即可,如下左图

可以看到,左图中有两个人的名字符合where限定,如果要继续选定某一个具体的人,可以在where子句中设置“and”连接符,输入
select  from  Person . Person
where  FirstName = 'Terri'  and  MiddleName = 'Lee'
即可,如下右图。有“and”就有“or”,可自行探索!
     
SQL Server2012学习之(九) :select语句及其子句的基本操作_第5张图片

3.排序(Order by)
在筛选数据库的时候,很多时候需要对数据进行排序,以便更好地查看,这时就涉及到排序操作
以2中左图为例,在筛选完数据后,有两个满足条件的数据,若要把他们的编号按照升序排列,需要用到order by语句,输入
select  from  Person . Person
where  FirstName = 'Terri'
order  by  BusinessEntityID  ASC          //默认升序,也可以用ASC代表升序,DESC代表降序
即可进行排序,如下图。(注:如果用order by的结果中有几个相同的值,还可以设置别的条件进行二次排序,即在第一个限定条件处加“,”在添加第二个限定语句)

SQL Server2012学习之(九) :select语句及其子句的基本操作_第6张图片

4.分组(Group by)

在很多时候,筛选出来的数据会有许多个组,如果要统计不同组对应的平均值等信息,需要用到分组操作,用一个例子来解释。
下图是一个很好的分组案例,选取了表中SalesOrderID<43700的数据,统计各个TerritoryID的平均TotalDue,就可以使用分组操作。

SQL Server2012学习之(九) :select语句及其子句的基本操作_第7张图片

输入
select  TerritoryID , AVG ( TotalDue as  收益  from  Sales . SalesOrderHeader     //根据TerritoryID对上表中的TotalDue进行取平均值,得出的结果存在新列“收益”中
where  SalesOrderID < 43700
group  by  TerritoryID                  //以TerritoryID作为分组依据
即可,结果如下图

SQL Server2012学习之(九) :select语句及其子句的基本操作_第8张图片


5.having子句

having子句 只有在查询语句中包含了group by语句时才能使用。可以将已分组的数据进行筛选,以上表为例,territoryID为1到7的组对应的收益情况如表所示,要想统计收益大于等于10000的数据,可以输入
select TerritoryID , AVG ( TotalDue ) as 收益 from Sales . SalesOrderHeader    
where SalesOrderID < 43700
group by TerritoryID
having AVG ( TotalDue )>= 10000          //对TotalDue进行限定
即可,结果如下
SQL Server2012学习之(九) :select语句及其子句的基本操作_第9张图片

你可能感兴趣的:(SQL,Server2012)