无论是菜鸟还是资深DBA,除了要掌握基本的数据库管理、操作之外,还需要对不同产品的发展历史有一个了解。许多Oracle数据库技术专家都对O记数据库发展过程有着很深的了解。而作为后起之秀的微软数据库平台SQL Server,其在中国的普及程度丝毫不亚于Oracle,许多高校计算机专业的数据库入门专业课都会用到的一个产品就是SQL Server。笔者当初学习数据库的时候就是用的SQL Server 2000,目前这个版本已经超过了支持的期限,当下***的是SQL Server 2005版,也是微软推出的最经典的版本之一。
DBA只掌握SQL Server 2005还是远远不够的,MS SQL Server各个版本之前都有着一定的关联性。那么在SQL Server***的“Denali”推出之前,我们就来回顾一下微软在近二十年中推出的SQL Server,它们有独特功能突破?它们对今后的数据库发展产生了怎样的影响?废话不多说,让我们进入正题。
微软SQL Server最初是在1987年诞生,称为Sybase SQL Server。转过年来,微软、Sybase和 Ashton-Tate三家公司共同开发了著名的OS/2版本。在此之后,Ashton-Tate推出了SQL Server的开发,剩下的两家公司微软和Sybase签署了共同开发协议,并致力于开发针对Windows NT的数据库产品。这也是SQL Server 4.0诞生的前提,在这之后,Sybase与微软分道扬镳,微软继续研发Windows NT平台数据库,而Sybase则转向了UNIX平台。1995年,SQL Server 6.0正式问世,这也是***款完全由微软公司开发的数据库产品。进入90年代以后,SQL Server的版本更新速度也驶入了快车道,几乎每一年都会有一个更新的版本。1998年推出的SQL Server 7.0可以说是革命性的突破,它在底层存储以及数据库引擎方面都做了重大的改进。
在微软推出SQL Server 2000之前,产品中还存在着不少Sybase遗留的代码,而SQL Server 2000则完全对代码进行了重写,经过了十多年的起步期,微软SQL Server终于进入了黄金十年,之后发布的SQL Server 2005、SQL Server 2008以及SQL Server 2008 R2都成为主流数据库领域的佼佼者。业界还将后来的三个版本贴上了标签,SQL Server 2005被人们称作是开发者版本(加入了.NET CLR,并提供一系列强大的开发工具),SQL Server 2008是DBA版本(添加对多种数据类型的支持, Windows PowerShell),而去年发布的SQL Server 2008 R2由于它丰富的数据分析、报表工具(PowerPivot、SSAS、Report Builder),被看作是SQL Server的BI版本。
SQL Server发展编年史

SQL Server除了数据库引擎之外,还为开发者和DBA提供了一系列的服务工具,大家比较熟悉的包括了:代理服务(Service Broker)、分析服务(Analysis Services)、报表服务(Reporting Services)和集成服务(Integration Services)。我们可以通过微软Visual Studio、SQL Server Management Studio对数据库进行管理和开发。
SQL Server还为各种需求提供了不同的版本系列,其中包括了SQL Server>
winform 用sql语句做分页 怎么写sql语句?
select top {a} * FROM table1 where id not in (select top {a*b} id from table1)a是你每页显示的记录数.b是你的第几页.{a},{a*b}在程序里处理成相应的数字字符串拼接到sql文中. 补充.添加order byselect top {a} * from table1 where id not in (select top {a*b} id from table1 order by time) order by time ---------多表查询,可以考虑把查询结果建立一个View.然后再使用以上语句.
复杂sql语句
语句(假设你的系统取日期月份的函数MONTH): SELECT MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1 产生的结果是: 1 23 2 10 3 45 如果你计算每个月度(、、……)的注册人数,应该使用下面的语句(假设你的系统取日期年度的函数是YEAR): SELECT YEAR(注册日期)+ +MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1 假如你的系统连接字符串不是使用+,那换为相应的字符或者函数,比如INFORMIX是使用YEAR(注册日期)||MONTH(注册日期),比如mysql是使用CONcatE函数 补充: SELECT语句的教材专门有聚合函数那一章,你仔细看看吧。 在SELECT语句里面,GROUP子句配合SUM,AVG,MAX,MIN等函数完成分类统计功能,执行我的两个语句,查看输出的结果,你就知道GROUP的含义,下面取一个最简单的例子: “SELECT COUNT(*) FROM 表”这个SQL语句返回的结果只有一个,就是数据库中的总记录条数,如果我们想统计不同用户名的分组进行汇总的记录条数,就应该在SELECT后增加一个字段,同事GROUP BY这个字段,完整的语句是: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名 这个语句也可以这样写: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 1 这时候GROUP BY后面的整数表示按照相应序号的SELECT列分组,这里的1表示第一个的选择结果“用户名”。 如果我们想按用户分组查记录数,但是只现实有重复的记录,那么用GROUP BY的一个HAVING修饰,完整语句如下: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名 HAVING COUNT(*)>1
复杂的sql语句怎么写
1、select * from 表 where year(列名) = year(getdate())-1 and month(列名)= 3--这个比较容易理解,就不解释了2、select datepart(wk,dateadd(year,-1,getdate())) -- 去年的今天是去年的第几周select datepart(wk,dateadd(day,1-day(dateadd(year,-1,getdate())),dateadd(year,-1,getdate())))-- 去年的本月的1号是去年的第几周select datepart(wk,dateadd(year,-1,getdate())) -datepart(wk,dateadd(day,1-day(dateadd(year,-1,getdate())),dateadd(year,-1,getdate())))--上边两者相减就是去年的今天是去年本月的第几周
发表评论