随笔分类 - 数据库
摘要:回到目录作用:完成数据库与数据库的数据同步原理:源数据库发布需要同时的表,存储过程,或者函数;目标数据库去订阅它,当源发生变化时,目标数据库自己同步,注意,由于这个过程是SQL自动完成的,所以要求“启动SQL代理服务”。一 源数据库建立一个本地发布:二 选择发布的类型,这里有对各种类型的详细说明快照...
阅读全文
摘要:回到目录1:日期范围上smalldatetime的有效时间范围1900/1/1~2079/6/6datetime的有效时间范围1753/1/1~9999/12/312:精准度上smalldatetime只精准到分,而datetime则可精准到3位的毫秒。3:存储空间上smalldatetime占用4...
阅读全文
摘要:回到目录有时,我们在设计表结构时,有的字段可能同时具有几种状态,如小微自己的文件属性也是属于这种情况的,“只读,归档,隐藏”,但你对一个文件设置属性时,事实上是可以将这三个属性同时赋予一个对象的,这对于我们来说是正常的,那程序内部是怎么实现的呢?首先一个枚举,SQL里可能是一张表,也可能是事先规定好的几个值,如: 只读1,归档2,隐藏3再没有看.net源代码时,我认为可能是这样存储的文件属性为只读+归档,值为:1,2我们看到它是用,分开的,然后再分别去求和就可以了但当我看了.net源代码后,我的作法有了一个变化,那就是利用位移运算,应该说从性能到程序清晰度上有一个飞跃文件属性为只读+归档,值为
阅读全文
摘要:回到目录在进行大数据量读操作时,一般我们会选择SqlDataReader,或者不会使用DataSet,原因就不说了,在我项目中遇到一个很奇怪的问题,当sql执行时候过长时,系统被抛一个超时,链接池已满的提示。网上的解决方法事实上大分部是针对“connection time out“的,即链接超时,它一般解决方案是:1 为SQL连接串添加这个:ConnectTimeout=10000 //SQL连接超时时间2 为SQL连接串添加这个:Max Pool Size = 512 //最大连接池事实上它们解决的是连接超时问题,而有时,你的程序可能是在SQL解释时间比较长,设置上面两个就没有用了,SQL的
阅读全文
摘要:在上一篇文章中,告诉了大家数据库的三大范式,最基础的莫过于数据表中不能有冗余了,但今天主要说的已经“冗余”,而且,有时候冗余并非都是坏事!如,以下是一个大家伙,用户表user_info,它里面有用户的地址ID,如cityid,可能还有用户扩展表的信息,用户积分表的信息等等,这些信息至少需要三个表关联才能得到我们所需要的信息,而实际情况往往比这个还要复杂的多。这时,一种数据冗余的思想产生了,它相当于是用空间来换时间,即数据库在磁盘上占用的空间多了,但查询的性能提高了,这有时是我们可以接受的,规范固然重要,但有时也要具体问题具体去分析,对我们的user_info表进行改进后,可能是这样的结构use
阅读全文
摘要:有时,理论与实践有一些差距,在做一个具体的事情时,我们应该以实际为核心,而不是把理论死搬上来,要“从实际出发”,呵呵。在数据库的世界里存在着三大范式,也就是规范,真正的关系型数据库应该尽可能的满足这些规范,但有时,我们却根据实际问题,需要违背这些规范,这个系列我将从实际项目中出发来与大家一起说说“反范式”的设计。设计数据库时,首先要根据业务,找出实体,确定实体间的关系。一个结构良好的数据库,让项目在开发的过程中可以顺畅,而一个结构不稳定的数据库则会导致项目在开发的过程中大量的修改代码。不能满面向对象的开闭原则(OCP)。有时,我们可能会经常为一些业务去添加表字段,而这并不是我提供的,建义大家,
阅读全文
摘要:回到目录在查询后面在FOR XML PATH可以生成XML格式结果集,好好利用这个技术,可以实现很多意想不到的查询效果最简单的用法:SELECT USERID,USERNAME FROM DBO.USER_INFO FOR XML PATH结果类似这样 6 ding25901 10 zhon...
阅读全文
摘要:DECLARE @c INTDECLARE @c2 INTSELECT @c = COUNT(1)FROM dbo.SplitToTable('1|2|3|4', '|') SELECT @c2=COUNT(1)FROM dbo.SplitToTable('1|2|3|4', '|') a INNER JOIN dbo.SplitToTable('1|2|3|', '|') b ON a.valu...
阅读全文
摘要:现在不少大型网站和应用程序都采用标准架构来进行开发,何为标准架构,标准架构有什么好处,今天我想说一下。 标准,说它是一种标准,也就是它其有一定的通用性,可以解决大部分问题,今天说的架构不是软件层次上的,而是硬件上的,主要是环境的搭建。 首先我们的开发环境为win2003+SQL2005+NET3.5 架构,然后我们再来看主要的服务器 一 WWW服务器,主要运行网站或B/s应用程序 二 数据库服务器,主要进行SQLSERVER的部署,进行数据的存取操作 三 图像、脚本服务器,主要存储样式文件,网站图像文件及JS脚本文件,它和前台页面效果工程师工作相关 四 文件服务器,用户上传的文件,...
阅读全文
摘要:项目完成了,现在进入了维护阶段,一切都很平静。。。 突然有一天,老板来了个需求,要求用户有一个新的功能,即会员可以为好友推荐,进行本网站,当推荐的人真的来本网站注册后,并进行了邮件确认后,同时要给那个会员一些好处,比如,送它积分。 这个需要无疑要牵动用户表,这可如何是好,是在原表基础上改,还是。。。 首先如如果在原表上改,牵动太大,所以就想到了面向对象的“开闭原则”,在不改变原表的同时,添加...
阅读全文
摘要:select distinct diary.userid , a.name, sum(case when diary>=1 then 1 else 0 end) as '写日志' from diary inner join a on a.id=diary.userid group by diary.userid,a.id,a.name说明:当你的diary大于1时,也设为1,如果没有写,那么为0 ,这样用sum进行汇总也就求出了结果。ID 姓名 日志数1 zzl 2 2 zql 2 3 zzd 1 4 gy 4
阅读全文
摘要:ALTER TABLE dbo.CategoriesADD CONSTRAINT FK_Categories_Self FOREIGN KEY (ParentID)REFERENCES dbo.Categories (ID)go注意,最好将外键设置为"允许空".
阅读全文
摘要:预备知识,下面语句用来查询指定路径下的access数据表SELECT NEWID() , *FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\Documents and Settings\Administrator\My Documents\Database1.mdb";User ID=;Password=;')...userbases go注意,如果希望执行上面语句,还要开启这个服务才行:如果希望批量插入,只要加上insert 就OK了看代码:INSERT INT
阅读全文
摘要:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo/* 填充用户评价等级*/ALTER PROC [dbo].[Fill_Userinfos_BuyerRank_SellerRank] @userid VARCHAR(12) = NULLAS BEGIN DECLARE @rankCount INT SET @rankCount = 0 DECLARE cursor1 CURSOR FOR SELECT a.UserID FROM C2CEDU.dbo.UserInfos a INNER JOIN dbo.UserBases b ON a.UserID =
阅读全文
摘要:namespace Entity { /// <summary> /// 自定义主键编码 /// </summary> public enum PkIdRecordCode { /// <summary> /// OrderID /// </summary> OR = 10, /// <summary> /// ProductID /// </summary> PR = 30, /// <summary> /// StoreID /// </summary> ST = 40, /// <sum
阅读全文
摘要:事情是这样的,有个问题,先看如下表Department:部门ID 部门1 总经理2 人事部3 市场部4 销售部5 技术部现在问题来了,想显示时,把技术部和总经理放在最上面,然后再把其它的按部门升序排列,怎么解决?回答,这是个看似不完成的事情,其实,只要大家动动脑子,问题就解决了看我lori的SELECT 部门ID,部门FROM departmentORDER BY CASE WHEN 部门 = '总经理' OR 部门 = 'IT部' THEN 0 ELSE 1 END , 部门 ASC
阅读全文
摘要:对于sqlserver处理百万条数据时,我们要注意了,一定要设index,如果不设那么速度会很慢的。看我的吧:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONGOALTER proc [dbo].[testTime] as declare @d datetime --define a variable of datetime,i 'll total program 's timeset @d=getdate()SELECT taskIDFROM Task WITH (INDEX ([PK_Task_1])) --加了一个index,名称是PK_
阅读全文
摘要:回到目录最近开发了一个公安机关的分布式系统,在系统中要求若干个人同时可以对数据库进行读写操作。这时出现了一些联想问题:1 当多于1人的用户对同一条记录进行写操作时,先写入的用户的数据必定会被后写入的用户的数据override掉,这个问题如何解决?2 希望看比某一条记录更新的(在这条记录修改后,才进行...
阅读全文
摘要:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo-- this document design by zzl ---- function : total about a tree structure-- author : Lori.zhang ,zzl-- display view : a1 3-- a11 2-- a111 1------------------------------------------ALTER proc [dbo].[zzl_task_tree_total] --通过指定的taskid,来获取它和它下面的所有子元素的汇总和 @t
阅读全文