<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ForestRound的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ForestRound</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ForestRound]]></copyright><item><title><![CDATA[SQL 之 触发器]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52774142</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52774142</guid><author>ForestRound</author><pubDate>Mon, 10 Oct 2016 06:49:14 +0800</pubDate><description><![CDATA[触发器 triiger
触发器是种特殊的存储过程，它的执行不是由程序调用，不需要要手动操作，而是由事件触发。就好像按钮的点击事件，网页的Load事件一样，触发器的事件是由对表进行增删改操作触发的，当对一个数据库进行增删改时就会激活触发器。


从SQL2005开始，根据SQL语句的不同将触发器分成了两类，一类是DML触发器，一类是DLL触发器，DML触发器又分为两类。


触发器的分]]></description><category></category></item><item><title><![CDATA[设计模式（八）适配器模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52749459</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52749459</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 15:06:04 +0800</pubDate><description><![CDATA[结构型模式 之 适配器模式
将一个接口转换成客户希望的另一个接口，使得接口不兼容的那些类能够一起工作。
适配器模式引入了一个适配器的包装类，它所包装的对象称为适配者，即被适配的类。
适配器的实现：把客户的请求转化为对适配者的相应接口的调用。当客户类调用适配器的方法时，在适配器类的内部将调用适配者类的方法，整个过程对客户是透明的，即客户类并不直接访问适配者类，客户并不知道最终的实现是通过了这一]]></description><category></category></item><item><title><![CDATA[设计模式（七）抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52749210</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52749210</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 14:38:07 +0800</pubDate><description><![CDATA[抽象工厂模式：
kit模式，提供一个创建一系列相关或者相互依赖对象的接口，而无需指定它们具体的类。


和工厂方法模式不同的是，抽象工厂模式的工厂方法创建的是一个产品族，每一个产品都位于某个产品等级结构中。
同样，4个角色：
（1）AbstractFactory抽象工厂：声明了一组用于创建一族产品的方法，每个方法对应一种产品。
（2）ConcreteFactory具体工厂：实现了在抽]]></description><category></category></item><item><title><![CDATA[设计模式（六）多态工厂模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52748845</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52748845</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 12:21:00 +0800</pubDate><description><![CDATA[和简单工厂模式不同，工厂方法模式不再提供一个统一的工厂类来创建所有的产品对象，而是针对不同的产品提供不同的工厂，提供一个与产品等级结构对应的工厂等级结构。
工厂方法模式：
定义一个用于创建对象的接口，让子类决定将哪一个类实例化。让一个类的实例化延迟到子类，又称为虚拟构造器模式，或者多态工厂模式。


提供一个抽象工厂类来声明抽象工厂方法，而由其子类来具体实现工厂方法，创建具体的产品对象。]]></description><category></category></item><item><title><![CDATA[设计模式（五）简单工厂模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52748711</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52748711</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 12:02:17 +0800</pubDate><description><![CDATA[使用频率最高。
概述：首先将需要创建的不同对象的代码封装到不同的类中，这些类成为具体产品类，而将它们的公共代码进行抽象和提取后封装在一个抽象产品类中，每一个具体产品类都是抽象产品类的子类；然后提供一个工厂类用于创建各种产品，在工厂类中提供一个创建产品的工厂方法，该方法可以根据所传入的参数不同创建不同的具体产品对象；客户端只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象。


简]]></description><category></category></item><item><title><![CDATA[设计模式（四）单例模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52748496</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52748496</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 11:25:39 +0800</pubDate><description><![CDATA[对于一各软件系统的某些类而言，无需创建多个实例。
例子：Windows任务管理器，无论启动任务管理器多少次，系统始终只能弹出一个任务管理器窗口。
为了节约系统资源，以及保证信息的唯一性，有时需要确保系统中某个类只有唯一的实例。当这个唯一实例创建后无法再创建同一类型的其他实例。
这就是单例模式的动机。


示例：TaskManager类
（1）为确保实例唯一性，禁止类的外部直接使用ne]]></description><category></category></item><item><title><![CDATA[设计模式（三）创建型模式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52748450</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52748450</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 10:51:51 +0800</pubDate><description><![CDATA[创建型模式
5种，包含一种非GoF模式——简单工厂模式
解决方案：创建什么，由谁创建，何时创建
 




模式


          定义


使用频率




单例模式


          确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。


四星




简单工厂模式


          定义一个工]]></description><category></category></item><item><title><![CDATA[设计模式（二） 面向对象设计原则]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52747966</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52747966</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 10:31:25 +0800</pubDate><description><![CDATA[单一职责原则 SRP：最简单的面向对象设计原则，用于控制类的粒度大小。
一个类只负责一个功能领域的相应职责，或者说，就一个类而言，只有一个能引起它变化的原因。
比如，设计一个CRM（客户关系管理）系统中的客户信息图形统计模块CustomerDataChart，该类的成员方法既包含图表的创建显示，也包含查询客户信息，以及连接数据库。
事实上图表处理是一个独立功能，数据库连接操作也是独立的数据库]]></description><category></category></item><item><title><![CDATA[设计模式（一） 基本概念]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52747953</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52747953</guid><author>ForestRound</author><pubDate>Fri, 07 Oct 2016 09:10:39 +0800</pubDate><description><![CDATA[一、设计模式概述
GoF 23 种设计模式，加上简单工厂模式，共24种。
 
使用频率最高：
创建型的有工厂方法模式、抽象工厂模式、单例模式
结构型的有外观模式、适配器模式、代理模式
行为型的有迭代器模式、命令模式、策略模式
 
学习每个设计模式都应掌握：
这个设计模式的意图是什么，它要解决的什么问题，什么时候使用它（问题、目的）；
它是如何解决问题的（解决方案），结构图和关键]]></description><category></category></item><item><title><![CDATA[SQL 之 事务]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52745546</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52745546</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 21:13:01 +0800</pubDate><description><![CDATA[多用户数据库
数据库管理系统允许多人操作。所以如何处理潜在的同步问题等，一定程度上取决于数据库如何处理锁。


锁
锁是数据库用来控制数据资源被并行使用的一种机制。当数据库的一些内容被锁定时，任何企图修改（也可能是读取）这个数据的用户必须等到锁被释放。
两种锁策略：
（1）数据库的写操作必须向服务器申请并获得写锁才能修改数据。读操作必须申请和获得读锁才能查询数据。多用户可以同时读取数]]></description><category></category></item><item><title><![CDATA[SQL 之 范式]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52745465</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52745465</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 20:42:14 +0800</pubDate><description><![CDATA[设计数据库的一些规范化的标准：通常满足第三范式已经足够规范了。


第一范式：消除重复数据。要求不允许多值属性。如果一个数据单元格中存在多个值，通过给定值来检索会带来问题。这一范式的核心就是：不允许有重复的列。比如在TestFormat列存在“Multiple choice, essay”这样的值是不允许的，应该使用TestFormat1和TestFormat2的两个不同的列，而不是使用Te]]></description><category></category></item><item><title><![CDATA[SQL 之 外键、索引]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52745380</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52745380</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 20:28:53 +0800</pubDate><description><![CDATA[一、外键：
从一个表的一个列到另一个不同的表中的一个列的直接引用。
设置一个外键时，要求指定两个列，配置了外键列的表为子表，另一个表中被引用的列则位于父表中。不允许先删除父表，子表必须依赖父表。
设置外键，可以为父表中涉及到更新和操作的行设置一些具体的行为。比如外键CustomerID
（1）No Action：默认行为，如果把列CustomerID的更新设置为No Action，意味着任]]></description><category></category></item><item><title><![CDATA[SQL 之 修改数据]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52745111</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52745111</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 19:57:09 +0800</pubDate><description><![CDATA[关键字：INSERT INTO , VALUES , DELETE , TRUNCATE TABLE , UPDATE
修改数据：
（1）插入新的行
（2）删除表中的行
（3）更新表中指定的行与列已有的数据


一、修改策略
修改数据的机制十分直接，意味着非常危险。实际中有各种可以帮助防止灾难性错误的策略。
（1）删除行时，可以使用软删除技术，这并不是真正从物理上删除行，可以用表]]></description><category></category></item><item><title><![CDATA[SQL 之 存储过程、参数和函数]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52745091</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52745091</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 19:04:59 +0800</pubDate><description><![CDATA[存储过程和参数
区别于之前的用单独一条语句检索数据，现在把多条语句保存到一个叫存储过程的单独对象中。
 
使用存储过程的原因：
1. 把多条SQL语句保存到单独的过程中
2. 把参数和SQL语句结合使用（也可以不含参数）
 
创建存储过程
CREATE PROCEDURE ProcedureName,
AS
[OptionalParameterDeclarations]
BE]]></description><category></category></item><item><title><![CDATA[SQL 之 集合逻辑]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52744556</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52744556</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 18:22:11 +0800</pubDate><description><![CDATA[关键字：UNION , UNION ALL , INTERSEC , EXCEPT / MINUS


1. UNION ：与JOIN不同，UNION合并的表不需要有关联的列。UNION允许我们在一条SELECT语句中检索不相关的或者部分相关的数据。
SelectStatement1
UNION
SelectStatement2

ORDER BY columnlist


]]></description><category></category></item><item><title><![CDATA[SQL 之 子查询]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52744083</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52744083</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 16:55:54 +0800</pubDate><description><![CDATA[关键字：EXISTS
子查询：插入到SELECT语句中的另一条SELECT语句。
子查询可以插入到SELECT语句的任何子句中，方式取决于子查询是columnlist、tablelist还是condition
三种方式：
（1）当子查询是tablelist的一部分时，它指定了一个数据源
（2）当子查询是columnlist的一部分时，它创建了一个单个的计算的列；
（3）当子查询是con]]></description><category></category></item><item><title><![CDATA[SQL 之 视图（二）]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52744008</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52744008</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 15:46:02 +0800</pubDate><description><![CDATA[一、创建视图
1. 通过sql语句
CREATE VIEW 
视图名 AS
SELECT语句
（1）可以创建包含一个列或者多个列，一个表或者多个表的视图。
（2）在创建视图时,并非所有的select子查询都可用，如：compute和compute
 by,order by[除非与top一起连用]。但在查询时可以使用。
（3）在视图创建时,必须为没有标题列指定标题。
（4）WITH]]></description><category></category></item><item><title><![CDATA[SQL 之 视图（一）]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52743730</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52743730</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 14:52:16 +0800</pubDate><description><![CDATA[视图无非就是存储在数据库中并具有名字的SQL语句，或者说是以预定义的SQL查询的形式存在的数据表成分。视图本身不包含数据。
 
视图，又称虚表，区别于基表。视图所对应的数据不进行实际存储，数据库中只存储视图的定义，在对视图的数据进行操作时，系统根据视图的定义去操作与视图相关联的基本表。允许用户执行以下操作：
（1）以用户或者某些类型的用户感觉自然或者直观的方式来组织数据；
（2）限制对数据]]></description><category></category></item><item><title><![CDATA[SQL 之 自连接]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52743429</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52743429</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 14:02:33 +0800</pubDate><description><![CDATA[自连接：一种虚拟方式。允许多次引用同一各表，该表就像独立的表一样，实际上创建了表的一个虚拟视图，允许多次使用这个虚拟视图。
常用在自身是自引用的表，这类的表的一列指向了同一个表中的另一列。


示例：Personnel表中的每一行都有一个列指向同一个表的另一列，这一列表示该员工的经理是谁（没有经理则用NULL）。就像指向同一个表的行的外键。
EmPloyeeID             ]]></description><category></category></item><item><title><![CDATA[SQL 之 外连接]]></title><link>https://blog.youkuaiyun.com/ForestRound/article/details/52742826</link><guid>https://blog.youkuaiyun.com/ForestRound/article/details/52742826</guid><author>ForestRound</author><pubDate>Thu, 06 Oct 2016 11:57:03 +0800</pubDate><description><![CDATA[关键字：LEFT OUTER JOIN , RIGHT OUTER JOIN , FULL JOIN




Customers表

CustomerID        FirstName        LastName

-------------------------------------------------------

        1]]></description><category></category></item></channel></rss>