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

来源:互联网 发布:知乎装修精华帖 编辑:程序博客网 时间:2024/05/20 13:04
这篇博客主要是使用T-SQL语句进行数据库操作。包括简单的select语句,where、Order by、Group by、having子句等操作。

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



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

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


 

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

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

     

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



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”,可自行探索!
     


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



4.分组(Group by)

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



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




5.having子句

having子句只有在查询语句中包含了group by语句时才能使用。可以将已分组的数据进行筛选,以上表为例,territoryID为1到7的组对应的收益情况如表所示,要想统计收益大于等于10000的数据,可以输入
selectTerritoryID,AVG(TotalDue)as收益fromSales.SalesOrderHeader   
whereSalesOrderID<43700
groupbyTerritoryID
havingAVG(TotalDue)>=10000          //对TotalDue进行限定
即可,结果如下


阅读全文
0 0
原创粉丝点击