07 2016 档案
摘要:数据库快照:是数据库某一时间点的视图,快照涉及最初目的是为了报表服务,快照还可以和镜像结合来达到读写分离的目的 数据库快照:是sqlserver数据库的只读静态视图快照的作用:1 提供了一个静态的视图来为报表服务2 可以利用数据库快照来恢复数据库,相比备份来说,这个速度大大提高3 和数据库镜像结合,
阅读全文
摘要:merge: 在2008后被引入,它能将insert,Update,delete 简单并为一句,根据与源表连接的结果,对目标表进行插入,更新和删除操作例如:Merge是关于对于两个表之间进行操作的 注意:merge语句结束后必须以 ;结尾,否则报错
阅读全文
摘要:sqlserver2008之后引入Grouping sets是group by的增强版本,Grouping sets 在遇到多个条件时,聚合是一次性从数据库中取出所有需要操作的数据,在内存中对数据库进行聚合操作并生成结果,而union all是多次扫描表,将返回结果进行union,这也就是为什么gr
阅读全文
摘要:大多数数据库需要同时处理多个查询,这些查询并不会像车等待红绿灯排队等待,而是会寻找最短的路径执行,因此需要一个红绿灯进行约束,这个红绿灯就是锁 理论上所有的事务之间应该是完全隔离的,但是事实上隔离的成本实在太高(必须是序列化的隔离级别才能完全隔离)sqlserver通过锁告诉所有并发的连接,在同一个
阅读全文
摘要:事务的四个特性: 原子性,一致性,持久性,隔离性 原子性: 原子性:表示事务执行是作为原子,不可分割,整个语句要么执行,要么不执行sqlserver中每一个单独的语句可以看做是包含在事务中每一句本身具有原子性,要么执行,要么不执行,不会有中间状态 例如:上面例子的约束,执行插入3成功执行,但是插入4
阅读全文
摘要:索引: 在sqlserver中,存储的单位最小是页,页是不可再分的B树:初衷是减少对磁盘的扫描次数,如果一个表或者索引没有使用B树(对于没有聚集索引的表是使用 Heap 堆进行存储的),那么查找一个数据,需要在整个表包含的数据库页中进行全盘扫描,这大大增加了IO负担打包sqlserver使用B树进行
阅读全文
摘要:对于sql来说查询的思维方式的面向集合对于游标来说:思维方式是面向行的 性能上:游标会吃更多内存,减少可见的并发,锁定资源等 当穷尽了while循环,临时表,表变量,自建函数,或其他方式仍然无法实现某些查询的时候,可以考虑使用游标 游标的生命周期由5部分组成: 游标可以很简单,也可以很复杂,取决于游
阅读全文
摘要:了解通用表达式: 为了让代码简洁:在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解,但是视图是系统级对象,如果数据集仅仅需要在存储过程或是自定义函数中使用一次的话,使用view有些奢侈哈 所以可以考虑用公用表达式:可以看做是一个临时的结果集,可以在select ,insert,upda
阅读全文
摘要:可以看作是定义在sqlserver上的虚拟的表,本身并不存储数据,仅仅存储一个select语句和涉及的表的引用 通过视图,客户端不再需要知道底层表结构和其之间的关系,视图提供了一个统一访问数据的接口 视图优点:1 隐藏了底层的表结构,简化了数据访问操作2 使用视图,方便权限管理,让用户对视图有权限而
阅读全文
摘要:数据集分四类: 1.A∩B,既是所求数据集既在A中,又在B中 2.A∪B,既所求数据在数据集A中,或在数据集B中 3.A-B,既所求数据在数据集A中,不在数据集B中 4.B-A,既所求数据在数据集B中,不在数据集A中 和数学一样 数据集:参与数据集运算的两个数据集可以来自任何返回数据集的表达式:一张
阅读全文
摘要:变量:分为全局变量和局部变量全部变量:以@@声明,为系统变量,所有实例都能访问,用户只能访问,不能赋值局部变量:生命周期只在一个批处理内有效, 局部变量经常使用的三种用途:1 在循环语句中记录循环的次数或者用户控制循环的次数2 用于控制流程走向 比如 if (@i =1)3 存储 存储过程或者函数的
阅读全文
摘要:流程控制语句只能在单个批处理段,用户自定义函数和存储过程中使用不能夸多个批处理或者用户自定义函数或者存储过程 批处理:一个或者多个语句组成的一个批处理,是因为所有语句一次性地被提交到一个sql实例,如果想让多个语句多次提交到sql实例,则需要go关键字,可以看做是一个批处理结束的标识符,当遇到go,
阅读全文
摘要:Case表达式可以用在 Select,update ,delete ,set,in,where ,order by,having子句之后, 只是case表达式不能控制sql程序的流程,只能作为基于列的逻辑使用 也可以这样写: case表达式分两种:简单表达式:将某个表达式与一组简单表达式进行比较以确
阅读全文
摘要:理解子查询: 理解子查询: 多表连接查询往往也可以用子查询进行替代 子查询本质是嵌套进其他 select update insert Delete 语句的一个被限制的select语句,在子查询中,只有下面几个子句可以使用: 1 select 子句(必须)2 From 子句(必须)3 where 子句
阅读全文
摘要:聚合函数:就是按照一定的规则将多行(Row)数据汇总成一行的函数,对数据进行汇总前,还可以按特定的列(coloumn)将数据进行分组(group by)再汇总,然后按照再次给定的条件进行筛选 一:Count函数1 SELECT COUNT(Birthday) FROM customer2 SELEC
阅读全文
摘要:在sqlserver中,数据库在硬盘的存储方式和普通文件存储一样,仅仅几个文件而已,sqlserver通过管理逻辑上的文件组的方式来管理存储数据的文件, 如图: 文件组管理着磁盘上的文件,而文件中存放着sqlserver的实际数据 为什么通过文件组来管理文件?使用文件组可以隔离用户和文件,使得用户针
阅读全文
摘要:sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树 但是每一页的实际存储数据:8K= 8192字节-96字节(页头) - 36字节(行偏移) = 8060字节
阅读全文
摘要:索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 (3)索引器不是一个变量 索引器和属性的不同点 (1)属性以名称来标识,索引器以函数形式标识 (2)
阅读全文
摘要:暂时有 bind(),live(),delegate(),on() 这四个事件监听函数 对应的4个事件解除函数分别是: unbind(),die(),undelegate(),off() bind:向匹配元素添加一个或者多个事件处理器 $(selector).bind(event,data,func
阅读全文
摘要:在mvc中,Url地址是利用routing特性来支持,但是这个Routing有个问题,多个不同的地址和指向同一个action方法, 例如: 解决方法:通过使用注册全局的filter 先定义一个filter 然后注册这个filter: 总结:首先获取当前的RequestContext和RouteDat
阅读全文
摘要:有个问题: 抽象出来的接口里的一些属性添加了属性验证,比如: 一切都看似很正常 但是后来发现 在接口里添加的一些验证属性都不起作用 原因是: CLR对基类和接口的处理是不一样的,基类是继承的,所有基类里出现的方法 属性都在子类实现具有同样的效果,但是接口不一样,接口是用来实现的,要求子类必须实现,但
阅读全文
摘要:可以使用HandleErrorAttribute 有两种方式可以使用它,在类或者方法的头上加 [HandleError] 这种直接在类或者方法上加[HandlerError]手动添加 另外一种方式是使用Global Filters功能来注册,默认的mvc3.0以上都在Global.asax文件已经默
阅读全文
摘要:jquery在浏览器ajax调用的时候,对缓存提供了很好的支持,POST方式不能被缓存,使用POST的原因,明确了数据不能被缓存,或者避免JSON攻击(JSON返回数据的时候可以被入侵) jquery全局对象里的ajax提供了一些方式来支持缓存和ConditionalGETs功能 ifModifie
阅读全文
摘要:简单工厂存在问题:对象统一行为抽象成一个接口(或者抽象类)之后,再根据传入的类型进行创建实例,但这只适用固定行为的场合,当要实现接口的类型处于不定数,则不适合使用简单工厂模式,而应该使用工厂方法 工厂方法适合场合:子类有统一的操作行为子类的数量不固定,随时可能有新的功能子类出现工厂方法优势:子类之间
阅读全文
摘要:public class CreateFactory { public static ICreate GeneratorCreate(string createName) { switch (createName) { case "People": return new People(); case
阅读全文
摘要://单例模式 类是密封的 public sealed class Singlton { static Singlton instance = null; private Singlton() { } public static Singlton Instance { get { if (null =
阅读全文
摘要:with t as (select * from emp where depno=10) 总结:可以看做将查询出来的语句块表示为一个临时表 select * from t where empno=xxx union all sum(col1) as colsum from t 在这里就可以直接使用这
阅读全文
摘要:NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”。 UPDLOCK(修改锁) 此选项被选中时,SQL Ser
阅读全文
摘要:使用rowcount rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理, rowcount的设置会在整个会话中有效 SET ROWCOUNT 10SELECT * FROM dbo.Customer ORDER BY id desc 使用完之后可以设置为: SET ROW
阅读全文
摘要:优点: 允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改 当用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改 begin transelect * from address WI
阅读全文
摘要:ROUND 用法: --15.000 表示小数点第一位取四舍五入,将原小数点后的位数都设置为0SELECT ROUND(15.258,0) --15.300,第二个参数如果是1,则取原值小数点后第一位的四舍五入法,小数点第一位之后的参数用0代替SELECT ROUND(15.258,1) space
阅读全文
摘要:async 和 await 出现在C# 5.0之后,关系是两兄弟,Task是父辈,Thread是爷爷辈,这就是.net 多线程处理的东西,具体包括 创建线程,线程结果返回,线程中止,线程中的异常处理 1 线程创建的几个方式 static void Main(string[] args) { new
阅读全文
浙公网安备 33010602011771号