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. MySQL执行计划 EXPLAIN参数

    MySQL执行计划参数详解 转http://www.jianshu.com/p/7134286b3a09 MySQL数据库中,在SELECT查询语句前边加上“EXPLAIN”或者“DESC”关键字,即 ...

  2. Linux中统计某个文件夹的大小

    进入这个文件夹内 然后du -sh命令

  3. 新安装XAMPP,phpMyAdmin错误:#1045 - Access denied for user 'root'@'localhost' (using password: NO)

    错误如下: 打开D:\Program Files\xampp\phpMyAdmin(你的xampp的安装目录下的phpMyAdmin目录)目录下的config.inc.php文件 将 改为 然后,错误 ...

  4. 我的第一个phonegap开发WebApp的demo 怎么搭建安卓开发环境以及安装phonegap

    一.先来张图,赏心悦目观赏一下,哈 . 这个就是使用phonegap框架搭建起来的,运行在安卓环境上的第一个demo. 安卓的开发环境,大家都会搭建了,所以不赘述.讲一下,安装phonegap的步骤. ...

  5. 深入了解当前ETL中用到的一些基本技术

    数据集成是把不同来源.格式和特点的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享,是企业商务智能.数据仓库系统的重要组成部分.ETL是企业数据集成的概念出发,简要分析了当前ETL中用到的 ...

  6. 清理300多台MySQL数据库的过期binlog日志

    早晨睡梦中,被 on-call了,说磁盘报警,赶紧起来打开email,收到上百封email报警,数据库磁盘不够了,查询了原因 [xxx@xxxx cacti]$ ssh xxxx "df - ...

  7. group by是什么意思 mysql中

    mysql语法中group by是什么意思? 在百度中搜索半天,最后找到一篇解释比较好的(不是博文,是百度知道,很郁闷那么多网友怎么就没人解释的清楚),链接如下: http://zhidao.baid ...

  8. iOS开发大神必备的Xcode插件

    写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xcode插件,下面我就为大家介绍几款开发 ...

  9. String类的基本用法与注意点,StringBuffer类的用法

    package cn.hncu.day8; public class RegExpDemo { public static void main(String[] args) { String str ...

  10. C++ 读取XML文件(tinyXML库的应用)

    C++读取xml有很多第三方的xml解析库,最近使用tinyxml库来解析,下面直接上应用例子: Skin.xml文档内容如下: <UI> <Image name="ban ...