<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我想网 &#187; Sql</title>
	<atom:link href="http://www.iwanna.cn/topics/develope/db/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Mon, 26 Dec 2011 05:46:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>使用参数化查询防止SQL注入漏洞</title>
		<link>http://www.iwanna.cn/archives/2010/06/03/3657/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/03/3657/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 15:31:06 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[程序源码]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3657</guid>
		<description><![CDATA[SQL注入漏洞曾经是Web应用程序的噩梦，CMS、BBS、Blog无一不曾受其害。 SQL注入的原理 以往在Web应用程序访问数据库时一般是采取拼接字符串的形式，比如登录的时候就是根据用户名和密码去查询： string sql = "SELECT TOP 1 * FROM [User] WHERE UserName = ‘” + userName + “‘ AND Password = ‘” + password + “‘”; 其中userName和password两个变量的值是由用户输入的。在userName和password都合法的情况下，这自然没有问题，但是 用户输入是不可信的，一些恶意用户只要用一些技巧，就可以绕过用户名、密码登录。 假设password的值是”1′ or ‘1′ = ‘1“，userName的值随便取，比如是”abc”，那变量sql的 值就是： "SELECT TOP 1 * FROM [User] WHERE UserName = ‘abc’ AND Password = ‘1′ or ‘1′ = ‘1′” 由于’1′ [...]]]></description>
			<content:encoded><![CDATA[<p>SQL注入漏洞曾经是Web应用程序的噩梦，CMS、BBS、Blog无一不曾受其害。</p>
<h3>SQL注入的原理</h3>
<p>以往在Web应用程序访问数据库时一般是采取<strong>拼接字符串</strong>的形式，比如登录的时候就是根据用户名和密码去查询：</p>
<p><code>string <a href="http://www.iwanna.cn/tags/sql/" class="st_tag internal_tag" rel="tag" title="标签 Sql 下的日志">sql</a> = "SELECT TOP 1 * FROM [User] WHERE UserName = ‘” +  userName + “‘ AND Password = ‘” + password + “‘”;</code></p>
<p>其中userName和password两个变量的值是由用户输入的。在userName和password都合法的情况下，这自然没有问题，但是 用户输入是不可信的，一些恶意用户只要用一些技巧，就可以绕过用户名、密码登录。</p>
<p>假设password的值是”<em>1′ or ‘1′ = ‘1</em>“，userName的值随便取，比如是”abc”，那变量sql的 值就是：<br />
<span id="more-3657"></span><br />
<code>"SELECT TOP 1 * FROM [User] WHERE UserName = ‘abc’ AND Password  = ‘1′ or ‘1′ = ‘1′”</code></p>
<p>由于’1′ =  ‘1′恒为真，因此只要User表中有数据，不管UserName、Password的值是否匹配，这条SQL命令准能查出记录来。就这样，登录系统就被 破解了。</p>
<h3>以往的防御方式</h3>
<p>以前对付这种漏洞的方式主要有三种：</p>
<ul>
<li><strong>字符串检测</strong>：限定内容只能由英文、数字等常规字符，如果检查到用户输入有特殊字符，直接拒绝。但缺点是，系统 中不可避免地会有些内容包含特殊字符，这时候总不能拒绝入库。</li>
<li><strong>字符串替换</strong>：把危险字符替换成其他字符，缺点是危险字符可能有很多，一一枚举替换相当麻烦，也可能有漏网之 鱼。</li>
<li><strong>存储过程</strong>：把参数传到存储过程进行处理，但并不是所有数据库都支持存储过程。如果存储过程中执行的命令也是通 过拼接字符串出来的，还是会有漏洞。</li>
</ul>
<h3>参数化查询</h3>
<p>近年来，自从参数化查询出现后，SQL注入漏洞已成明日黄花。</p>
<p>参数化查询（Parameterized Query 或 Parameterized  Statement）是访问数据库时，在需要填入数值或数据的地方，使用参数 (Parameter) 来给值。</p>
<p>在使用参数化查询的情况下，数据库服务器不会将参数的内容视为SQL指令的一部份来处理，而是在<strong>数据库完成SQL指令的编译后，才 套用参数运行</strong>，因此就算参数中含有指令，也不会被数据库运行。Access、SQL  Server、<a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag" title="标签 MySQL 下的日志">MySQL</a>、SQLite等常用数据库都支持参数化查询。</p>
<h4>在ASP程序中使用参数化查询</h4>
<p>ASP环境下的参数化查询主要由<strong>Connection对象</strong>和<strong>Command对象</strong>完 成。</p>
<p>Access数据库只支持匿名参数，在传入参数的位置用问号代替即可。SQL  Server数据库虽然支持匿名和非匿名的参数，但是在ASP中也仅能使用匿名参数。</p>
<p><code>var conn = Server.CreateObject("ADODB.Connection");<br />
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  Server.MapPath("Test.mdb");<br />
conn.Open();</code></p>
<p>var cmd = Server.CreateObject(&#8220;ADODB.Command&#8221;);<br />
cmd.ActiveConnection = conn;<br />
cmd.CommandType = 1;<br />
cmd.CommandText = &#8220;SELECT TOP 1 * FROM [User] WHERE <strong>UserName = ?  AND Password = ?</strong>“;<br />
cmd.Parameters.Append(cmd.CreateParameter(”@UserName”, 200, 1, 20,  “user01″));<br />
cmd.Parameters.Append(cmd.CreateParameter(”@Password”, 200, 1, 16,  “123456″));</p>
<p>var rs = cmd.Execute();<br />
Response.Write(rs(”UserId”).value);</p>
<p>rs.Close();<br />
conn.Close();</p>
<h4>在ASP.NET程序中使用参数化查询</h4>
<p>ASP.NET环境下的查询化查询也是通过Connection对象和Command对象完成。如果数据库是SQL  Server，就可以用有名字的参数了，格式是<strong>“@”字符加上参数名</strong>。</p>
<p><code>SqlConnection conn = new  SqlConnection("server=(local)\\SQL2005;user id=sa;pwd=12345;initial  catalog=TestDb");<br />
conn.Open();</code></p>
<p>SqlCommand cmd = new SqlCommand(&#8220;SELECT TOP 1 * FROM [User] WHERE <strong>UserName  = @UserName AND Password = @Password</strong>“);<br />
cmd.Connection = conn;<br />
cmd.Parameters.AddWithValue(”UserName”, “user01″);<br />
cmd.Parameters.AddWithValue(”Password”, “123456″);</p>
<p>SqlDataReader reader = cmd.ExecuteReader();<br />
reader.Read();<br />
int userId = reader.GetInt32(0);</p>
<p>reader.Close();<br />
conn.Close();</p>
<p>MySQL的参数格式与SQL Server有点区别，是以<strong>“?”加上参数名</strong>。</p>
<p><code>MySqlConnection conn = new  MySqlConnection("server=127.0.0.1;uid=root;pwd=12345;<a href="http://www.iwanna.cn/tags/db/" class="st_tag internal_tag" rel="tag" title="标签 Database 下的日志">database</a>=test;");<br />
conn.Open();</code></p>
<p>MySqlCommand cmd = new MySqlCommand(&#8220;SELECT * FROM `User` WHERE <strong>UserName  = ?UserName AND Password = ?Password</strong> LIMIT 1″);<br />
cmd.Connection = conn;<br />
cmd.Parameters.AddWithValue(”UserName”, “user01″);<br />
cmd.Parameters.AddWithValue(”Password”, “123456″);</p>
<p>MySqlDataReader reader = cmd.ExecuteReader();<br />
reader.Read();<br />
int userId = reader.GetInt32(0);</p>
<p>reader.Close();<br />
conn.Close();</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/03/3657/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/03/3657/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/03/3657/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/03/3657/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/03/3657/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/03/3657/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>19条 WordPress 实用的 SQL 查询语句</title>
		<link>http://www.iwanna.cn/archives/2010/05/12/3089/</link>
		<comments>http://www.iwanna.cn/archives/2010/05/12/3089/#comments</comments>
		<pubDate>Wed, 12 May 2010 03:02:50 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[友情链接]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3089</guid>
		<description><![CDATA[不要轻易就直接执行SQL语句来折腾你的数据库。但有的时候，使用SQL可以大大提高你的办事效率，或者有的时候，你不得不用SQL来改变一些东西；比如，WordPress的默认账户名称“admin”，由于这个账户使用过于广泛，日夜总是让你觉得提心吊胆的，于是就萌生了一定要把“admin”这几个字换成其它的；比如，你想收集所有留言者的邮箱地址来实现你的垃圾营销目的，比如我想把站内所有含链接的留言完全删掉！ 本文为大家介绍19条 WordPress 实用的 SQL 查询语句，某天你可能就会用到。 使用方法： 进入你主机的phpmyadmin，选择你的WordPress数据，点击SQL选项卡，在文本框中输入SQL查询语句，执行！ 高度注意： 在每次执行SQL语句前，请勿必备份你的WordPress数据库。 1. 删除所有未使用的标签 DELETE a,b,c FROM wp_terms AS a LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id WHERE c.taxonomy = 'post_tag' AND c.count = 0 2. 删除所有文章修订版本(Revisions)以及它们的Meta数据 DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b [...]]]></description>
			<content:encoded><![CDATA[<p>不要轻易就直接执行SQL语句来折腾你的数据库。但有的时候，使用SQL可以大大提高你的办事效率，或者有的时候，你不得不用SQL来改变一些东西；比如，WordPress的默认账户名称“admin”，由于这个账户使用过于广泛，日夜总是让你觉得提心吊胆的，于是就萌生了一定要把“admin”这几个字换成其它的；比如，你想收集所有留言者的邮箱地址来实现你的垃圾营销目的，比如我想把站内所有含链接的留言完全删掉！</p>
<p>本文为大家介绍<strong><a href="http://www.iwanna.cn/archives/2010/05/12/3089/">19条 WordPress 实用的 SQL 查询语句</a></strong>，某天你可能就会用到。</p>
<p><strong>使用方法：</strong></p>
<p>进入你主机的phpmyadmin，选择你的WordPress数据，点击SQL选项卡，在文本框中输入SQL查询语句，执行！</p>
<p><strong>高度注意：</strong><br />
<span id="more-3089"></span><br />
在每次执行SQL语句前，请<strong>勿必备份你的WordPress数据库</strong>。</p>
<h3>1. 删除所有未使用的标签</h3>
<pre><code>DELETE a,b,c
FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'post_tag' AND c.count = 0</code></pre>
<h3>2. 删除所有文章修订版本(Revisions)以及它们的Meta数据</h3>
<pre><code>DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'</code></pre>
<h3>3. 更改WordPress地址和首页地址</h3>
<pre><code>UPDATE wp_options
SET option_value = replace(option_value, 'http://www.旧网址.com', 'http://www.新网址.com')
WHERE option_name = 'home' OR option_name = 'siteurl'</code></pre>
<h3>4. 更改文章的GUID</h3>
<pre><code>UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.旧网址.com', 'http://www.新网址.com')</code></pre>
<h3>5. 更改正文中的链接地址</h3>
<pre><code>UPDATE wp_posts
SET post_content = REPLACE (post_content, 'http://www.旧网址.com', 'http://www.新网址.com')</code></pre>
<h3>6. 更新文章的Meta值</h3>
<pre><code>UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'http://www.旧网址.com', 'http://www.新网址.com'</code></pre>
<h3>7. 重设Admin密码</h3>
<pre><code>UPDATE wp_users
SET user_pass = MD5( 'new_password' )
WHERE user_login = 'admin'</code></pre>
<h3>8. 重设admin的用户名</h3>
<pre><code>UPDATE wp_users
SET user_login = 'newname'
WHERE user_login = 'admin'</code></pre>
<h3>9. 将作者a的文章全部转移到作者b</h3>
<pre><code>UPDATE wp_posts
SET post_author = 'b'
WHERE post_author = 'a'</code></pre>
<h3>10. 删除文章的meta标签</h3>
<pre><code>DELETE FROM wp_postmeta
WHERE meta_key = 'your-meta-key'
</code>
</pre>
<h3>11. 导出所有评论中的邮件地址</h3>
<pre><code>SELECT DISTINCT comment_author_email
FROM wp_comments</code></pre>
<h3>12. 删除所有的Pingback</h3>
<pre><code>DELETE FROM wp_comments
WHERE comment_type = 'pingback'</code></pre>
<h3>13. 删除所有的垃圾评论</h3>
<pre><code>DELETE FROM wp_comments
WHERE comment_approved = 'spam'</code></pre>
<h3>14. 禁用所有激活的插件</h3>
<pre><code>UPDATE wp_options
SET option_value = ''
WHERE option_name = 'active_plugins'</code></pre>
<h3>15. 罗列所有未使用的Meta标签</h3>
<pre><code>SELECT *
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE  wp.ID IS NULL</code></pre>
<h3>16. 关闭旧文章的留言</h3>
<pre><code>UPDATE wp_posts
SET comment_status = 'closed'
WHERE post_date &lt; '2009-01-01' AND post_status = 'publish'</code></pre>
<h3>17. 更新留言者的网址</h3>
<pre><code>UPDATE wp_comments
SET comment_author_url = REPLACE( comment_author_url, 'http://旧网址.com', 'http://新网址.com' )</code></pre>
<h3>18. 更新正文内所有的’target=”_blank”‘为’rel=”nofollow”‘</h3>
<pre><code>UPDATE wp_posts
SET post_content = REPLACE (post_content, 'target="_blank',  'rel="nofollow')</code></pre>
<h3>19. 删除所有含链接的留言</h3>
<pre><code>DELETE FROM wp_comments
WHERE comment_content LIKE "%&lt;a href=%" AND comment_type = ''</code></pre>
<h4>参考文章:</h4>
<ul>
<li><a href="http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/" target="_blank">13  Useful WordPress SQL Queries You Wish You Knew  Earlier</a></li>
<li><a href="http://www.catswhocode.com/blog/wordpress-10-life-saving-sql-queries" target="_blank">WordPress : 10+ life saving SQL queries</a></li>
</ul>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/05/12/3089/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/05/12/3089/#comments">1条评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/05/12/3089/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/05/12/3089/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/05/12/3089/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/05/12/3089/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>14个数据库设计中技巧</title>
		<link>http://www.iwanna.cn/archives/2010/04/15/2735/</link>
		<comments>http://www.iwanna.cn/archives/2010/04/15/2735/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 15:35:44 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Skill]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2735</guid>
		<description><![CDATA[1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下，它们是一对一的关系：即一张原始单据对应且 只对应一个实体。在特殊情况下，它们可能是一对多或多对一的关系，即一张原始单据对应多个实体，或多张原始单据对应一个实体。这里的实体可以理解为基本 表。明确这种对应关系后，对我们设计录入界面大有好处。 〖例1〗：一份员工履历资料，在人力资源信息系统中，就对应三个基本表： 员工基本情况表、社会关系表、工作简历表。这就是“一张原始单据对应多个实体”的典型例子。 2. 主键与外键 一般而言，一个实体不能既无主键又无外键。在E－R 图中, 处于叶子部位的实体, 可以定义主键，也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计，在全局数据库的设计中，占有重要地位。当全局数据库的设计完成以后，有个美 国数据库设计专家说：“键，到处都是键，除了键之外，什么也没有”，这就是他的数据库设计经验之谈，也反映了他对信息系统核心(数据模型)的高度抽象思 想。因为：主键是实体的高度抽象，主键与外键的配对，表示实体之间的连接。 3. 基本表的性质 基本表与中间 表、临时表不同，因为它具有如下四个特性： (1) 原子性。基本表中的字段是不可再分解的。 (2) 原始性。基本表中的记录是原始数据（基础数据）的记录。 (3) 演绎性。由基本表与代码表中的数据，可以派生出所有的输出数据。 (4) 稳定性。基本表的结构是相对稳定的，表中的记录是要长期保存的。 理解基本表的性质后，在设计数据库时，就能将基本表与中间表、临 时表区分开来。 4. 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是，满足第三范式的数据库设计，往往不是最好的设计。为了提高数据库的运行效率，常常需要降低范式标准：适当增加冗余，达到以空间 换时间的目的。 〖例2〗：有一张存放商品的基本表，如表1所示。“金额”这个字段的存在，表明该表的设计不满足第三范式，因为 “金额”可以由“单价”乘以“数量”得到，说明“金额”是冗余字段。但是，增加“金额”这个冗余字段，可以提高查询统计的速度，这就是以空间换时间的作 法。 在Rose 2002中，规定列有两种类型：数据列和计算列。“金额”这样的列被称为“计算列”，而“单价”和“数量”这样的列被称为“数据列”。 表1 商品表的表结构 商品名称 商品型号 单价 数量 金额 电视机 29吋 2,500 40 100,000 5. 通俗地理解三个范式 [...]]]></description>
			<content:encoded><![CDATA[<p>1. 原始单据与实体之间的关系</p>
<p>可以是一对一、一对多、多对多的关系。在一般情况下，它们是一对一的关系：即一张原始单据对应且 只对应一个实体。在特殊情况下，它们可能是一对多或多对一的关系，即一张原始单据对应多个实体，或多张原始单据对应一个实体。这里的实体可以理解为基本 表。明确这种对应关系后，对我们设计录入界面大有好处。</p>
<p>〖例1〗：一份员工履历资料，在人力资源信息系统中，就对应三个基本表： 员工基本情况表、社会关系表、工作简历表。这就是“一张原始单据对应多个实体”的典型例子。</p>
<p>2. 主键与外键</p>
<p>一般而言，一个实体不能既无主键又无外键。在E－R 图中, 处于叶子部位的实体, 可以定义主键，也可以不定义主键(因为它无子孙),  但必须要有外键(因为它有父亲)。</p>
<p>主键与外键的设计，在全局数据库的设计中，占有重要地位。当全局数据库的设计完成以后，有个美 国数据库设计专家说：“键，到处都是键，除了键之外，什么也没有”，这就是他的数据库设计经验之谈，也反映了他对信息系统核心(数据模型)的高度抽象思 想。因为：主键是实体的高度抽象，主键与外键的配对，表示实体之间的连接。<br />
<span id="more-2735"></span><br />
3. 基本表的性质</p>
<p>基本表与中间 表、临时表不同，因为它具有如下四个特性：</p>
<p>(1) 原子性。基本表中的字段是不可再分解的。</p>
<p>(2)  原始性。基本表中的记录是原始数据（基础数据）的记录。</p>
<p>(3)  演绎性。由基本表与代码表中的数据，可以派生出所有的输出数据。</p>
<p>(4)  稳定性。基本表的结构是相对稳定的，表中的记录是要长期保存的。</p>
<p>理解基本表的性质后，在设计数据库时，就能将基本表与中间表、临 时表区分开来。</p>
<p>4. 范式标准</p>
<p>基本表及其字段之间的关系,  应尽量满足第三范式。但是，满足第三范式的数据库设计，往往不是最好的设计。为了提高数据库的运行效率，常常需要降低范式标准：适当增加冗余，达到以空间 换时间的目的。</p>
<p>〖例2〗：有一张存放商品的基本表，如表1所示。“金额”这个字段的存在，表明该表的设计不满足第三范式，因为 “金额”可以由“单价”乘以“数量”得到，说明“金额”是冗余字段。但是，增加“金额”这个冗余字段，可以提高查询统计的速度，这就是以空间换时间的作 法。</p>
<p>在Rose  2002中，规定列有两种类型：数据列和计算列。“金额”这样的列被称为“计算列”，而“单价”和“数量”这样的列被称为“数据列”。</p>
<p>表1 商品表的表结构</p>
<p>商品名称 商品型号 单价 数量 金额</p>
<p>电视机 29吋 2,500 40  100,000</p>
<p>5. 通俗地理解三个范式</p>
<p>通俗地理解三个范式，对于数据库设计大有好处。在数据库设计中，为 了更好地应用三个范式，就必须通俗地理解三个范式(通俗地理解是够用的理解，并不是最科学最准确的理解)：</p>
<p>第一范式：1NF是对 属性的原子性约束，要求属性具有原子性，不可再分解；</p>
<p>第二范式：2NF是对记录的惟一性约束，要求记录有惟一标识，即实体的惟一 性；</p>
<p>第三范式：3NF是对字段冗余性的约束，即任何字段不能由其他字段派生出来，它要求字段没有冗余。</p>
<p>没有冗余的数据库设计可以做到。但是，没有冗余的数据库未必是最好的数据库，有时为了提高运行效率，就必须降低范式标准，适当保留冗余数据。具体做法是： 在概念数据模型设计时遵守第三范式，降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段，允许冗余。</p>
<p>6.  要善于识别与正确处理多对多的关系</p>
<p>若两个实体之间存在多对多的关系，则应消除这种关系。消除的办法是，在两者之间增加第三个实 体。这样，原来一个多对多的关系，现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体，实质上是一个较复杂的 关系，它对应一张基本表。一般来讲，数据库设计工具不能识别多对多的关系，但能处理多对多的关系。</p>
<p>〖例3〗：在“图书馆信息系 统”中，“图书”是一个实体，“读者”也是一个实体。这两个实体之间的关系，是一个典型的多对多关系：一本图书在不同时间可以被多个读者借阅，一个读者又 可以借多本图书。为此，要在二者之间增加第三个实体，该实体取名为“借还书”，它的属性为：借还时间、借还标志(0表示借书，1表示还书)，另外，它还应 该有两个外键(“图书”的主键，“读者”的主键)，使它能与“图书”和“读者”连接。</p>
<p>7. 主键PK的取值方法</p>
<p>PK是供程序员使用的表间连接工具，可以是一无物理意义的数字串,  由程序自动加1来实现。也可以是有物理意义的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时，建议字段的个数不要太多，多了不但索引占 用空间大，而且速度也慢。</p>
<p>8. 正确认识数据冗余</p>
<p>主键与外键在多表中的重复出现,  不属于数据冗余，这个概念必须清楚，事实上有许多人还不清楚。非键字段的重复出现,  才是数据冗余！而且是一种低级冗余，即重复性的冗余。高级冗余不是字段的重复出现，而是字段的派生出现。</p>
<p>〖例4〗：商品中的“单 价、数量、金额”三个字段，“金额”就是由“单价”乘以“数量”派生出来的，它就是冗余，而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗 余才会增加数据的不一致性，因为同一数据，可能从不同时间、地点、角色上多次录入。因此，我们提倡高级冗余(派生性冗余)，反对低级冗余(重复性冗 余)。</p>
<p>9. E－R图没有标准答案</p>
<p>信息系统的E－R图没有标准答案，因为它的设计与画法不是惟一的，只要它 覆盖了系统需求的业务范围和功能内容，就是可行的。反之要修改E－R图。尽管它没有惟一的标准答案，并不意味着可以随意设计。好的E－图的标准是：结构清 晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。</p>
<p>10. 视图技术在数据库设计中很有用</p>
<p>与基本 表、代码表、中间表不同，视图是一种虚表，它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口，是基表数据综合的一种形式,  是数据处理的一种方法，是用户数据保密的一种手段。为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。  若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图。这样反复交迭定义, 视图的深度就不受限制了。</p>
<p>对于某 些与国家政治、经济、技术、军事和安全利益有关的信息系统，视图的作用更加重要。这些系统的基本表完成物理设计之后，立即在基本表上建立第一层视图，这层 视图的个数和结构，与基本表的个数和结构是完全相同。并且规定，所有的程序员，一律只准在视图上操作。只有数据库管理员，带着多个人员共同掌握的“安全钥 匙”，才能直接在基本表上操作。请读者想想：这是为什么？</p>
<p>11. 中间表、报表和临时表</p>
<p>中间表是存放统计数 据的表，它是为数据仓库、输出报表或查询结果而设计的，有时它没有主键与外键(数据仓库除外)。临时表是程序员个人设计的，存放临时记录，为个人所用。基 表和中间表由DBA维护，临时表由程序员自己用程序自动维护。</p>
<p>12. 完整性约束表现在三个方面</p>
<p>域的完整 性：用Check来实现约束，在数据库设计工具中，对字段的取值范围进行定义时，有一个Check按钮，通过它定义字段的值城。</p>
<p>参照完整性：用PK、FK、表级触发器来实现。</p>
<p>用户定义完整性：它是一些业务规则，用存储过程和触发器来实现。</p>
<p>13.  防止数据库设计打补丁的方法是“三少原则”</p>
<p>(1)  一个数据库中表的个数越少越好。只有表的个数少了，才能说明系统的E－R图少而精，去掉了重复的多余的实体，形成了对客观世界的高度抽象，进行了系统的数 据集成，防止了打补丁式的设计；</p>
<p>(2)  一个表中组合主键的字段个数越少越好。因为主键的作用，一是建主键索引，二是做为子表的外键，所以组合主键的字段个数少了，不仅节省了运行时间，而且节省 了索引存储空间；</p>
<p>(3)  一个表中的字段个数越少越好。只有字段的个数少了，才能说明在系统中不存在数据重复，且很少有数据冗余，更重要的是督促读者学会“列变行”，这样就防止了 将子表中的字段拉入到主表中去，在主表中留下许多空余的字段。所谓“列变行”，就是将主表中的一部分内容拉出去，另外单独建一个子表。这个方法很简单，有 的人就是不习惯、不采纳、不执行。</p>
<p>数据库设计的实用原则是：在数据冗余和处理速度之间找到合适的平衡点。“三少”是一个整体概 念，综合观点，不能孤立某一个原则。该原则是相对的，不是绝对的。“三多”原则肯定是错误的。试想：若覆盖系统同样的功能，一百个实体(共一千个属性)  的E－R图，肯定比二百个实体(共二千个属性)的E－R图，要好得多。</p>
<p>提倡“三少”原则，是叫读者学会利用数据库设计技术进行系 统的数据集成。数据集成的步骤是将文件系统集成为应用数据库，将应用数据库集成为主题数据库，将主题数据库集成为全局综合数据库。集成的程度越高，数据共 享性就越强，信息孤岛现象就越少，整个企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数就会越少。</p>
<p>提倡“三少” 原则的目的，是防止读者利用打补丁技术，不断地对数据库进行增删改，使企业数据库变成了随意设计数据库表的“垃圾堆”，或数据库表的“大杂院”，最后造成 数据库中的基本表、代码表、中间表、临时表杂乱无章，不计其数，导致企事业单位的信息系统无法维护而瘫痪。</p>
<p>“三多”原则任何人都 可以做到，该原则是“打补丁方法”设计数据库的歪理学说。“三少”原则是少而精的原则，它要求有较高的数据库设计技巧与艺术，不是任何人都能做到的，因为 该原则是杜绝用“打补丁方法”设计数据库的理论依据。</p>
<p>14. 提高数据库运行效率的办法</p>
<p>在给定的系统硬件和 系统软件条件下，提高数据库系统的运行效率的办法是：</p>
<p>(1) 在数据库物理设计时，降低范式，增加冗余, 少用触发器,  多用存储过程。</p>
<p>(2)  当计算非常复杂、而且记录条数非常巨大时(例如一千万条)，复杂计算要先在数据库外面，以文件系统方式用C++语言计算处理完成之后，最后才入库追加到表 中去。这是电信计费系统设计的经验。</p>
<p>(3)  发现某个表的记录太多，例如超过一千万条，则要对该表进行水平分割。水平分割的做法是，以该表主键PK的某个值为界线，将该表的记录水平分割为两个表。若 发现某个表的字段太多，例如超过八十个，则垂直分割该表，将原来的一个表分解为两个表。</p>
<p>(4)  对数据库管理系统DBMS进行系统优化，即优化各种系统参数，如缓冲区个数。</p>
<p>(5)  在使用面向数据的SQL语言进行程序设计时，尽量采取优化算法。</p>
<p>总之，要提高数据库的运行效率，必须从数据库系统级优化、数据库 设计级优化、程序实现级优化，这三个层次上同时下功夫。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/04/15/2735/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/04/15/2735/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/04/15/2735/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/04/15/2735/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/04/15/2735/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/04/15/2735/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于数据大容量的导入导出小结[SQL Server]</title>
		<link>http://www.iwanna.cn/archives/2010/03/29/2607/</link>
		<comments>http://www.iwanna.cn/archives/2010/03/29/2607/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:18:44 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2607</guid>
		<description><![CDATA[/*---------------------------------------------------------------- -- Author :feixianxxx(poofly) -- Date :2010-03-29 14:04:14 -- Version: -- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Evaluation Edition on Windows NT 6.1 &#60;X86&#62; (Build 7600: ) -- CONTENT：关于数据大容量的导入导出小结 ----------------------------------------------------------------*/ 1。关于大容量数据导入导出的一些方法 SQL SERVER提供多种工具用于各种数据源的数据导入导出，这些数据源包括本文文件、ODBC数据源、OLE DB数据源、ASCII文本文件和EXCEL电子表格。 2.常用工具 DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包 使用SQL SERVER复制发布数据 BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出 BULK INSERT实现从数据文件导入数据到SQL [...]]]></description>
			<content:encoded><![CDATA[<pre>
<div>/*----------------------------------------------------------------
-- Author  :feixianxxx(poofly)
-- Date    :2010-03-29 14:04:14
-- Version:
--      Microsoft <a href="http://www.iwanna.cn/tags/sql/" class="st_tag internal_tag" rel="tag" title="标签 Sql 下的日志">SQL</a> Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
        Jul  9 2008 14:43:34
        Copyright (c) 1988-2008 Microsoft Corporation
        Enterprise Evaluation Edition on Windows NT 6.1 &lt;X86&gt; (Build 7600: )
-- CONTENT：关于数据大容量的导入导出小结

----------------------------------------------------------------*/</div>
</pre>
<p>1。关于大容量数据导入导出的一些方法<br />
SQL SERVER提供多种工具用于各种数据源的数据导入导出，这些数据源包括本文文件、ODBC数据源、OLE  DB数据源、ASCII文本文件和EXCEL电子表格。</p>
<p>2.常用工具<br />
DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包<br />
使用SQL SERVER复制发布数据<br />
BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出<br />
BULK INSERT实现从数据文件导入数据到SQL  SERVER实例<br />
分布式查询实现从一个数据源选择数据插入到SQL SERVER实例<br />
SELECT INTO 语句插入数据表</p>
<p>3.导入导出的数据<br />
1。导入数据的目标表必须存在。导出数据的目标文件如果存在，则将重写上面的内容。如果不存在，则BCP自动创建文件<br />
2。数据文件中的数据必须是字符格式或是先前由bcp工具生成的格式(本机格式)<br />
3。必须对相应的表拥有足够的权限</p>
<p>4.数据导入导出工具的简单用法a.DTS<br />
DTS是一组图形工具和可编程对象，是开发者可以将取自完全的不同源的数据析取、转换并合并成一个或者多个。<br />
它的特点就是可以融合完全不同源的数据源 这在企业改进中应用很大 。<br />
这里涉及到一个DTS包，它是一个有组织的链接、DTS任务、DTS转换和工作流约束的集合。<br />
关于DTS的操作请参看相关具体文献。</p>
<p>b.BCP<br />
它常用于将大量的数据从另外的程序转移到SQL  SERVER表中。当然也可以用于将表中数据传输到数据文件中。<br />
下面是一些BCP的简单用法(关于很多的选项使用看相关文档)</p>
<dl>
<dt>SQL code</dt>
<dd>
<pre>
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->--前序,开启xp_cmdshell
--关于xp_cmdshell的一些知识 请看 http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspx
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
--环境
create table test
(
    id int,
    value varchar(100)
)
go
insert test values(1,'s1')
insert test values(2,'s2')
insert test values(3,'s3')
insert test values(4,'s4')
go
--1将表的数据导出到TEXT.txt文件中
exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -c  -Usa -P123456'
--如果是WINDOWS身份 直接 xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -T -c'

--2将TEXT.txt文件中的数据复制到test1表
select * into test1 from test where 1=2
exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:\test.txt -c  -Usa -P123456'
select * from test1

--3将TEST表的ID字段复制到TEXT.txt中
exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:\test.dat -T -c'

--4将test表中的第一行移动到text.txt中
exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test "  queryout e:\test.txt -c  -Usa -P123456'

--关闭xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;</div>
</pre>
</dd>
</dl>
<p>c.BULK INSERT<br />
它只能用于数据导入到SQL SERVER实例中，但是我们一般会选择使用它，因为它比BCP使用工具快。<br />
小例子：</p>
<dl>
<dt>SQL code</dt>
<dd>
<pre>
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->--truncate table test
BULK INSERT tempdb..test
   FROM 'E:\test.txt'
   WITH
      (
         FIELDTERMINATOR =',',--字段分割符号
         ROWTERMINATOR ='\n'--换行符号
      )
select * from test
/*
id          value
----------- -----------
1            s1
2            asds
3            sadsa
100          2asda*/</div>
</pre>
</dd>
</dl>
<p>ps：只写最简单用法,具体参数很多，参考MSDN</p>
<p>d.分布式查询</p>
<dl>
<dt>SQL code</dt>
<dd>
<pre>
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->--包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。
--当访问链接服务器中的表时，这种方法是一种替代方法，并且是一种使用 OLE DB 连接并访问远程数据的一次性的临时方法。
--对于较频繁引用 OLE DB 数据源的情况，请改为使用链接服务器。

--A.将 OPENROWSET 与 SELECT 和 SQL Server Native Client OLE DB 访问接口一起使用（MSDN）
以下示例使用 SQL Server Native Client OLE DB 访问接口访问 TEST.A 表，该表位于远程服务器 SERVER1 上的 POOFLY 数据库中.
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=SERVER1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM POOFLY.TEST.A
      ORDER BY GroupName, Name') AS a;

--B. 使用 Microsoft OLE DB Provider for Jet（MSDN）
以下示例通过 Microsoft OLE DB Provider for Jet 访问 Microsoft Access Northwind 数据库中的 Customers 表。
SELECT CustomerID, CompanyName
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
      'admin';'',Customers)
GO

--c.使用 OPENROWSET 将文件数据大容量插入 varchar(max) 列中
/*
为了导入大型对象数据，OPENROWSET BULK 子句支持三个选项，允许用户以单行或单列行集导入数据文件的内容。
你可以指定其中一个大型对象选项，而不是使用格式化文件。
大型对象选项包括：
SINGLE_BLOB
以单行读取 data_file 的内容，以 varbinary(max) 类型的单列行集返回内容。
SINGLE_CLOB
以字符读取指定数据文件的内容，以 varchar(max) 类型的单行、单列行集返回内容，使用的是当前数据库的排序规则，例如文本或 Microsoft Word 文档。
SINGLE_NCLOB
以 Unicode 读取指定数据文件的内容，以 nvarchar(max) 类型的单行、单列行集返回内容，并使用当前数据库的排序规则。
*/
以下示例创建一个用于演示的小型表，并将名为 Text1.txt 的文件中的文件数据插入 varchar(max) 列中。
CREATE TABLE my_Test(Document varchar(max))
GO
INSERT INTO  my_Test
 select * FROM OPENROWSET(BULK N'E:\test.txt', SINGLE_CLOB) AS Document
GO
select * from my_Test
/*
Document
-------------------------------------------------------
ASDSADASDSADSADSAFKJHFAS HKLASJHASHBKDSAHKJDHSAKJDHSAKDHSAKDHSA
*/</div>
</pre>
</dd>
</dl>
<p>e.SELECT INTO</p>
<p>关于这个的用法 相信大家都很清楚了 我就不说明了。</p>
<p>5。优 化导入导出数据的一些方法1。使用最小日志记录:<br />
a.恢复模式是简单模式或者大容量日志记录模式。如果你是完整模式，可以在进行操作前改成大容量日志模式，插入后改回来<br />
b.目的表没有触发器,没有索引,指定了TABLOCK</p>
<p>2。将数据从 多个客户端并行导入到单个表:<br />
a.如果是完整恢复模式，改成大容量日志模式<br />
b.指定了TABLOCK<br />
c.表上没有索引</p>
<p>3。使用批处理:通过设置BCP或者 BULK INSERT的相关选项，是用于可以指定在操作过程中发给SQL的每个批处理的行数。</p>
<p>4。禁用触发器和约束:默认情况下是禁用的。如果要检查，可以在复制完成后进行一次更 新操作(当然值不可以变)</p>
<p>5。对数据文件中的数据排序:通 过设置ORDER提示,提高性能。默认数据文件是不排序的。</p>
<p>6。控制锁 定行为:指定大容量操作过程获得一个大容量更新表级锁，这样可以减少表上锁的争夺。</p>
<p>7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时，对有 DEFAULT的列插入默认值，而是改成在列中值为NULL。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/03/29/2607/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/03/29/2607/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/03/29/2607/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/03/29/2607/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/03/29/2607/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/03/29/2607/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>40+ Web前端开发必备的备忘单[上]</title>
		<link>http://www.iwanna.cn/archives/2009/06/30/1894/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/30/1894/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 03:08:17 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Color]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1894</guid>
		<description><![CDATA[Cheat Sheet 一词在中文中并没有很贴切的对译，大概是考试作弊条一类的东西，这要求 Cheat Sheet 必须短小精悍又覆盖广泛，作为 Web 开发与设计师，免不了在工作时查询大量资料，某个 Web 色值，某个 JavaScript 库的核心语法，这类资料如果攒齐了，怕有半间屋子那么多，如果用 Cheet Sheet 也许几十页纸就够了，本文收集了近百份用于 Web 开发与设计的 Cheet Sheet，你会发现他们非常实用。 HTML, XHTML, CSS2 CSS2 Cheat Sheet 不仅是一份完整的 CSS2 速查手册，还让你了解每个属性该怎么用。预览 &#124; 下载 （PDF） Gosquared CSS help sheets 设计和结构都很整齐，漂亮。下载（PDF） addedbytes CSS2 Cheat Sheet 该速查手册只有一页纸，包含 CSS 2.1 全部选择器和属性，还包含一个盒子模型示例。下载（PDF &#124; PNG） Core css 将 CSS 的核心知识分成3部分，包含了 CSS 的方方面面。下载 （需免费注册） CSS [...]]]></description>
			<content:encoded><![CDATA[<p>Cheat Sheet 一词在中文中并没有很贴切的对译，大概是考试作弊条一类的东西，这要求 Cheat Sheet 必须短小精悍又覆盖广泛，作为 Web 开发与设计师，免不了在工作时查询大量资料，某个 Web 色值，某个 JavaScript 库的核心语法，这类资料如果攒齐了，怕有半间屋子那么多，如果用 Cheet Sheet 也许几十页纸就够了，本文收集了近百份用于 Web 开发与设计的 Cheet Sheet，你会发现他们非常实用。</p>
<h3 class="subtitle">HTML, XHTML, CSS2</h3>
<h4><a href="http://acodingfool.typepad.com/blog/css-cheat-sheet.html" target="_blank">CSS2 Cheat Sheet</a></h4>
<p><a title="CSS Cheat Sheet - Page 1" rel="thumbnail" href="http://acodingfool.typepad.com/blog/images/cheatsheets/css_cheatsheet_v2_pg1_large.jpg"><img class="image" style="border: 1px solid black;" src="http://acodingfool.typepad.com/blog/images/cheatsheets/css_cheatsheet_v2_pg1_small.jpg" alt="" /></a> <a title="CSS Cheat Sheet - Page 2" rel="thumbnail" href="http://acodingfool.typepad.com/blog/images/cheatsheets/css_cheatsheet_v2_pg2_large.jpg"><img class="image" style="border: 1px solid black;" src="http://acodingfool.typepad.com/blog/images/cheatsheets/css_cheatsheet_v2_pg2_small.jpg" alt="" /></a><br />
<span id="more-1894"></span><br />
不仅是一份完整的 CSS2 速查手册，还让你了解每个属性该怎么用。<a href="http://acodingfool.typepad.com/blog/css-cheat-sheet.html">预览</a> |  <a href="http://acodingfool.typepad.com/blog/pdf/css_cheatsheet_v2.pdf">下载</a> （PDF）</p>
<h4><a href="http://www.gosquared.com/images/help_sheets/CSS%20Help%20Sheet%2002.pdf" target="_blank">Gosquared CSS help sheets</a></h4>
<p>设计和结构都很整齐，漂亮。<a href="http://www.gosquared.com/images/help_sheets/CSS%20Help%20Sheet%2002.pdf">下载（PDF）</a></p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/css_help_sheets.jpg" alt="CHEAT_SHEETS" width="621" height="392" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/css-cheat-sheet/" target="_blank">addedbytes CSS2 Cheat Sheet</a></h4>
<p>该速查手册只有一页纸，包含 CSS 2.1 全部选择器和属性，还包含一个盒子模型示例。下载（<a href="http://www.addedbytes.com/download/css-cheat-sheet-v2/pdf/">PDF</a> | <a href="http://www.addedbytes.com/download/css-cheat-sheet-v2/png/">PNG</a>）</p>
<p><img style="border: 1px solid black;" src="http://www.addedbytes.com/cheat-sheets/thumbnails/css_v2_plain.png" alt="" /></p>
<h4><a href="http://refcardz.dzone.com/refcardz/corecss-part1" target="_blank">Core css</a></h4>
<p>将 CSS 的核心知识分成3部分，包含了 CSS 的方方面面。<a href="http://refcardz.dzone.com/assets/request/refcard/4784?oid=lan4784&amp;uid=0">下载</a> （需免费注册）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/corecss-part1.jpg" alt="core css" width="620" height="415" /></h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/corecss-part3.jpg" alt="core css" width="621" height="517" /></h4>
<h4><a href="http://www.eddiewelker.com/wp-content/uploads/2007/09/csscheatsheet.pdf" target="_blank">CSS Shorthand Cheat Sheet</a></h4>
<p>一些不容易记住的 CSS 元素。<a href="http://www.eddiewelker.com/wp-content/uploads/2007/09/csscheatsheet.pdf">下载</a> （PDF）</p>
<h4><a href="http://www.veign.com/downloads/guides/qrg0007.pdf">CSS2 – Quick Reference Guide – PDF</a> <a href="http://www.veign.com/downloads/guides/qrg0007.pdf">下载</a>（PDF）</h4>
<h4><a href="http://acodingfool.typepad.com/blog/2009/01/xhtml.html" target="_blank">XHTML 1.1 Cheat Sheet</a></h4>
<p><a href="http://www.w3.org/TR/xhtml11/" target="_blank">XHTML 1.1</a> 细则中涉及到的所有元素与属性。<a href="http://acodingfool.typepad.com/blog/xhtml-11-cheat-sheet.html">预览</a> | <a href="http://acodingfool.typepad.com/blog/pdf/xhtml_1.1_cheatsheet_v3.pdf">下载</a></p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/xhtml_1_1_cheatsheet.jpg" alt="CHEAT_SHEETS" width="620" height="413" /></h4>
<h4><a href="http://www.gosquared.com/images/help_sheets/HTML%20Help%20Sheet%2002.pdf" target="_blank">Gosquared html help sheets</a></h4>
<p>设计漂亮，结构精良的 HTML 速查。<a href="http://www.gosquared.com/images/help_sheets/HTML%20Help%20Sheet%2002.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/html-help_sheets.jpg" alt="CHEAT_SHEETS" width="620" height="413" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/html-cheat-sheet/" target="_blank">HTML Cheat Sheet</a></h4>
<p>一份 A4 纸大小的单页 HTML 速查表。下载 （<a href="http://www.addedbytes.com/download/html-cheat-sheet-v1/pdf/" target="_blank">PDF</a> | <a href="http://www.addedbytes.com/download/html-cheat-sheet-v1/png/" target="_blank">PNG</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/html.jpg" alt="CHEAT_SHEETS" width="621" height="348" /></h4>
<h4><a href="http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.html" target="_blank">HTML5 Canvas Cheat Sheet</a></h4>
<p>HTML5 Canvas 对象的速查手册，直接编译自 <a href="http://www.whatwg.org/specs/web-apps/current-work/" target="_blank">WHATWG specs</a> 细则，只是更容易阅读一些。下载 （<a href="http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.pdf">PDF</a> | <a href="http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.png">PNG</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/Canvas_Cheat_Sheet.jpg" alt="CHEAT_SHEETS" width="621" height="341" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/html-character-entities-cheat-sheet/" target="_blank">HTML Character Entities Cheat Sheet</a></h4>
<p>HTML 字符标识速查。下载 （ <a href="http://www.addedbytes.com/download/html-character-entities-cheat-sheet/pdf/" target="_blank">PDF</a> | <a href="http://www.addedbytes.com/download/html-character-entities-cheat-sheet/png/" target="_blank">PNG</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/html-character-entities.jpg" alt="CHEAT_SHEETS" width="621" height="391" /></h4>
<h4><a href="http://acodingfool.typepad.com/blog/html-character-entities-cheat-sheet.html" target="_blank">HTML Character Entities Cheat Sheet</a></h4>
<p>该表包含 <a href="http://www.w3.org/TR/html4/sgml/entities.html">HTML 4 字符标识</a>，包括 ISO8859-1 (Latin-1)  中的字符。<a href="http://acodingfool.typepad.com/blog/html-character-entities-cheat-sheet.html">预览</a> | <a href="http://acodingfool.typepad.com/blog/pdf/html_entities_cheatsheet_v3.pdf">下载</a><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/html_entities_cheatsheet.jpg" alt="CHEAT_SHEETS" width="621" height="400" /></p>
<h4><a href="http://acodingfool.typepad.com/blog/html-colors-cheat-sheet.html" target="_blank">HTML Colors Cheat Sheet</a></h4>
<p>该  HTML 颜色表包含 1050 种颜色，按色度区分，每个色度包含25中不同饱和度与亮度。还包含216种 Web 安全色。<a href="http://acodingfool.typepad.com/blog/html-colors-cheat-sheet.html">预览</a> | <a href="http://acodingfool.typepad.com/blog/pdf/html_colors_cheatsheet_v2.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/html_colors_cheatsheet.jpg" alt="CHEAT_SHEETS" width="621" height="799" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/colour-chart/">RGB Hex Colour Chart</a></h4>
<p>RGB 16进制颜色表。包含216种 Web 安全色。下载 （<a href="http://www.addedbytes.com/download/rgb-hex-cheat-sheet-v1/png/">PNG</a> | <a href="http://www.addedbytes.com/download/rgb-hex-cheat-sheet-v1/pdf/">PDF</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/rgb-hex-cheat.jpg" alt="CHEAT_SHEETS" width="621" height="350" /></h4>
<h3 class="subtitle">Scripting 速查手册</h3>
<h4><a href="http://www.addedbytes.com/cheat-sheets/javascript-cheat-sheet/" target="_blank">JavaScript Cheat Sheet</a></h4>
<p>包含 JavaScript 的 的方法与函数，正则表单时，以及 XMLHttpRequest  对象。下载（<a href="http://www.addedbytes.com/download/javascript-cheat-sheet-v1/png/">PNG</a> | <a href="http://www.addedbytes.com/download/javascript-cheat-sheet-v1/pdf/">PDF</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/javascript.jpg" alt="CHEAT_SHEETS" width="621" height="305" /></h4>
<h4><a href="http://www.wait-till-i.com/stuff/JavaScript-DOM-Cheatsheet.pdf" target="_blank">JavaScript DOM Cheatsheet</a></h4>
<p>JavaScript <a href="http://www.iwanna.cn/tags/dom/" class="st_tag internal_tag" rel="tag" title="标签 DOM 下的日志">DOM</a> 结构速查手册。<a href="http://www.wait-till-i.com/stuff/JavaScript-DOM-Cheatsheet.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/javascript-dom.jpg" alt="CHEAT_SHEETS" width="621" height="326" /></h4>
<h4><a href="http://acodingfool.typepad.com/blog/2009/01/jquery-13-cheat-sheet.html">jQuery 1.3 Cheat Sheet</a></h4>
<p><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag" title="标签 JQuery 下的日志">jQuery</a> 1.3 速查表。<a href="http://acodingfool.typepad.com/blog/jquery-13-cheat-sheet.html">预览</a> | <a href="http://acodingfool.typepad.com/blog/pdf/jquery_1.3_cheatsheet_v1.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/acodingfooljquery.jpg" alt="CHEAT_SHEETS" width="621" height="379" /></h4>
<h4><a href="http://www.cheat-sheets.org/saved-copy/Jquery-Cheat-Sheet-1.2.pdf" target="_blank">jQuery Cheat Sheet 1.2</a> jQuery 1.2 速查手册 <a href="http://www.cheat-sheets.org/saved-copy/Jquery-Cheat-Sheet-1.2.pdf">下载</a>（PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/jquery-1-2.jpg" alt="CHEAT_SHEETS" width="621" height="322" /></h4>
<h4><a href="http://mediavrog.net/blog/2008/06/11/mootools/mootools-12-cheat-sheet/" target="_blank">mootools 1.2 cheat sheet</a></h4>
<p>另一个 JavaScript 库 <a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag" title="标签 Mootools 下的日志">MooTools</a> 1.2 速查手册。<a href="http://mediavrog.net/blog/wp-content/uploads/2008/08/mootools-12-cheat-sheet-pf.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/mootools.jpg" alt="CHEAT_SHEETS" /></h4>
<h4><a href="http://www.snook.ca/files/prototype_1.5.0_snookca.pdf" target="_blank">prototype 1.5.0</a> JavaScript 库 Prototype 1.5 速查手册。<a href="http://www.snook.ca/files/prototype_1.5.0_snookca.pdf">下载</a> （PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/prototype.jpg" alt="CHEAT_SHEETS" width="620" height="384" /></h4>
<h4><a title="Permanent Link to Prototype 1.6.0.2 Cheat Sheet" rel="bookmark" href="http://thinkweb2.com/projects/prototype/prototype-1602-cheat-sheet/" target="_blank">Prototype 1.6.0.2 Cheat Sheet</a></h4>
<p>JavaScript 库 Prototype 1.6.0.2 速查手册。<a href="http://thinkweb2.com/projects/prototype/downloads/Prototype%20Cheat%20Sheet%201.6.0.2">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/prototype_cheatsheet_1.6.0.2.jpg" alt="CHEAT_SHEETS" width="620" height="369" /></h4>
<h4><a href="http://wps.aw.com/wps/media/objects/2234/2287950/javascript_refererence.pdf" target="_blank">Addison-Wesley’s JavaScript Reference Card</a></h4>
<p>JavaScript 参考手册。<a href="http://wps.aw.com/wps/media/objects/2234/2287950/javascript_refererence.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/javascript_refererence.jpg" alt="CHEAT_SHEETS" width="620" height="321" /></h4>
<h4><a href="http://refcardz.dzone.com/refcardz/jquery-selectors" target="_blank">jQuery selectors</a></h4>
<p>对 jQuery 开发者来说，该速查手册不可或缺，详细列举了 jQuery 所有选择器。<a href="http://refcardz.dzone.com/assets/request/refcard/3088?oid=lan3088&amp;uid=0">下载</a> （徐免费注册）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/jquery-selectors.jpg" alt="CHEAT_SHEETS" width="621" height="442" /></h4>
<p><!--more--></p>
<h3 class="subtitle">服务器端编程</h3>
<h4><a href="http://www.addedbytes.com/cheat-sheets/php-cheat-sheet/" target="_blank">PHP Cheat Sheet (V2)</a></h4>
<p>单页 <a href="http://www.iwanna.cn/tags/php/" class="st_tag internal_tag" rel="tag" title="标签 PHP 下的日志">PHP</a> 参考手册，包含日期格式，正则表达式以及常用函数。下载 （<a href="http://www.addedbytes.com/download/php-cheat-sheet-v2/pdf/">PDF</a> | <a href="http://www.addedbytes.com/download/php-cheat-sheet-v2/png/">PNG</a>）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/php.jpg" alt="CHEAT_SHEETS" width="621" height="327" /></h4>
<h4><a href="http://www.visibone.com/php/" target="_blank">visibone</a></h4>
<p>该站包含2页基本PHP速查手册，以及8页高级速查手册。非免费。</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/phpskinnysheetback.jpg" alt="CHEAT_SHEETS" width="621" height="369" /></h4>
<h4><a href="http://www.stevengould.org/portfolio/independent/php-refcard/PHPRefCard.pdf" target="_blank">Php 4 Reference Card</a> PHP4 参考速查手册。<a href="http://www.stevengould.org/portfolio/independent/php-refcard/PHPRefCard.pdf">下载</a>（PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/php4.jpg" alt="CHEAT_SHEETS" width="621" height="339" /></h4>
<h4 style="margin: 0px; padding: 0px;"><a href="http://www.blueshoes.org/en/developer/php_cheat_sheet/" target="_blank">PHP Cheat Sheet</a></h4>
<p>PHP 比较操作速查手册。<a href="http://www.blueshoes.org/en/developer/php_cheat_sheet/">下载</a></p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/php_cheat_sheet.jpg" alt="CHEAT_SHEETS" width="620" height="343" /></h4>
<h4><a href="http://www.digilife.be/quickreferences/QRC/Core%20CSharp%20and%20.NET%20Quick%20Reference.pdf" target="_blank">Core C# and .NET Quick Reference</a> C# 与 <a href="http://www.iwanna.cn/tags/net/" class="st_tag internal_tag" rel="tag" title="标签 .Net 下的日志">.NET</a> 速查参考手册。<a href="http://www.digilife.be/quickreferences/QRC/Core%20CSharp%20and%20.NET%20Quick%20Reference.pdf">下载</a>（PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/csharp.jpg" alt="CHEAT_SHEETS" width="620" height="342" /></h4>
<h4><a href="http://john-sheehan.com/blog/wp-content/uploads/aspnet-life-cycles-events.pdf" target="_blank">ASP.net</a> ASP.NET 速查参考手册。<a href="http://john-sheehan.com/blog/wp-content/uploads/aspnet-life-cycles-events.pdf">下载</a></h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/aspnet.jpg" alt="CHEAT_SHEETS" width="621" height="353" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/asp-vbscript-cheat-sheet/" target="_blank">MS ASP</a> 古老的 ASP 与 VB Script 速查手册。下载（<a href="http://www.addedbytes.com/download/asp-cheat-sheet-v1/png/">PNG</a> | <a href="http://www.addedbytes.com/download/asp-cheat-sheet-v1/pdf/">PDF</a>）</h4>
<p><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/asp.jpg" alt="CHEAT_SHEETS" width="621" height="368" /></p>
<h4><a href="http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf" target="_blank">msnet formatting strings</a> 微软 .NET 字符串格式化速查。<a href="http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf">下载</a>（PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/dotnet.jpg" alt="CHEAT_SHEETS" width="621" height="354" /></h4>
<h4><a href="http://www.sql.su/" target="_blank">SQL (Structured Query Language) in one page</a> <a href="http://www.iwanna.cn/tags/sql/" class="st_tag internal_tag" rel="tag" title="标签 Sql 下的日志">SQL</a> 语言速查。<a href="http://www.sql.su/">直接访问</a></h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/sql.jpg" alt="CHEAT_SHEETS" width="620" height="343" /></h4>
<h4><a href="http://www.addedbytes.com/cheat-sheets/mysql-cheat-sheet/" target="_blank">MySQL Cheat Sheet</a> <a href="http://www.iwanna.cn/tags/mysql/" class="st_tag internal_tag" rel="tag" title="标签 MySQL 下的日志">MySQL</a> 速查。下载（<a href="http://www.addedbytes.com/download/mysql-cheat-sheet-v1/png/">PNG</a> | <a href="http://www.addedbytes.com/download/mysql-cheat-sheet-v1/pdf/">PDF</a>）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/mysql.jpg" alt="CHEAT_SHEETS" width="621" height="290" /></h4>
<h4><a href="http://www.xml.su/" target="_blank">XML (eXtensible Markup Language) in one page</a> XML 单页速查手册。<a href="http://www.xml.su/">直接访问</a></h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/xml.jpg" alt="CHEAT_SHEETS" width="620" height="343" /></h4>
<h4><a href="http://www.mulberrytech.com/quickref/XMLquickref.pdf" target="_blank">XML Syntax Quick Reference</a> XML 语法参考。<a href="http://www.mulberrytech.com/quickref/XMLquickref.pdf">下载</a>（PDF）</h4>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/XMLquickref.jpg" alt="CHEAT_SHEETS" width="621" height="319" /></h4>
<h3 class="subtitle">SEO 速查手册</h3>
<h4><a href="http://www.seomoz.org/blog/the-web-developers-seo-cheat-sheet">The Web Developer’s SEO Cheat Sheet</a></h4>
<p>出自 SEO MOZ 的 SEO 速查手册，包括重要的 SEO HTML 标签，搜索引擎索引的限制，Title 标签语法建议等。<a href="http://www.seomoz.org/user_files/SEO_Web_Developer_Cheat_Sheet.pdf">下载</a>（PDF）</p>
<h4><img src="http://www.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/cheat-sheets/soemoz.jpg" alt="CHEAT_SHEETS" width="621" height="380" /></h4>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/30/1894/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/30/1894/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/30/1894/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/30/1894/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/30/1894/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/30/1894/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>常用的数据库统计SQL语句(2)</title>
		<link>http://www.iwanna.cn/archives/2009/04/08/240/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/08/240/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 04:03:39 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=240</guid>
		<description><![CDATA[1.解决被零除(零做除数时) &#8211;来自百度问吧 在统计系统中,需要求百分数, 如(sum(baseprice)-sum(quote))/sum(baseprice)*100)中, 如果sum(baseprice)为0,系统会报错,不能运行 把sum(baseprice) 改为 nullif(sum(isnull(baseprice,0)),0) 就可以了，除于0会出错，除于null就不会出错了 2.列出某年1-12月数据各产吕的销售数据 Select 产品ID AS 机型, SUM(CASE month(日期) WHEN 1 THEN 销售量 ELSE 0 END) AS [一月], SUM(CASE month(日期) WHEN 2 THEN 销售量 ELSE 0 END) AS [二月], SUM(CASE month(日期) WHEN 3 THEN 销售量 ELSE 0 END) AS [三月], SUM(CASE month(日期) WHEN 4 THEN 销售量 ELSE 0 [...]]]></description>
			<content:encoded><![CDATA[<p>1.解决被零除(零做除数时)</p>
<p>&#8211;来自百度问吧</p>
<p>在统计系统中,需要求百分数,<br />
如(sum(baseprice)-sum(quote))/sum(baseprice)*100)中,<br />
如果sum(baseprice)为0,系统会报错,不能运行<br />
<span id="more-240"></span><br />
把sum(baseprice) 改为<br />
nullif(sum(isnull(baseprice,0)),0)<br />
就可以了，除于0会出错，除于null就不会出错了</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/4200933116339.gif" border="0" alt="" /></p>
<p>2.列出某年1-12月数据各产吕的销售数据</p>
<p>Select 产品ID AS 机型, SUM(CASE month(日期) WHEN 1 THEN 销售量 ELSE 0 END)<br />
AS [一月], SUM(CASE month(日期) WHEN 2 THEN 销售量 ELSE 0 END) AS [二月],<br />
SUM(CASE month(日期) WHEN 3 THEN 销售量 ELSE 0 END) AS [三月],<br />
SUM(CASE month(日期) WHEN 4 THEN 销售量 ELSE 0 END) AS [四月],<br />
SUM(CASE month(日期) WHEN 5 THEN 销售量 ELSE 0 END) AS [五月],<br />
SUM(CASE month(日期) WHEN 6 THEN 销售量 ELSE 0 END) AS [六月],<br />
SUM(CASE month(日期) WHEN 7 THEN 销售量 ELSE 0 END) AS [七月],<br />
SUM(CASE month(日期) WHEN 8 THEN 销售量 ELSE 0 END) AS [八月],<br />
SUM(CASE month(日期) WHEN 9 THEN 销售量 ELSE 0 END) AS [九月],<br />
SUM(CASE month(日期) WHEN 10 THEN 销售量 ELSE 0 END) AS [十月],<br />
SUM(CASE month(日期) WHEN 11 THEN 销售量 ELSE 0 END) AS [十一月],<br />
SUM(CASE month(日期) WHEN 12 THEN 销售量 ELSE 0 END) AS [十二月]<br />
FROM DezaiCN_Sale<br />
Where datepart(year, 日期) = 2008<br />
GROUP BY 产品ID</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/m200933116141.gif" border="0" alt="" /></p>
<p>3.数据同比 环比分析<br />
(参考邹捷的SQL）</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">
<p>Create procedure DezaiCn_SaleAnalysisCompareByDate<br />
@compareMonth int<br />
as</p>
<p>&#8211;统计处理<br />
declare   @o_dt1   datetime,@o_dt2   datetime,<br />
@n_dt1   datetime,@beginStasticDate   datetime,@endStasticDate   datetime<br />
&#8211;计算各期的统计时间<br />
select<br />
@beginStasticDate=cast(@compareMonth*100+1   as   char(8)),     &#8211;本期统计的开始日期<br />
@endStasticDate=dateadd(month,1,@beginStasticDate),                 &#8211;本期统计的结束日期<br />
@n_dt1=dateadd(month,-1,@beginStasticDate),               &#8211;上期统计的开始日期<br />
@o_dt1=dateadd(year,-1,@beginStasticDate),                 &#8211;去年同期统计的开始日期<br />
@o_dt2=dateadd(month,1,@o_dt1)                   &#8211;去年同期统计的结束日期</p>
<p>select<br />
店铺名=isnull(a.店铺名,b.店铺名),</p>
<p>本期开始=CONVERT(varchar(12) , @beginStasticDate, 102 ),</p>
<p>本期结束=CONVERT(varchar(12) , @endStasticDate, 102 ),</p>
<p>上期结束=CONVERT(varchar(12) , @n_dt1, 102 ),</p>
<p>本期=isnull(b.销售量2,0),</p>
<p>上期=isnull(b.销售量1,0),<br />
上期差异=isnull(b.销售量2,0)-isnull(b.销售量1,0)  ,<br />
去年开始=CONVERT(varchar(12) , @o_dt1, 102 ),</p>
<p>去年结束=CONVERT(varchar(12) , @o_dt2, 102 ),</p>
<p>去年同期=isnull(a.销售量,0),</p>
<p>去年同期差异=isnull(b.销售量2,0)-isnull(a.销售量,0)</p>
<p>from(<br />
&#8211;去年同期的统计<br />
select   店铺名,销售量=sum(销售量)<br />
from   DezaiCn_Sale<br />
where   日期   between   @o_dt1   and   @o_dt2<br />
group   by   店铺名<br />
)a   full   join(<br />
&#8211;今年及上期统计<br />
select   店铺名,<br />
销售量1=sum(case   when   日期&lt;@beginStasticDate   then    销售量   end),<br />
销售量2=sum(case   when   日期&gt;@beginStasticDate   then   销售量   end)<br />
from   DezaiCn_Sale<br />
where   日期   between   @n_dt1   and   @endStasticDate<br />
group   by   店铺名,店铺名<br />
)b   on   a.店铺名=b.店铺名</p>
<p>GO</p></div>
</div>
<p>执行</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">DECLARE @RC int<br />
DECLARE @compareMonth int<br />
Select @compareMonth = 200903<br />
EXEC @RC = [TEST].[dbo].[DezaiCn_SaleAnalysisCompareByDate] @compareMonth<br />
DECLARE @PrnLine nvarchar(4000)<br />
PRINT &#8216;存储过程: TEST.dbo.DezaiCn_SaleAnalysisCompareByDate&#8217;<br />
Select @PrnLine = &#8216;    返回代码 = &#8216; + CONVERT(nvarchar, @RC)<br />
PRINT @PrnLine</div>
</div>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/x2009331161251.gif" border="0" alt="" /></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/08/240/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/08/240/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/08/240/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/08/240/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/08/240/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/08/240/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>常用的一些数据统计SQL语句</title>
		<link>http://www.iwanna.cn/archives/2009/04/08/236/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/08/236/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 02:18:35 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=236</guid>
		<description><![CDATA[只有在作统计分析的时候，你才能感觉到数据库的强大，才能感觉到数字游戏的趣味性所在。当然，对于企业而言，则是用于进行决策分析的最好支持之一. 最近刚完工的一个项目中对SQL的运用，让我又对SQL的理解与使用加深了一层。很高兴与大家分享其中的乐趣. 废话少说，我们先建一个原始表吧。 新建表： 程序代码 Create TABLE [dbo].[DezaiCn_Sale] ( [ID] int IDENTITY(1, 1) NOT NULL, [日期] datetime NOT NULL, [销售量] int NOT NULL, [店铺名] char(10) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT [PK_Test_Sale] PRIMARY KEY CLUSTERED ([ID]) ) ON [PRIMARY] GO 如图： 生成测试数据： 程序代码 /* Data for the `dbo.DezaiCn_Sale` table  (Records 1 &#8211; 18) */ Insert INTO [dbo].[DezaiCn_Sale] [...]]]></description>
			<content:encoded><![CDATA[<p>只有在作统计分析的时候，你才能感觉到数据库的强大，才能感觉到数字游戏的趣味性所在。当然，对于企业而言，则是用于进行决策分析的最好支持之一. 最近刚完工的一个项目中对SQL的运用，让我又对SQL的理解与使用加深了一层。很高兴与大家分享其中的乐趣.<br />
废话少说，我们先建一个原始表吧。<br />
<span id="more-236"></span><br />
新建表：</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">
<p>Create TABLE [dbo].[DezaiCn_Sale] (<br />
[ID] int IDENTITY(1, 1) NOT NULL,<br />
[日期] datetime NOT NULL,<br />
[销售量] int NOT NULL,<br />
[店铺名] char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,<br />
CONSTRAINT [PK_Test_Sale] PRIMARY KEY CLUSTERED ([ID])<br />
)<br />
ON [PRIMARY]<br />
GO</p></div>
</div>
<p>如图：</p>
<p><img src="http://www.dezai.cn/blog/attachments/month_0903/42009317161229.gif" border="0" alt="" /></p>
<p>生成测试数据：</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">
<p>/* Data for the `dbo.DezaiCn_Sale` table  (Records 1 &#8211; 18) */</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080101&#8242;, 2500, N&#8217;A')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080101&#8242;, 2700, N&#8217;B')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080201&#8242;, 3600, N&#8217;C')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080201&#8242;, 5800, N&#8217;D')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080301&#8242;, 2500, N&#8217;A')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080301&#8242;, 2700, N&#8217;B')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080401&#8242;, 3600, N&#8217;C')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080401&#8242;, 5800, N&#8217;D')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080301&#8242;, 2500, N&#8217;A')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080101&#8242;, 2700, N&#8217;B')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080501&#8242;, 3600, N&#8217;C')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080701&#8242;, 4000, N&#8217;D')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20081201&#8242;, 2500, N&#8217;A')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080301&#8242;, 2700, N&#8217;B')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20081101&#8242;, 6500, N&#8217;C')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20081001&#8242;, 5800, N&#8217;D')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080601&#8242;, 3800, N&#8217;D')<br />
GO</p>
<p>Insert INTO [dbo].[DezaiCn_Sale] ([日期], [销售量], [店铺名])<br />
VALUES (&#8217;20080801&#8242;, 5400, N&#8217;B')<br />
GO</p></div>
</div>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/q2009317161251.gif" border="0" alt="" /></p>
<p>有了数据，游戏就开始了.呵呵.一个一个来吧，哈哈.</p>
<p>&lt;1&gt;查询所有数据</p>
<p>Select *<br />
FROM DezaiCn_Sale</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/k200931716132.gif" border="0" alt="" /></p>
<p>&lt;2&gt;查询指定销售商的数据</p>
<p>Select *<br />
FROM DezaiCn_Sale where 店铺名=&#8217;A&#8217;</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/n2009317161359.gif" border="0" alt="" /></p>
<p>&lt;3&gt;查询指定销售商某日的数据</p>
<p>Select *<br />
FROM DezaiCn_Sale<br />
Where (店铺名 = &#8216;A&#8217;) AND (日期 = &#8217;2008-12-1&#8242;)</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/x2009317161536.gif" border="0" alt="" /></p>
<p>&lt;4&gt;查询指定销售商某时间段的数据</p>
<p>Select *<br />
FROM DezaiCn_Sale<br />
Where (店铺名 = &#8216;A&#8217;) AND (日期 BETWEEN &#8217;2008-1-1&#8242; AND &#8217;2008-9-1&#8242;)</p>
<p>注意：前面的日期要小于后面的日期,这里也可以用&gt;= 与&lt;=来实现同样的结果</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/w2009317161740.gif" border="0" alt="" /></p>
<p>&lt;5&gt;查询所有销售商按月统计的销售量</p>
<p>Select 日期, 店铺名, 销售量<br />
FROM DezaiCn_Sale<br />
GROUP BY 日期, 店铺名, 销售量<br />
orDER BY 店铺名</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/72009317162138.gif" border="0" alt="" /></p>
<p>这里其实就是排列了一下数据.与&lt;1&gt;中的结果没有什么多大变化.</p>
<p>&lt;6&gt;查询各销售商的销售总量</p>
<p>Select 店铺名, SUM(销售量) AS 销售总量<br />
FROM DezaiCn_Sale<br />
GROUP BY 店铺名</p>
<p><img src="http://www.dezai.cn/blog/attachments/month_0903/72009317162954.gif" border="0" alt="" /></p>
<p>&lt;6&gt;查询指定销售商指定时间段的销售总量</p>
<p>Select 店铺名, SUM(销售量) AS 销售总量<br />
FROM DezaiCn_Sale<br />
Where (店铺名 = &#8216;A&#8217;) AND (日期 BETWEEN &#8217;2008-1-1&#8242; AND &#8217;2008-9-1&#8242;)<br />
GROUP BY 店铺名</p>
<p><img src="http://www.dezai.cn/blog/attachments/month_0903/g2009317163259.gif" border="0" alt="" /></p>
<p>&lt;7&gt;查询具体时间的总的销售总量</p>
<p>Select SUM(销售量) AS 销售总量, 日期<br />
FROM DezaiCn_Sale<br />
Where (日期 = &#8217;2008-3-1&#8242;)<br />
GROUP BY 日期</p>
<p><img src="http://www.dezai.cn/blog/attachments/month_0903/82009317163647.gif" border="0" alt="" /></p>
<p>上 面列了这么多，我觉得大家应该很清楚其中的变化了。无非就是Sum(),Count(),Max()函数及Between的利用 再加Group By 的使用，而以上这些都是很基础又很实用的。上面这些在统计中一般用于进行数据统计时用.如果再增加一个字段列为产品名称或产品分类，也是要利用Group By去实现统计数据功能。</p>
<p>下面这个表基于增加了产品ID字段进行数据统计分析功能,主要是横向的比较了.关键是行转列，列转行的操作，如果是用存储过程，那就是拼字符串了。</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/j2009317165316.gif" border="0" alt="" /></p>
<p>&lt;1&gt;指定店铺在某时间段的销售数据(横向)</p>
<p><span style="color: red;">我这里用存储数据来实现,这里要注意的是拼字符串时单双引号的使用，我在此吃了不少苦头。</span></p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">Create procedure  DezaiCnTestSale_SalerCompareSaleByDate  /*代理销售产品比较分析*/</p>
<p>@ProductIDArray varchar(1000), /*产品ID组*/</p>
<p>@begindate datetime, /*比较开始日期*/</p>
<p>@endDate datetime,/*比较结束日期*/</p>
<p>@Shop varchar(20) /*店铺名*/</p>
<p>as</p>
<p>declare @<a href="http://www.iwanna.cn/tags/sql/" class="st_tag internal_tag" rel="tag" title="标签 Sql 下的日志">sql</a> varchar(8000)</p>
<p>set @sql = &#8216;select 产品ID &#8216;</p>
<p>select @sql = @sql + &#8216; , max(case Convert(Varchar(10),日期,120) when &#8221;&#8217; + Convert(Varchar(10),日期,120) + &#8221;&#8217; then 销售量 else 0 end) [' + Convert(Varchar(10),日期,120) + ']&#8216;</p>
<p>from (select distinct 日期 from DezaiCn_Sale where 日期 between @begindate  and @endDate  ) as a</p>
<p>set @sql = @sql + &#8216; from DezaiCn_Sale where   产品ID in (&#8216;+@ProductIDArray+&#8217;) and 店铺名=&#8221;&#8217;+@Shop+&#8221;&#8217;  group by 产品ID&#8217;</p>
<p>exec(@sql)<br />
GO</p></div>
</div>
<p>运行效果：</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">
<p>DECLARE @RC int<br />
DECLARE @ProductIDArray varchar(1000)<br />
DECLARE @begindate datetime<br />
DECLARE @endDate datetime<br />
DECLARE @Shop varchar(20)<br />
Select @ProductIDArray = &#8217;1,3,4&#8242;<br />
Select @begindate = &#8217;2008-1-1&#8242;<br />
Select @endDate = &#8217;2008-9-1&#8242;<br />
Select @Shop = &#8216;A&#8217;<br />
EXEC @RC = [TEST].[dbo].[DezaiCnTestSale_SalerCompareSaleByDate] @ProductIDArray, @begindate, @endDate, @Shop<br />
DECLARE @PrnLine nvarchar(4000)<br />
PRINT &#8216;存储过程: TEST.dbo.DezaiCnTestSale_SalerCompareSaleByDate&#8217;<br />
Select @PrnLine = &#8216;    返回代码 = &#8216; + CONVERT(nvarchar, @RC)<br />
PRINT @PrnLine</p></div>
</div>
<p>效果：</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/z2009317171243.gif" border="0" alt="" /></p>
<p>&lt;2&gt;指定产品在某时间段的所选销售商的销售量数据比较</p>
<p><span style="color: red;">在这里我加了一个店铺名ID的字段，因为用数字进行拼字符串比用字符拼要顺畅得多。(个人之见)</span></p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">/*<br />
作者: Dezai<br />
日期: 2008-12-01<br />
作用:对具体某产品根据所选择的代理商进行销售比较分析<br />
*/</p>
<p>Create procedure DezaiCnTestSale_SalerCompareSaleByDateAndDetailProduct</p>
<p>@ShopArray varchar(1000), /*店铺ID数组*/</p>
<p>@begindate datetime, /*开始时间*/</p>
<p>@endDate datetime,/*结束时间*/</p>
<p>@产品ID varchar(10) /*具体产品ID*/</p>
<p>as</p>
<p>declare @sql varchar(8000)</p>
<p>set @sql = &#8216;select 店铺ID &#8216;</p>
<p>select @sql = @sql + &#8216; , max(case Convert(Varchar(10),日期,120) when &#8221;&#8217; + Convert(Varchar(10),日期,120) + &#8221;&#8217; then 销售量 else 0 end) [' + Convert(Varchar(10),日期,120) + ']&#8216;</p>
<p>from (select distinct 日期 from DezaiCn_Sale where 日期 between @begindate  and @endDate  ) as a</p>
<p>set @sql = @sql + &#8216; from DezaiCn_Sale where 产品ID=&#8217;+@产品ID+&#8217; and  店铺ID in (&#8216;+@ShopArray+&#8217;) group by 店铺ID&#8217;</p>
<p>exec(@sql)<br />
GO</p></div>
</div>
<p>效果:</p>
<div class="UBBPanel codePanel">
<div class="UBBTitle"><img style="margin: 0px 2px -3px 0px;" src="http://www.dezai.cn/blog/images/code.gif" alt="程序代码" /> 程序代码</div>
<div class="UBBContent">DECLARE @RC int<br />
DECLARE @ShopArray varchar(1000)<br />
DECLARE @begindate datetime<br />
DECLARE @endDate datetime<br />
DECLARE @product_ID varchar(10)<br />
Select @ShopArray = &#8217;1,3&#8242;<br />
Select @begindate = &#8217;2008-1-1&#8242;<br />
Select @endDate = &#8217;2008-12-1&#8242;<br />
Select @product_ID = &#8217;3&#8242;<br />
EXEC @RC = [TEST].[dbo].[DezaiCnTestSale_SalerCompareSaleByDateAndDetailProduct] @ShopArray, @begindate, @endDate, @product_ID<br />
DECLARE @PrnLine nvarchar(4000)<br />
PRINT &#8216;存储过程: TEST.dbo.DezaiCnTestSale_SalerCompareSaleByDateAndDetailProduct&#8217;<br />
Select @PrnLine = &#8216;    返回代码 = &#8216; + CONVERT(nvarchar, @RC)<br />
PRINT @PrnLine</div>
</div>
<p>结果：</p>
<p><img style="cursor: pointer;" title="在新窗口打开图片" src="http://www.dezai.cn/blog/attachments/month_0903/x2009317175258.gif" border="0" alt="" /></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/08/236/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/08/236/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/08/236/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/08/236/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/08/236/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/08/236/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 搜索中的大小写敏感性</title>
		<link>http://www.iwanna.cn/archives/2009/03/30/11/</link>
		<comments>http://www.iwanna.cn/archives/2009/03/30/11/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:10:48 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=11</guid>
		<description><![CDATA[在默认的情况下，MySQL搜索不区分大小写（但某些字符集始终区分大小写，如 czech）。这意味着，如果你使用col_name LIKE &#8216;a%&#8217;进行搜索，你将获得以A或a开始的所有列。如果打算使搜索区分大小写，请确保操作数之一具有区分大小写的或二进制校对。例如，如果你正在比较均适用latin1字符集的列和字符串，可使用COLLATE操作符，使1个操作数具有latin1_general_cs或latin1_bin校对特性。例如： col_name COLLATE latin1_general_cs LIKE 'a%' col_name LIKE 'a%' COLLATE latin1_general_cs col_name COLLATE latin1_bin LIKE 'a%' col_name LIKE 'a%' COLLATE latin1_bin 如果希望总是以区分大小写的方式处理列，可使用区分大小写的或二进制校对声明它。 简单的比较操作（&#62;=, &#62;, =, &#60;, &#60;=, 排序和分组）基于每个字符的“排序值”。具有相同排序值的字符（如‘E’, ‘e’,和‘Ã©’）将被当作相同的写字符。 © 我想网 Akon 所有 , 2009. &#124; 永久链接 &#124; 没有评论 &#124; 提交到 Google Reader 鲜果 抓虾 Feed enhanced by Better Feed from Ozh]]></description>
			<content:encoded><![CDATA[<p>在默认的情况下，MySQL搜索不区分大小写（但某些字符集始终区分大小写，如 czech）。这意味着，如果你使用col_name LIKE &#8216;a%&#8217;进行搜索，你将获得以A或a开始的所有列。如果打算使搜索区分大小写，请确保操作数之一具有区分大小写的或二进制校对。例如，如果你正在比较均适用latin1字符集的列和字符串，可使用COLLATE操作符，使1个操作数具有latin1_general_cs或latin1_bin校对特性。例如：</p>
<p><span id="more-11"></span></p>
<table border="1" cellspacing="0" cellpadding="2" width="400" align="center">
<tbody>
<tr>
<td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6">
<pre>col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin</pre>
</td>
</tr>
</tbody>
</table>
<p>如果希望总是以区分大小写的<span><a id="hl_0" class="qs_highlight1" style="font-size: 1em;" onmouseover="window.clearTimeout(_ht[0]);qs_show_frame(event,this,0);" onmouseout="_on_div[0]=false;_ht[0]=window.setTimeout('qs_is_on_div(0)',1000);" href="javascript:void(0)">方式</a></span>处理列，可使用区分大小写的或二进制校对声明它。</p>
</p>
<p>简单的比较操作（&gt;=, &gt;, =, &lt;, &lt;=, 排序和分组）基于每个字符的“排序值”。具有相同排序值的字符（如‘E’, ‘e’,和‘Ã©’）将被当作相同的写字符。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/03/30/11/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/03/30/11/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/03/30/11/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/03/30/11/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/03/30/11/">抓虾</a>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-2057344547305288";
/* 336x280,iwanna feed,created 10/3/10 */
google_ad_slot = "9738886183";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<hr />
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/03/30/11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

