Emerson回来之后,在过程中遇到的一些问题,再次做一些整理,包括本篇的Sql Server各版本之间的区别和另一篇数据库函数。

(博文内容来自网络)

数据类型

SQL Server 2008 数据类型

SQL Server 2005 数据类型

SQL Server 2000 数据类型

公共语言运行库用户定义类型 (UDT):8000 个字节或更少

UDT

image

UDT:大于 8000 个字节1

varbinary(max)

image

date 2, 3

nvarchar(10)

nvarchar(10)

datetime2 2, 3

nvarchar(27)

nvarchar(27)

datetimeoffset 2, 3

nvarchar(34)

nvarchar(34)

FILESTREAM 属性1, 4

varbinary(max)

不支持

geography 和 geometry1, 3

varbinary(max)

image

hierarchyid 1, 5

varbinary(max)

image

nvarchar(max)

nvarchar(max)

ntext

time 2, 3

nvarchar(16)

nvarchar(16)

varchar(max)

varchar(max)

text

varbinary(max)

varbinary(max)

image

xml

xml

ntext

复合运算符

SQL2008现已提供可执行操作并将变量设置为结果的运算符(例如SET @x += 2)。

CONVERT 函数

SQL2008 CONVERT 函数现已增强,允许在二进制和字符十六进制值之间进行转换

日期和时间功能

SQL Server 2008 包含对 ISO 周-日期系统的支持

语法

DATEPART ( datepart , date )

参数

datepart

是将为其返回 integer 的 date(日期或时间值)的一部分。下表列出了所有有效的 datepart 参数。用户定义的变量等效项是无效的。

datepart

缩写

year

yy, yyyy

quarter

qq, q

month

mm, m

dayofyear

dy, y

day

dd, d

week

wk, ww

weekday

dw

hour

hh

minute

mi, n

second

ss, s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk, isoww

date

是一个表达式,可以解析为 time、date、smalldatetime、datetime、datetime2 或 datetimeoffset 值。date 可以是表达式、列表达式、用户定义的变量或字符串文字。

返回类型

int

返回值

每个 datepart 及其缩写都返回相同的值。

执行

SELECT DATEPART(year,'2007-10-30 12:15:32.1234567 +05:10')

go

SELECT DATEPART(YYYY,'2007-10-30 12:15:32.1234567 +05:10')

go

SELECT DATEPART(YY,'2007-10-30 12:15:32.1234567 +05:10')

发现结果都是2007

time 数据类型的默认时-分-秒为 00:00:00。下面的语句具有 datepart 的时间部分参数、date 的日期参数,并返回 0, 0, 0。

SELECT DATEPART(hour, '2007-06-01')

,DATEPART(minute, '2007-06-01')

,DATEPART(second, '2007-06-01');

TOP 表达式

SQL Server 2000的TOP是个固定值,2000以后的改进了。 如

declare @n int

set @n = 10

select TOP(@n) * from humres

分页

SQL Server 2005以后才支持分页,使用ROW_NUMBER()函数

TRY ... CATCH

SQL Server 2000没有异常,T-SQL必须逐行检查错误代码, 2005以后增加了try catch功能

MAX类型

使用VARCHAR(MAX) NVARCHAR(MAX)类型代替TEXT NTEXT是不错的选择

CTE

先看下面一个嵌套的查询语句:

select * from humres h

where h.id in (

select h.id from humres h where h.objname like 'sysadmin%'

)

上面的查询语句使用了一个子查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句非常难以阅读和维护。因此,也可以使用表变量或者临时表的方式来解决这个问题(这里sql省略了)。这样做将使SQL语句更容易维护,但又会带来另一个问题,就是性能的损失。

在SQL Server 2005中提供了另外一种解决方案,这就是公用表表达式(CTE),使用CTE,可以使SQL语句的可维护性,同时,CTE要比表变量的效率高得多。具体sql如下:

with humres1 as (select h.id from humres h where h.objname like 'sysadmin%')

select * from humres h

where h.id in (select * from humres1)

CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔,如下面的SQL语句所示:

with humres1 as (select h.id from humres h where h.objname like 'sysadmin%'),

humres2 as (select h.id from humres h where h.objname like 'sysadmin1%')

sqlcmd

命令行,但是功能有限。适合机器跑不动SQL   Server   Management   Studio的机器使用。

加密

SQL Server 2008加密备份的方式可以防止数据泄漏和被窜改。另外,备份的恢复可以限于特点的用户。

兼容性

sqlServer2005支持sqlServer2000,而SqlServer 2008终止对SQL 2000的支持, 对SQL 2000的主流支持将被终止。

数据压缩

通常,数据压缩总是和节约硬盘、更小的物理文件、备份次数的减少是联系在一起的。而对于SQL Server的数据压缩而言,主要的目的是实际的表的尺寸的减小。数据压缩的某些好处包括以下几点:

通过减少I/O和提高缓存命中率来提升查询性能。和其他特点是正交的,对数据和索引都可用,据微软所说,使用压缩时会轻微的增加CPU的使用,整个系统的性能会因为I/O的减少而得多提升。

操作界面

SQL Server 2005 引入了用于管理 SQL Server 的新工具。SQL Server Management Studio 取代了 SQL Server 企业管理器、SQL 查询分析器、MDX 示例应用程序和 Analysis Manager 的一些功能。SQL Server 2000 企业管理器和 SQL 查询分析器不能用于管理更新的版本。

数据分区

SQL Server 2005以前版本的一个问题是随着时间的推移数据库越来越大,备份需要的空间越来越多,如何处理数据库中的历史数据是很棘手的事情。2005后,可以根据字段值的范围将表和索引划分为多个分区从而可以轻松管理一个几个TB大小的数据库系统。无论数据如何增长,你都可以使用分区技术使得数据库大小保持相对稳定

可编程性

可编程性,有了CLR 集成,你可以轻松利用.NET语言的优势如其面向对象的封装、继承和多态特性,编写出那些需要对数据进行复杂数值计算或逻辑的代码,如字符串处理,数据加密算法,XML数据操作等等。由于CLR代码宿于SQL Server进程,你可以非常容易访问数据库中的数据。有了CLR,你不再局限于T-SQL,你现在立即拥有了.NET 框架类库提供的各种各样的类和例程,以及.NET语言提供的一致的编程模型,如错误处理。

全文搜索增强

全新设计的全文检索引擎提高了性能,除了性能,SQL Server 2005 中的全文索引的集成性也大大加强。在SQL Server 2000 中很难对全文检索进行备份。一旦有数据库恢复或移动,你得重新重建索引。Sql2005后,可以和数据库一起备份和恢复全文索引了

复制增强

SQL Server 2000 中,仅支持向其他数据库(如DB2或Oracle)发布数据,而在SQL Server 2005后,可将Oracle 数据库直接复制到SQL Server。

运行时添加CPU

这个功能SQL SERVER 2008可以在硬件升级时保持可用。

Sql Server2000,2005,2008各版本主要区别的更多相关文章

  1. SQL SERVER 2005/2008 中关于架构的理解(二)

    本文上接SQL SERVER 2005/2008 中关于架构的理解(一)      架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...

  2. SQL SERVER 2005/2008 中关于架构的理解(一)

    SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...

  3. 【转】SQL SERVER 2005/2008 中关于架构的理解

    在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询,提示“对象名'CustomEntry' 无效.”.当带上了架构名称 ...

  4. 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

    Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感 ...

  5. 加载MySQL、Oracle、SQL Server 2000、SQL Server 2005及以上版本 的加载数据库驱动程序

    2018-11-04  20:00:59 开始 //getConnection(String url, String user, String password) //url:连接数据库的URL 3 ...

  6. 怎样修改SQL Server 2005/2008的系统存储过程(转)

    我们知道,SQL Server 2005/2008的系统存储过程在正常情况下是无法直接修改的. 尽管本文是介绍怎样修改它的,但在这里,我还是建议大家尽量不要去修改它.(好像有点绕哈...) OK,闲话 ...

  7. PHP连接Microsoft SQL Server 2005/2008

    PHP自带的MSSQL扩展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提 ...

  8. java连接sql server2000/2005

    接触Java或者JSP,难免会使用到数据库SQL Server 2000/2005(我使用2005标准版[9.0.3054]测试),经过自己的搜索和研究,使用JDBC连接SQL Server成功,特此 ...

  9. SQL Server 2005,2008 正则表达式 替换函数应用详解

    CREATE function dbo.regexReplace ( @source ntext, --原字符串 ), --正则表达式 ), --替换值 , --是否是全局替换 --是否忽略大小写 ) ...

随机推荐

  1. fork和exec函数

    #include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...

  2. qt 与mysql建立交互式连接

    void QSqlDatabase::setConnectOptions(const QString & options = QString())Sets database-specific ...

  3. Git学习笔记(一)

    刚开始学Git,记录下来,讹误之处还望指教. 安装好git之后,有两个东东,如图: git bash 表示是命令行操作. git GUI 表示是图形化操作.但是这个界面用起来不方便,另一个图形化操作工 ...

  4. VC++中 wstring和string的互相转换实现

    在VC++开发中,经常会用到string和wstring,这就需要二者之间的转换,项目中封装了wstring和string相互转换的2个函数,实现如下: //将wstring转换成string std ...

  5. a标签中的href="#"与href="javascript:void(0)"区别

    转自http://blog.csdn.net/fightplane/article/details/5190037 <a href="#"> 点击链接后,页面会向上滚到 ...

  6. Ext信息提示对话框

    Ext.window.MessageBox是一个工具类,他继承自Ext.window.Windoe对象,用来生成各种风格的信息提示对话框,其实例对象可以通过Ext.MessageBox或Ext.Msg ...

  7. WPF – 使用触发器

    WPF – 使用触发器 WPF提供了很重要的一个东西就是绑定Binding, 它帮助我们做了很多事情,这个我们在WPF学习之绑定这篇里边有讲过.对于Binding我们可以设置其绑定对象,关系,并通过某 ...

  8. SQL多行拼接为一行

    使用简单T-SQL,拼接一列多行为一行.按SQL SERVER的说法叫做自拼接(PS:区分自连接) 还有一种方法是for xml path的方式,感觉不实用. declare @Result varc ...

  9. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

  10. java 文件和流

    最近工作中涉及到一些文件操作的东西,闲下来刚好做个整理. 控制台IO 在控制台使用键盘作为标准输入并使用终端窗口(在windows下,经常是命令提示符或者是PowerShell:在linuxx/OS ...