登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发技术 > 正文

SQL Server:Sequence Objects初体验

2012-12-12 00:05    it168网站原创  作者: 王立国 编辑: 王玉圆

        【IT168 技术】SQL Server 2012可以说是集众家之所长,很大程度的丰富了自身的内容和功能,对T-SQL进行了全面的扩展增强。例如新增字符函数CONCAT ,用法和MYSQL中的CONCAT 函数一致;新增了内置逻辑函数IIF ,例如VB,Microsoft Office Access等等里面都是有IIF函数的;新增了类似MYSQL 中的limit n,m的形式来读取第n行到第m行的数据,有了使用OFFSET/FETCH NEXT分页的功能;新增了Oracle中存在的分析函数FIRST_VALUE() 和 LAST_VALUE();新增了Sequence,用过Oracle的朋友一定对序列的概念非常的熟悉,原本SQL Server 中是有identity自增列来完成相关功能的,那为什么还要引用Sequence Objects?

  在SQL Server 2012中怎么来创建序列?又怎么样来使用序列?本文我们就来探讨一下。

  一. Sequence Objects的创建

  1.1 可视化向导创建序列

  我新建了一个空的数据库2012SeqTest,找到数据库-2012SeqTest-可编程性-序列,选中序列右键,在弹出的右键菜单中点击“新序列”。

SQL Server 2012新增Sequence Objects
▲图A

  然后我们可以看到如下界面:

SQL Server 2012新增Sequence Objects
▲图B

  从上图B中,我们可以看到Sequence中有最小值,最大值,循环和缓存选项设置,这是都是自增列所没有的,例如这个循环和缓存选项是干什么用的,我们在后文中会有相关介绍,我们接下来介绍一下如何用T-SQL来创建Sequence。

  1.2 用T-SQL创建序列

    create sequence SqlSeq
    
as bigint --数据类型
    start
with 1  --开始值
    increment by
1 --增量
    minvalue
1  --最小值
    maxvalue
100 --最大值
    no cycle
--不循环
    cache
3  --设置cache大小为3

  上面的T-SQL可以创建一个名为SqlSeq的序列,创建是成功的,这么这个序列是不是有问题呢?一个1到100的序列我使用了bigint类型是不是一种浪费呢?最小值是1,最大值是100,不循环,这个序列是不是很快就不能用了呢?我们下文会对上面的两个序列进行实例分析。

  1.3 查看创建的序列

Sequence Objects的创建
▲图C

  创建以后的序列,我们如何用T-SQL来查看呢?

    select
        name,object_id,type,
        start_value,increment,minimum_value,maximum_value,
        is_cycling,is_cached,cache_size,current_value
    from sys.sequences

Sequence Objects的创建
▲图D

  这里我们可以发现这个cached选项设置默认大小的时候,sys.sequences里的cache_size属性是null。

  我们还可以看出sequence的type类型是’SO’,应该是Sequence Objects的缩写。

  就是说我们也可以这样查看存在的序列:

  select * from sysobjects where type='SO'
内容导航
  • 2012-12-12
  • 2012-12-12
  • 2012-12-12
网友评论
已有0条评论
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部