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各版本主要区别的更多相关文章
-
SQL SERVER 2005/2008 中关于架构的理解(二)
本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...
-
SQL SERVER 2005/2008 中关于架构的理解(一)
SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...
-
【转】SQL SERVER 2005/2008 中关于架构的理解
在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询,提示“对象名'CustomEntry' 无效.”.当带上了架构名称 ...
-
【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感 ...
-
加载MySQL、Oracle、SQL Server 2000、SQL Server 2005及以上版本 的加载数据库驱动程序
2018-11-04 20:00:59 开始 //getConnection(String url, String user, String password) //url:连接数据库的URL 3 ...
-
怎样修改SQL Server 2005/2008的系统存储过程(转)
我们知道,SQL Server 2005/2008的系统存储过程在正常情况下是无法直接修改的. 尽管本文是介绍怎样修改它的,但在这里,我还是建议大家尽量不要去修改它.(好像有点绕哈...) OK,闲话 ...
-
PHP连接Microsoft SQL Server 2005/2008
PHP自带的MSSQL扩展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提 ...
-
java连接sql server2000/2005
接触Java或者JSP,难免会使用到数据库SQL Server 2000/2005(我使用2005标准版[9.0.3054]测试),经过自己的搜索和研究,使用JDBC连接SQL Server成功,特此 ...
-
SQL Server 2005,2008 正则表达式 替换函数应用详解
CREATE function dbo.regexReplace ( @source ntext, --原字符串 ), --正则表达式 ), --替换值 , --是否是全局替换 --是否忽略大小写 ) ...
随机推荐
-
JSON.stringify()和JOSN.parse()
JSON.stringify()跟JSON.parse() 终于把这两个方法搞清楚了!!! JSON.tringify():把一个json数据转化成JSON string JSON.stringify ...
- QT5中文显示
-
关于webapi 返回的类型的笔记
经过测试发现使用IE浏览器返回的数据是json,而使用Firefox和Chrome返回的则为xml,经研究发现IE在发生http请求时请求头accpet节点相比Firefox和Chrome缺少&quo ...
-
实战!基于lamp安装wordpress详解-技术流ken
简介 LAMP 是Linux Apache MySQL PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行动态的脚本文件.现在基于lamp搭建wor ...
-
tools、site
notepad editer fiddler 一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据 ...
-
.NET对象的创建、垃圾回收、非托管资源的手动处理
本篇用来梳理对象的创建.垃圾的回收,以及非托管资源的手动处理. →首先运行应用程序,创建一个Windows进程. →CLR创建一块连续的虚拟地址空间,这个地址空间就是托管堆.而且,这个地址空间最初并没 ...
-
Linux 下 CPU 使用率与机器负载的关系与区别
原文链接: http://blog.chinaunix.net/uid-28541347-id-4926054.html 当我们使用top命令查看系统的资源使用情况时会看到load average, ...
-
创建/删除Cookie数据
//1.编写(创建 和 修改 一样) HttpCookie cookie = new HttpCookie("userName");cookie.Value = "顾志海 ...
-
Odata简介和Demo
转:http://www.cnblogs.com/shanyou/archive/2013/06/11/3131583.html 在SOA的世界中,最重要的一个概念就是契约(contract).在云计 ...
-
2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)
题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ...