在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:

</mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>"50" rows="15" name="code" class="c-sharp">insert Sale ([Name],[SaleTime]) values ('张三','2009-1-1') insert Sale ([Name],[SaleTime]) values ('李四','2009-2-1') insert Sale ([Name],[SaleTime]) values ('王五','2009-3-1') insert Sale ([Name],[SaleTime]) values ('钱六','2010-4-1') insert Sale ([Name],[SaleTime]) values ('赵七','2010-5-1') insert Sale ([Name],[SaleTime]) values ('张三','2011-6-1') insert Sale ([Name],[SaleTime]) values ('李四','2011-7-1') insert Sale ([Name],[SaleTime]) values ('王五','2011-8-1') insert Sale ([Name],[SaleTime]) values ('钱六','2012-9-1') insert Sale ([Name],[SaleTime]) values ('赵七','2012-10-1') insert Sale ([Name],[SaleTime]) values ('张三','2012-11-1') insert Sale ([Name],[SaleTime]) values ('李四','2013-12-1') insert Sale ([Name],[SaleTime]) values ('王五','2014-12-1')

从以上代码中可以看出,我们一共在数据表中插入了13条数据,其中第1至3条数据是插入到第1个物理分区表中的;第4、5条数据是插入到第2个物理分区表中的;第6至8条数据是插入到第3个物理分区表中的;第9至11条数据是插入到第4个物理分区表中的;第12、13条数据是插入到第5个物理分区表中的。

从SQL语句中可以看出,在向分区表中插入数据方法和在普遍表中插入数据的方法是完全相同的,对于程序员而言,不需要去理会这13条记录研究放在哪个数据表中。当然,在查询数据时,也可以不用理会数据到底是存放在哪个物理上的数据表中。如使用以下SQL语句进行查询:

[c-sharp] view plaincopyprint?
  1. select * from Sale

select * from Sale

查询的结果如下图所示:

从上面两个步骤中,根本就感觉不到数据是分别存放在几个不同的物理表中,因为在逻辑上,这些数据都属于同一个数据表。如果你非想知道哪条记录是放在哪个物理上的分区表中,那么就必须使用到$PARTITION函数,这个函数的可以调用分区函数,并返回数据所在物理分区的编号。

说起来有点难懂,不过用起来很简单。$PARTITION的语法是:

    $PARTITION.分区函数名(表达式)

假设,你想知道2010年10月1日的数据会放在哪个物理分区表中,你就可以使用以下语句来查看。

[c-sharp] view plaincopyprint?
  1. select $PARTITION.partfunSale ('2010-10-1')

select $PARTITION.partfunSale ('2010-10-1')

在以上语句中,partfunSale()为分区函数名,括号中的表达式必须是日期型的数据或可以隐式转换成日期型的数据,如果要问我为什么,那么就回想一个怎么定义分区函数的吧(CREATE PARTITION FUNCTION partfunSale (datetime))。在定义partfunSale()函数时,指定了参数为日期型,所以括号中的表达式必须是日期型或可以隐式转换成日期型的数据。以上代码的运行结果如下图所示:

在该图中可以看出,分区函数返回的结果为2,也就是说,2010年10月1日的数据会放在第2个物理分区表中。

再进一步考虑,如果想具体知道每个物理分区表中存放了哪些记录,也可以使用$PARTITION函数。因为$PARTITION函数可以得到物理分区表的编号,那么只要将$PARTITION.partfunSale(SaleTime)做为where的条件使用即可,如以下代码所示:

[c-sharp] view plaincopyprint?
  1. select * from Sale where $PARTITION.partfunSale(SaleTime)=1
  2. select * from Sale where $PARTITION.partfunSale(SaleTime)=2
  3. select * from Sale where $PARTITION.partfunSale(SaleTime)=3
  4. select * from Sale where $PARTITION.partfunSale(SaleTime)=4
  5. select * from Sale where $PARTITION.partfunSale(SaleTime)=5

select * from Sale where $PARTITION.partfunSale(SaleTime)=1 select * from Sale where $PARTITION.partfunSale(SaleTime)=2 select * from Sale where $PARTITION.partfunSale(SaleTime)=3 select * from Sale where $PARTITION.partfunSale(SaleTime)=4 select * from Sale where $PARTITION.partfunSale(SaleTime)=5

以上代码的运行结果如下图所示:

从上图中我们可以看到每个分区表中的数据记录情况——和我们插入时设置的情况完全一致。同理可得,如果要统计每个物理分区表中的记录数,可以使用如下代码:

[c-sharp] view plaincopyprint?
  1. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)

select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)

以上代码的运行结果如下图所示:

除了在插入数据时程序员不需要去考虑分区表的物理情况之外,就是连修改数据也不需要考虑。SQL Server会自动将记录从一个分区表移到另一个分区表中,如以下代码所示:

[c-sharp] view plaincopyprint?
  1. --统计所有分区表中的记录总数
  2. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)
  3. --修改编号为1的记录,将时间改为2019年1月1日
  4. update Sale set SaleTime='2019-1-1' where id=1
  5. --重新统计所有分区表中的记录总数
  6. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)

--统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) --修改编号为1的记录,将时间改为2019年1月1日 update Sale set SaleTime='2019-1-1' where id=1 --重新统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)

在以上代码中,程序员将其中一条数据的时间改变了,从分区函数中可以得知,这条记录应该从第一个分区表移到第五个分区表中,如下图所示。而整个操作过程,程序员是完全不需要干预的。

http://blog.csdn.net/smallfools/article/details/4932936

转载于:https://www.cnblogs.com/zcm123/archive/2012/12/04/2800834.html

mssql 2005/2008/2012如何添加、查询、修改分区表中的数据 .相关推荐

  1. MSSQL数据库日志清理工具(2000/2005/2008/2012/2014/2016)

    测试MSSQL版本2008/2012/2014. 如果使用中遇到问题欢迎关注微信服务号进行反馈! 百度云下载链接:https://pan.baidu.com/s/1nv5k7RN (解压密码:LLIN ...

  2. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  3. linux下去ldap数据,Linux系统下要如何修改LDAP中的数据

    在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:Linux系统下要如何修改LDAP中的数据 在之前的文章中 ...

  4. sql server中如何修改视图中的数据?

    原文地址::https://www.cnblogs.com/xielong/p/10516975.html 相关文章 1.MYSQL 视图的不可以更改数据----https://blog.csdn.n ...

  5. jsp mysql数据修改不了了_通过JSP界面无法修改mysql中的数据

    通过在JSP页面提交的表单修改数据库中的数据,不能实现,请帮忙看下吧//修改用户个人信息publicvoidmodify(Stringmail,Stringphone,intid){try{if(ct ...

  6. 数据库修改表中的数据(SqlServer)

    修改表中的数据 DML:update 语法: update 表名 set 字段1=新的值,字段2=新的值,- where 记录的匹配条件 说明:如果不写where子句,默认是修改所有的行 -- 准备数 ...

  7. 在vuex中,不经过mutations能直接修改state中的数据吗?为什么

    不经过mutations不能直接修改state中的数据,因为state是实时更新的,如果直接修改state中的数据是异步操作,当state异步还没有执行完,state的数据就有可能发生变化,会导致程序 ...

  8. djang-模型层(model)--添加,查询,修改

    上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...

  9. mysql修改表charset_MySql数据库中查询修改表中字符编码(charset)的方法

    MySQL字符集多种多样,下面为您列举了其中三种最多见的MySQL字符集查看方法,该方法供您参考,但愿对您学习MySQL数据库能有所启迪.mysql 1.查看MySQL数据库服务器和数据库MySQL字 ...

  10. 如何查询MySQL表中的数据,这些操作你得明白!

    前言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...

最新文章

  1. 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
  2. matlab中实时脚本与纯代码脚本
  3. 皮一皮:杯子不要买太奇怪的...
  4. 适配器模式(Adapter)和外观模式(Facade)
  5. 遭遇内存无法读写的错误
  6. lwip协议栈中超时定时器实现原理
  7. python的repr和str有什么不同_str()和repr()的异同
  8. 【微信开发】-- 发送模板消息
  9. 02:同行列对角线的格子
  10. 定量/高光谱遥感之——光谱分析技术
  11. 一个exe可执行程序的生与死
  12. 广义相对论-学习记录6-第三章-张量分析与黎曼几何3
  13. CSS3开启硬件加速及利弊
  14. uos网页服务器安装,安装uos
  15. android文件恢复,安卓手机文件丢失了,如何恢复?
  16. [附源码]Python计算机毕业设计SSM快递代收系统(程序+LW)
  17. 【机器学习】浅谈 归纳偏置 (Inductive Bias)
  18. 本质安全设备标准(IEC60079-11)的理解(二)
  19. IP Camera / Network Camera - Comments
  20. CP | 刘宏伟团队揭示祁连山特色蘑菇多糖改善肠道菌群减肥物质基础和分子机制...

热门文章

  1. golang for循环时修改自身的值
  2. html5 元宵节送祝福,元宵节送上真心祝福语
  3. 管理新语:说说工作的主动权
  4. 编译WINDOWS版FFmpeg:msys2环境准备
  5. LINUX下载编译libspeex/libspeexdsp
  6. 公司部分断电,这些人就没法干活?
  7. 类似平行宇宙的灵异事件,三个常见的解释
  8. opencv出错:error: (-213:The function/feature is not implemented) Unknown/unsupported array type
  9. 提供了一个UBUNTU安装NVIDIA驱动的脚本的下载
  10. 解决办法:安装cuda时一直失败(如提示Reboot required to continue)