﻿<?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; MySQL</title>
	<atom:link href="http://www.4wei.cn/archives/category/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.4wei.cn</link>
	<description>PHP+Redis+ThinkPHP+LocoySpider+Discuz!+DEDE+PHPCMS</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:20:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Navicat 9.1、10.0 简体中文最新版，注册码(For Mysql)</title>
		<link>http://www.4wei.cn/archives/1001382</link>
		<comments>http://www.4wei.cn/archives/1001382#comments</comments>
		<pubDate>Sun, 17 Jul 2011 05:23:17 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1001382</guid>
		<description><![CDATA[Navicat属于偶的必备开发工具，最新版的自动提示，SQL格式化比较好用。 今天测试过Navicat 9.1.11，注册码可以使用。 下载地址： 中文版 Navicat mysql 9.x http://download2.navicat.com/download/navicat091_mysql_cs.exe http://download2.navicat.com/download/navicat091_mysql_cs.tar.gz NAVL-KSG4-K8D8-8TV6 Navicat mysql 10.0.x http://download2.navicat.com/download/navicat100_mysql_cs.exe NAVK-BPRI-EY6D-AXLK 中文版 Navicat premium 10.0.x http://download2.navicat.com/download/navicat100_premium_cs.exe NAVE-Q53X-JVQV-GHZ2 英文版 Navicat premium 10.0.x http://download2.navicat.com/download/navicat100_premium_en.exe NAVI-TKBI-77LR-PJ2Z]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1001382/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>数据库建立索引的原则</title>
		<link>http://www.4wei.cn/archives/1001256</link>
		<comments>http://www.4wei.cn/archives/1001256#comments</comments>
		<pubDate>Fri, 15 Apr 2011 12:00:33 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1001256</guid>
		<description><![CDATA[虽然索引会有DBA进行优化和建议，但常见的原则，PHP程序员还是要了解于心的。 这几天的面试中，几乎每家公司都详细问到索引运用的场景，当时回答比较感性，不够具体，以下几个重要原则。上班路上记得看一下。 铁律一：天下没有免费的午餐，使用索引是需要付出代价的。 索引的优点有目共睹，但是，却很少有人关心过采用索引所需要付出的成本。若数据库管理员能够对索引所需要付出的代价有一个充分的认识，也就不会那么随意到处建立索引了。 仔细数数，其实建立索引的代价还是蛮大的。如创建索引和维护索引都需要花费时间与精力。特别是在数据库设计的时候，数据库管理员为表中的哪些字段需要建立索引，要调研、要协调。如当建有索引的表中的纪录又增加、删除、修改操作时，数据库要对索引进行重新调整。虽然这个工作数据库自动会完成，但是，需要消耗服务器的资源。当表中的数据越多，这个消耗的资源也就越多。如索引是数据库中实际存在的对象，所以，每个索引都会占用一定的物理空间。若索引多了，不但会占用大量的物理空间，而且，也会影响到整个数据库的运行性能。 可见，数据库管理员若要采用索引来提高系统的性能，自身仍然需要付出不少的代价。数据库管理员现在要考虑的就是如何在这两个之间取得一个均衡。或者说，找到一个回报与投入的临界点。 铁律二：对于查询中很少涉及的列或者重复值比较多的列，不要建立索引。 在查询的时候，如果我们不按某个字段去查询，则在这个字段上建立索引也是浪费。如现在有一张员工信息表，我们可能按员工编号、员工姓名、或者出身地去查询员工信息。但是，我们往往不会按照身份证号码去查询。虽然这个身份证号码是唯一的。此时，即使在这个字段上建立索引，也不能够提高查询的速度。相反，增加了系统维护时间和占用了系统空间。这简直就是搬起石头砸自己的脚呀。 另外，如上面的员工信息表，有些字段重复值比较多。如性别字段主要就是“男”、“女”;职位字段中也是有限的几个内容。此时，在这些字段上添加索引也不会显著的增加查询速度，减少用户响应时间。相反，因为需要占用空间，反而会降低数据库的整体性能。 数据库索引管理中的第二条铁律就是，对于查询中很少涉及的列或者重复值比较多的列，不要建立索引。 铁律三：对于按范围查询的列，最好建立索引。 在信息化管理系统中，很多时候需要按范围来查询某些交易记录。如在ERP系统中，经常需要查询当月的销售订单与销售出货情况，这就需要按日期范围来查询交易记录。如有时候发现库存不对时，也需要某段时期的库存进出情况，如5月1日到12月3日的库存交易情况等等。此时，也是根据日期来进行查询。 对于这些需要在指定范围内快速或者频繁查询的数据列，需要为其建立索引。因为索引已经排序，其保存的时候指定的范围是连续的，查询可以利用索引的排序，加快查询时间，减少用户等待时间。 不过，若虽然可能需要按范围来进行查询，但是，若这个范围查询条件利用的不多的情况下，最好不好采用索引。如在员工信息表中，可能需要查询2008年3月份以前入职的员工明细，要为他们增加福利。但是，由于表中记录不多，而且，也很少进行类似的查询。若维这个字段建立索引，虽然无伤大雅，但是很明显，索引所获得的收益要低于其成本支出。对数据库管理员来说，是得不偿失的。 再者，若采用范围查询的话，最好能利用TOP关键字来限制一次查询的结果。如第一次按顺序只显示前面的500条记录等等。把TOP关键字跟范围一起使用，可以大大的提高查询的效率。 铁律四：表中若有主键或者外键，一定要为其建立索引。 定义有主键的索引列，一定要为其建立索引。因为主键可以加速定位到表中的某一行。结合索引的作用，可以使得查询的速度加倍。如在员工信息表中，我们往往把员工编号设置为主键。因为这不但可以提高查询的速度，而且因为主键要求记录的唯一，还可以保证员工编号的唯一性。此时，若再把这个员工编号字段设置为索引，则通过员工编号来查询员工信息，其效率要比没有建立索引高出许多。 另外，若要使得某个字段的值唯一，可以通过两种索引方式实现。一种就是上面所讲的主键索引。还有一种就是唯一索引，利用UNIQUE关键字指定字段内容的唯一性。这两种方式都会在表中的指定列上自动创建唯一索引。这两种方式的结果没有明显的区别。查询优化器不会区分到底是哪种方式建立的唯一性索引，而且他们进行数据查询的方式也是相同的。 若某张表中的数据列定义有外键，则最好也要为这个字段建立索引。因为外键的主要作用就在于表与表之间的连接查询。若在外键上建立索引，可以加速表与表之间的连接查询。如在员工基本信息表中，有一个字段为员工职位。由于员工职位经常在变化，在这里，存储的其实只是一个员工职位的代码。在另外一张职位信息表中详细记录着该职位的相关信息。此时，这个员工职位字段就是外键。若在这个字段上建立外键，则可以显著提高两张表的连接速度。而且，记录越多，其效果越加明显。 所以，当表中有外键或者主键的时候，就最好为其建立索引。通过索引，可以强化主键与外键的作用，提高数据库的性能。 铁律五：对于一些特殊的数据类型，不要建立索引。 在表中，有些字段比较特殊。如文本字段(TXT)、图像类型字段(IMAGE)等等。如果表中的字段属于这些数据类型，则最好不要为其建立索引。因为这些字段有一些共同的特点。如长度不确定，要么很长，几个字符;要么就是空字符串。如文本数据类型常在应用系统的数据库表中用来做备注的数据类型。有时候备注很长，但有时候又没有数据。若这种类型的字段上建立索引，那根本起不了作用。相反，还增加了系统的负担。 所以，在一些比较特殊的数据类型上，建立索引要谨慎。在通常情况下，没有必要为其建立索引。但是，也有特殊的情况。如有时候，在ERP系统中，有产品信息这个表，其中有个产品规格这个字段。有时候，其长度可能长达5000个字符。此时，只有文本型的数据类型可以容纳这么大的数据量。而且，在查询的时候，用户又喜欢通过规格这个参数来查询产品信息。此时，若不为这个字段建立索引的话，则查询的速度会很慢。遇到这种情况时，数据库管理员只有牺牲一点系统资源，为其建立索引。 从这里也可以看出，虽然以上几条说的时铁律，但是，是否需要遵循，还是需要数据库管理员根据企业的实际情况，做出合理的选择。 铁律六：索引可以跟Where语句的集合融为一体。 用户在查询信息的时候，有时会经常会用到一些限制语句。如在查询销售订单的时候，经常会用到客户以及下单日期的条件集合;如在查询某个产品的库存交易情况时，就会利用产品编号与交易日期起止日期的条件集合。 对于这些经常用在Where子句中的数据列，将索引建立在Where子句的集合过程中，对于需要加速或者频繁检索的数据列，可以让这些经常参与查询的数据列按照索引的排序进行查询，以加快查询的时间。 总之，索引就好像一把双刃剑，即可以提高数据库的性能，也可能对数据库的性能起到反面作用。作为数据库管理员，要有这个能力判断在合适的时间、合适的业务、合适的字段上建立合适的索引。以上六个铁律，只是对建立索引的一些基本要求]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1001256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“InnoDB”和“MyISAM”的应用详解</title>
		<link>http://www.4wei.cn/archives/1001253</link>
		<comments>http://www.4wei.cn/archives/1001253#comments</comments>
		<pubDate>Fri, 15 Apr 2011 05:36:44 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1001253</guid>
		<description><![CDATA[　　InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型，这两个表类型各有优劣，视具体应用而定。基本的差别为：MyISAM类型不支持事务处理等高级处理，而InnoDB类型支持。MyISAM类型的表强调的是性能，其执行数度比InnoDB类型更快，但是不提供事务支持，而InnoDB提供事务支持已经外部键等高级数据库功能。 　　MyIASM是IASM表的新版本，有如下扩展： 　　·二进制层次的可移植性。 　　·NULL列索引。 　　·对变长行比ISAM表有更少的碎片。 　　·支持大文件。 　　·更好的索引压缩。 　　·更好的键吗统计分布。 　　·更好和更快的auto_increment处理。 　　以下是一些细节和具体实现的差别： 　　◆1.InnoDB不支持FULLTEXT类型的索引。 　　◆2.InnoDB 中不保存表的具体行数，也就是说，执行select count(*) from table时，InnoDB要扫描一遍整个表来计算有多少行，但是MyISAM只要简单的读出保存好的行数即可。注意的是，当count(*)语句包含 where条件时，两种表的操作是一样的。 　　◆3.对于AUTO_INCREMENT类型的字段，InnoDB中必须包含只有该字段的索引，但是在MyISAM表中，可以和其他字段一起建立联合索引。 　　◆4.DELETE FROM table时，InnoDB不会重新建立表，而是一行一行的删除。 　　◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的，解决方法是首先把InnoDB表改成MyISAM表，导入数据后再改成InnoDB表，但是对于使用的额外的InnoDB特性（例如外键）的表不适用。 　　另外，InnoDB表的行锁也不是绝对的，假如在执行一个SQL语句时MySQL不能确定要扫描的范围，InnoDB表同样会锁全表，例如update table set num=1 where name like “%aaa%” 　　综上所述，任何一种表都不是万能的，只有恰当的针对业务类型来选择合适的表类型，才能最大的发挥MySQL的性能优势。]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1001253/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql插入语句的5种写法。</title>
		<link>http://www.4wei.cn/archives/1000948</link>
		<comments>http://www.4wei.cn/archives/1000948#comments</comments>
		<pubDate>Tue, 05 Oct 2010 01:09:28 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQl]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000948</guid>
		<description><![CDATA[insert into tablename (id,name) value ('', 'xxx'); insert into tablename (id,name) values ('', 'xxxxx'); insert into tablename (id, name) value ('','xxx'),('','xxxxxxx'); insert into tablename (id, name) values ('','xxx'),('','xxxxxxx'); insert into tablename set id='id', name='xxxxx'; 一般推荐第四种写法，这是SQL标准，在Oracle等其它数据库类型中通用性好，其它几种在Mysql App开发时，有特定的方便之处。]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000948/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KB967723的补丁造成mysql频繁出现无法连接的解决办法</title>
		<link>http://www.4wei.cn/archives/1000939</link>
		<comments>http://www.4wei.cn/archives/1000939#comments</comments>
		<pubDate>Wed, 15 Sep 2010 00:59:54 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000939</guid>
		<description><![CDATA[由于Windows2003打了KB967723升级包，造成mysql数据库频繁出现无法连接数据库问题。 网上的解决办法都说是卸载此补丁就能解决问题，哥按照指示也卸载了KB967723，但问题依然。 卸载补丁以后，打开cmd-&#62;systeminfo，还是能看到已安装KB967723的补丁，但在控制面板中却打不到这个补丁的信息。 于是，接着使用修改注册表的办法。目前网上的解决方法普遍有误，搞了好几次才 微软提供的最新解决方案：此部分方法或任务包含告诉您如何修改注册表的步骤。 但是，如果错误地修改注册表，就可能发生严重的问题。 因此，请确保认真执行这些步骤。 添加的保护注册表之前先备份您修改它。 然后，发生问题时可以还原注册表。 有关如何备份和还原在注册表的详细信息，单击下面的文章编号，以查看 Microsoft 知识库中相应：322756 (http://support.microsoft.com/kb/322756/ ) 如何备份和还原在 Windows 注册表 默认最大的临时 TCP端口的数是 5000 适用于一节中包含的产品中。 在这些产品中添加一个新参数。 要提高临时端口的上限，请按照下列步骤操作： 启动注册表编辑器。（开始—运行—REGEDIT） 在的注册表中找到以下子项，然后单击 参数 ：HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 在右边单击 新建 然后添加下面的注册表项：数值名称： MaxUserPort 值类型: DWORD 值数据： 65534 (注意是十进制) 有效范围： 5000-65534 (十进制) 默认值： 0×1388 (5000 十进制) 说明： 此参数将控制程序从系统请求任何可用的用户端口时使用的最大端口数。 通常，1024 的值和包含的 5000 之间分配临时的 （短) 端口。 退出注册表编辑器，并重新重启计算机 我给各位截了个小图，如下： 重启服务器后，运行5个小时的Mysql查询，未出现错误，问题解决。]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000939/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL server has gone away的解决办法</title>
		<link>http://www.4wei.cn/archives/1000871</link>
		<comments>http://www.4wei.cn/archives/1000871#comments</comments>
		<pubDate>Sun, 27 Jun 2010 03:31:20 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000871</guid>
		<description><![CDATA[最近做网站有一个站要用到WEB网页采集器功能，当一个PHP脚本在请求URL的时候，可能这个被请求的网页非常慢慢，超过了mysql的 wait-timeout时间，然后当网页内容被抓回来后，准备插入到MySQL的时候，发现MySQL的连接超时关闭了，于是就出现了“MySQL server has gone away”这样的错误提示，解决这个问题，我的经验有以下两点，或许对大家有用处： 第一种方法： 当然是增加你的 wait-timeout值，这个参数是在my.cnf(在Windows下台下面是my.ini）中设置，我的数据库负荷稍微大一点，所以，我设置的值 为10，（这个值的单位是秒，意思是当一个数据库连接在10秒钟内没有任何操作的话，就会强行关闭，我使用的不是永久链接 （mysql_pconnect),用的是mysql_connect,关于这个wait-timeout的效果你可以在MySQL的进程列表中看到 （show processlist) ），你可以把这个wait-timeout设置成更大，比如300秒，呵呵，一般来讲300秒足够用了，其实你也可以不用设置，MySQL默认是8个小 时。情况由你的服务器和站点来定。 第二种方法： 这也是我个人认为最好的方法，即检查 MySQL的链接状态，使其重新链接。 可能大家都知道有mysql_ping这么一个函数，在很多资料中都说这个mysql_ping的 API会检查数据库是否链接，如果是断开的话会尝试重新连接，但在我的测试过程中发现事实并不是这样子的，是有条件的，必须要通过 mysql_options这个C API传递相关参数，让MYSQL有断开自动链接的选项（MySQL默认为不自动连接），但我测试中发现PHP的MySQL的API中并不带这个函数，你重新编辑MySQL吧，呵呵。但mysql_ping这个函数还是终于能用得上的，只是要在其中有一个小小的操作技巧： 这是我的的数据库操 作类中间的一个函数 我需要调用这个函数的代码可能是这样子的 尘缘注：这里单独把ping()这个方法单独拿出来写一行，只是为了方便理解，在正式开发中，可以把此方法放到查删改的操作之前。 ping()这个方法先检测数据连接是否正常，如果被关闭，整个把当前脚本的MYSQL实例关闭，再重新连接。 经 过这样处理后，可以非常有效的解决MySQL server has gone away这样的问题，而且不会对系统造成额外的开销。 原文：http://www.sablog.net/blog/archives/512/]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000871/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>DEDEcms使用SQL获得当天已审核的文章总数</title>
		<link>http://www.4wei.cn/archives/1000454</link>
		<comments>http://www.4wei.cn/archives/1000454#comments</comments>
		<pubDate>Fri, 05 Mar 2010 02:31:43 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[DEDE]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000454</guid>
		<description><![CDATA[24小时发布的新文章: 86400 是 3600 * 24，就是24小时发布的新文章。 任意日期发布的最新文章： 任意日期审核通过的最新文章 获取当日的零时时间： 获取当时零时时间戳： 当天发布的最新文章： 这里使用　to_days(curdate())=to_days(from_unixtime(pubdate))，使用起来比较方便，资源占用也少，在只查询当天的文档时，推荐使用。]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000454/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>修复升级Mysql时的1577错误，附升级文件包</title>
		<link>http://www.4wei.cn/archives/1000344</link>
		<comments>http://www.4wei.cn/archives/1000344#comments</comments>
		<pubDate>Sat, 26 Dec 2009 03:58:03 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000344</guid>
		<description><![CDATA[环境：Windows，Mysql5.x 理论上Linux下也一样。 错误提示"Please try to update your system table and to see if it solves your problem. mysql_upgrade is stored in the "bin" folder under the MySQL server installation path."; 错误分析：可能是直接复制不同版本之间的MYSQL数据库目录。比如我，备份了低版本的MYSQL数据库DATA到新版的目录下。 错误影响：数据库可以正常使用，但会造成一定的管理错误，如可视化mysql数据库管理工具Navicat for mysql的错误提示。 我是离不开Navicat的，虽不影响使用，但也得解决这个问题。 这个问题已经遇到几次了，不得不写下大篇文档纪念之。 方法很简单，使用mysql/bin目录下的mysql_upgrade.exe进行升级就可以了。 使用方法： 开始-&#62;运行-&#62;输入cmd回车，在操作提示符下输入 然后回车(将其中的E:\APMserv5.2.6改成你自己实际安装的目录，PWD改成你的密码即可)，执行完以后就OK了。 当然，有一些版本的APMServ有精简，可能没有mysql_upgrade.exe和mysqlcheck.exe这两个文件，解决办法也很简单，直接下载一个对应版本的MYSQL免安装版本，将这两个文件复制过去就行了。 FML... 换了服务器以后，终于还是又遇上了这个问题，自己又下载了Mysql进行修复，麻烦呐。 遂将需要到的文件mysql_upgrade.exe和mysqlcheck.exe打包于后，备用。 bin]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP+PDO+MSSQL的灾难。</title>
		<link>http://www.4wei.cn/archives/1000186</link>
		<comments>http://www.4wei.cn/archives/1000186#comments</comments>
		<pubDate>Thu, 17 Sep 2009 15:15:24 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=1000186</guid>
		<description><![CDATA[PHP6默认就使用PDO进行数据库之间的连接方法了，本来以后可以等PHP6出来再去适应，想不到前天接下的一个项目却让我提前过了一把瘾。 灾难呀。 首先是PDO报错的方法，改成编号了，连接数据库的“数据库密码错误”却变成“8000”的错误代码，一搜，N种错误可能。 再次，我怎么感觉PDO的效率不那么理想，一个IP的连接，一直连接到超时都不报错。 最后，怎么还是感觉自己写的类好用，适应起来还真是别扭。 最后，很痛苦的事情出在PDO+MSSQL的分页上，真是灾难中的灾难。 这次的项目需要将MSSQL中的数据转换到Mysql中，本来想用PDO练练手的，结果却死也找不到PDO+MSSQL的分页类。习惯了到网上找资源、找类库、找函数，一时间找不到前辈们的杰作，真让人惶恐不已。前无古人，这种感觉未必那么有成就感。 MSSQL的分页历来被人诟病，相比之下，我真想说“Mysql，我爱死你了”。 好想发一个表情，结果没有，懒得倒腾了。一一!]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/1000186/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MYSQL 数据库函数库备忘</title>
		<link>http://www.4wei.cn/archives/438</link>
		<comments>http://www.4wei.cn/archives/438#comments</comments>
		<pubDate>Tue, 03 Feb 2009 12:26:05 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=438</guid>
		<description><![CDATA[一、数学函数 ABS(x)                    返回x的绝对值 BIN(x)　　　　　　　　　　返回x的二进制（OCT返回八进制，HEX返回十六进制） CEILING(x)                返回大于x的最小整数值 EXP(x)　　　　　　　　　　返回值e（自然对数的底）的x次方 FLOOR(x)　　　　　　　　　返回小于x的最大整数值 GREATEST(x1,x2,...,xn)　　返回集合中最大的值 LEAST(x1,x2,...,xn)       返回集合中最小的值 LN(x)                     返回x的自然对数 LOG(x,y)　　　　　　　　　返回x的以y为底的对数 MOD(x,y)                  返回x/y的模（余数） PI()　　　　　　　　　　　返回pi的值（圆周率） RAND()　　　　　　　　　　返回０到１内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 ROUND(x,y)　　　　　　　　返回参数x的四舍五入的有y位小数的值 SIGN(x)　　　　　　　　　 返回代表数字x的符号的值 SQRT(x)　　　　　　　　　 返回一个数的平方根 TRUNCATE(x,y)             返回数字x截短为y位小数的结果 二、聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)　　　　　　　　　返回指定列的平均值 COUNT(col)　　　　　　　　返回指定列中非NULL值的个数 MIN(col)　　　　　　　　　返回指定列的最小值 MAX(col)　　　　　　　　　返回指定列的最大值 SUM(col)　　　　　　　　　返回指定列的所有值之和 GROUP_CONCAT(col)　　　　 返回由属于一组的列值连接组合而成的结果 三、字符串函数 ASCII(char)　　　　　　　　返回字符的ASCII码值 BIT_LENGTH(str)　　　　　　返回字符串的比特长度 CONCAT(s1,s2...,sn)　　　　将s1,s2...,sn连接成字符串 CONCAT_WS(sep,s1,s2...,sn)　　将s1,s2...,sn连接成字符串，并用sep字符间隔 INSERT(str,x,y,instr) 　　 将字符串str从第x位置开始，y个字符长的子串替换为字符串instr，返回结果 FIND_IN_SET(str,list)　　　分析逗号分隔的list列表，如果发现str，返回str在list中的位置 LCASE(str)或LOWER(str)　　 返回将字符串str中所有字符改变为小写后的结果 LEFT(str,x)　　　　　　　　返回字符串str中最左边的x个字符 LENGTH(s)　　　　　　　　　返回字符串str中的字符数 LTRIM(str)　　　　　　　　 从字符串str中切掉开头的空格 POSITION(substr,str)　　　 返回子串substr在字符串str中第一次出现的位置 QUOTE(str)　　　　　　　　 用反斜杠转义str中的单引号 REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果 REVERSE(str)　　　　　　　 [...]]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/438/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL正则表达式替换，字符替换方法</title>
		<link>http://www.4wei.cn/archives/176</link>
		<comments>http://www.4wei.cn/archives/176#comments</comments>
		<pubDate>Fri, 15 Aug 2008 16:18:05 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[REGEXP]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=176</guid>
		<description><![CDATA[两句SQL，都是字符替换，比较好用。 update comment set url=IF(url REGEXP 'test.yahoo.com.cn',REPLACE(url,'www1.sohu.com','www.sina.com'),REPLACE(url,'www2.yahoo.com','www.sina.com')) where 1=1; update comment set author_url=REPLACE(author_url,'sohu','sina') where author_url REGEXP 'www.sohu.com';]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/176/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DELETE,UPDATE与LEFT JOIN</title>
		<link>http://www.4wei.cn/archives/119</link>
		<comments>http://www.4wei.cn/archives/119#comments</comments>
		<pubDate>Wed, 30 Jul 2008 14:18:18 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQl]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=119</guid>
		<description><![CDATA[#UPDATE: UPDATE A SET ApproverID=NULL,ApproveDate=NULL,ApproveResult=100,CheckerID=null,CheckDate=null, IsCheck=0 FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyBillDetail] B ON A.ID=B.[MaterialApplyBuyBillID] WHERE A.id=125 AND @InDetailCount=0 #DELETE: DELETE A FROM [SH_ClosingBalance] A LEFT JOIN [SH_StoreHouse] B ON A.StoreHouseID=B.ID WHERE B.departmentID='1000' update table1 set a.a=1 from table1 a inner join table2 b on a.ip=b.ip]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/119/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL中的转义字符列表</title>
		<link>http://www.4wei.cn/archives/92</link>
		<comments>http://www.4wei.cn/archives/92#comments</comments>
		<pubDate>Wed, 16 Jul 2008 05:07:15 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQl]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=92</guid>
		<description><![CDATA[MySQL的转义字符“\” MySQL识别下列转义字符： \0 一个ASCII 0 (NUL)字符。 \n 一个新行符。 \t 一个定位符。 \r 一个回车符。 \b 一个退格符。 \' 一个单引号(“'”)符。 \ " 一个双引号(“ "”)符。 \\ 一个反斜线(“\”)符。 \% 一个“%”符。它用于在正文中搜索“%”的文字实例，否则这里“%”将解释为一个通配符。 \_ 一个“_”符。它用于在正文中搜索“_”的文字实例，否则这里“_”将解释为一个通配符。 注意，如果你在某些正文环境中使用“\%”或“\%_”，这些将返回字符串“\%”和“\_”而不是“%”和“_”。 ★★ 有几种方法在一个字符串内包括引号： 1、必须转义的： 一个字符串用单引号“'”来引用的，该字符串中的单引号“'”字符可以用“''”方式转义。 一个字符串用双引号“ "”来引用的，该字符串中的“ "”字符可以用“ " "”方式转义。 同时你也可以继续使用一个转义字符“\”来转义 2、可不转义的： 一个字符串用双引号“ "”来引用的，该字符串中的单引号“'”不需要特殊对待而且不必被重复或转义。 同理， 一个字符串用单引号“'”来引用的，该字符串中的双引号“ "”不需要特殊对待而且不必被重复或转义。 下面显示的SELECT演示引号和转义如何工作： mysql > SELECT 'hello', ' "hello "', ' " "hello " [...]]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/92/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql 中的数据类型</title>
		<link>http://www.4wei.cn/archives/91</link>
		<comments>http://www.4wei.cn/archives/91#comments</comments>
		<pubDate>Thu, 10 Jul 2008 01:54:13 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQl]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=91</guid>
		<description><![CDATA[  数据类型 描述 字节 推荐使用 SMALLINT 整数，从-32000到 +32000范围 2 存储相对比较小的整数。 比如: 年纪，数量 INT 整数，从-2000000000 到 +2000000000 范围 4 存储中等整数 例如: 距离 BIGINT 不能用SMALLINT 或 INT描述的超大整数。 8 存储超大的整数 例如: 科学/数学数据 FLOAT 单精度浮点型数据 4 存储小数数据 例如:测量，温度 DOUBLE 双精度浮点型数据 8 需要双精度存储的小数数据 例如:科学数据 DECIMAL 用户自定义精度的浮点型数据 变量;取决于精度与长度 以特别高的精度存储小数数据。 例如:货币数额，科学数据 CHAR 固定长度的字符串 特定字符串长度(高达255字符) 存储通常包含预定义字符串的变量 例如: 定期航线，国家或邮编 VARCHAR 具有最大限制的可变长度的字符串 变量; 1 + [...]]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP正则表达式使用详解</title>
		<link>http://www.4wei.cn/archives/61</link>
		<comments>http://www.4wei.cn/archives/61#comments</comments>
		<pubDate>Thu, 15 May 2008 06:46:34 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[preg/ereg]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=61</guid>
		<description><![CDATA[一个正则表达式是一个特定的格式化模式，可以用来找出一个字符串在另一个字符串中的使用情况。几个编程语言，包括Visual Basic,Perl,JavaScript和PHP都支持正则表达式，希望在这篇入门指导的结束，Mitchell(作者自己)可以让你在PHP程序中能应用一些基本的正则表达式。正则表达式是在各种各样的程序语言中突出的古怪特征中的一种，但是由于它们看起来是很难的一个概念，所以很多开发者就把它们放到了角落里，忘记了它们的存在。 让我们先来看看什么是正则表达式，为什么你要在PHP程序中用到它们。 什么是正则表达式? 你对从一个不错的老的基于控制的文本编辑器中分离出像BBEdit和notepad的程序，有什么看法呢？两个都支持文本输入，可以让你保存文本到文件中，但是现在的文本编辑器也支持其它功能，包括查找–代替工具，这让编辑一个文本文件相当容易。       正则表达式也是相似的，只是更好一些。正则表达式可以被认为一个极其高级的查找-替换工具，让我们从痛苦中摆脱出来：不必再写定制的数据确认例子来检查电子邮件地址或者来确认电话号码的格式是正确的，如此等等。       任何程序中最普通的函数之一就是数据有效性检查，PHP捆绑了一些文本检查函数，允许我们用正则表达式匹配一个字符串，确认有一个空格，有一个问号，等等。       你不知道的可能是，正则表达式可以简单装备吗，当你掌握了一些正则表达式时(这个正则表达式可以用来告诉正则表达式引擎一个字符串中我们想要匹配的部分)，你会自问为什么会把正则表达式扔到角落里这么久，^_^。       PHP有两套函数，用来处理两种类型的正则表达式:Perl5兼容模式，和Posix标准兼容模式。在这篇文章中我们将看看ereg函数，用遵照Posix标准的搜索表达式工作。虽然它们并没有Perl5模式那样强大，但是一种不错的学习正则表达式的方法。如果你对PHP支持的Perl5兼容正则表达式感兴趣，可以到PHP.net网站找一些关于preg函数的细节。       PHP有六个函数来处理正则表达式，它们都把一个正则表达式作为它们的第一个参数，列出如下： ereg: 最常用的正则表达式函数, ereg 允许我们搜索跟一个正则表达式匹配的一个字符串. ereg_replace: 允许我们搜索跟正则表达式匹配的一个字符串，并用新的字符串代替所有这个表达式出现的地方。 eregi: 和ereg几乎是一样效果，不过忽略大小写。 eregi_replace: 和ereg_replace有着一样的搜索-替换功能，不过忽略大小写. split: 允许我们搜索和正则表达式匹配的字符串，并且以字符串集合的方式返回匹配结果. spliti: split函数忽略大小写的版本. 为什么使用正则表达式?         如果你不断地建立不同的函数来检查或者操作字符串的一部分，现在你可能要放弃所有的这些函数，取而代之的用正则表达式。如果你对下列的问题都答“是的”，那么你肯定要考虑使用正则表达式了： 你是否正在写一些定制的函数来检查表单数据（比如在电子信箱地址中的一个@，一个点）? 你是否写一些定制的函数，在一个字符串中循环每个字符，如果这个字符匹配了一个特定特征（比如它是大写的，或者它是一个空格），那么就替换它?        除了是令人不舒服的字符串检查和操作方法，如果没有有效率地写代码，上述的两条也会使你的程序慢下来。你是否更倾向于用下面的代码检查一个电子信箱地址呢: &#60;?php function validateEmail($email) {        $hasAtSymbol = strpos($email, "@");        $hasDot = strpos($email, ".");        if($hasAtSymbol &#38;&#38; $hasDot)           [...]]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/61/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>在Vista下安装Mysql 5.0</title>
		<link>http://www.4wei.cn/archives/59</link>
		<comments>http://www.4wei.cn/archives/59#comments</comments>
		<pubDate>Wed, 14 May 2008 19:43:35 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=59</guid>
		<description><![CDATA[在网上看到很多篇文章介绍在VISTA下安装MYSQL，自己试过很多次都没有成功，经过别人帖子的指点，终于找到了成功安装MYSQL的方法，现在分享如下：   1.去官方下载MYSQL 5.0，下载地址：http://http://dev.mysql.com/downloads/ 下载5.0版本的。   2.修改防火墙的设置，在允许例外里添加新的端口，名字为mysql，开放的端口为TCP 3306。   3.安装MYSQL 5.0，可以自己修改安装路径和组件等。   4.安装完成后，Mysql server instance config wizard应该是启动不了的，下面的工作就是为了解决这个问题的，因为这是配置Mysql的唯一途径。   5.到http://angusj.com/resourcehacker/下载简体中文版（如果你看的懂英文，那就直接下原版的）。   6.解压rh_chinese_big5.zip ，执行 ResHacker.exe   7.打开MySQLInstanceConfig.exe (在安裝 MySQL 的bin 目录中)   8.左侧展开「24」→「1」→「1033」    9. 右侧找到&#60;requestedExecutionLevel level="asAdministrator" uiAccess="false"&#62; 这行 10.将 level="asAdministrator" 改成 level="requireAdministrator"  11. 重新编译  12.保存后关闭 (如果不能保存，另存在 bin 目录外，然后覆盖回來也可以) 13.这时MySQLInstanceConfig.exe，就可以正常的配置了。]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/59/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL 数据库函数库</title>
		<link>http://www.4wei.cn/archives/57</link>
		<comments>http://www.4wei.cn/archives/57#comments</comments>
		<pubDate>Tue, 13 May 2008 20:37:13 +0000</pubDate>
		<dc:creator>尘缘</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQl]]></category>

		<guid isPermaLink="false">http://www.4wei.cn/?p=57</guid>
		<description><![CDATA[本函数库供存取 MySQL 数据库。有关 MySQL 的细节，及下载 MySQL 数据库，请到这个网址 http://www.mysql.com 。而网络上也有许多提供处理 MySQL 的用户界面程序，建议到 http://www.phpwizard.net/phpMyAdmin 下载 phpMyAdmin，可以使用浏览器操作及管理 MySQL。整套 phpMyAdmin 程序，是用 PHP3 完成的，亦可同时研究 PHP3 与 MySQL 的链接。 mysql_affected_rows: 得到 MySQL 最后操作影响的列数目。 mysql_close: 关闭 MySQL 服务器连接。 mysql_connect: 打开 MySQL 服务器连接。 mysql_create_db: 建立一个 MySQL 新数据库。 mysql_data_seek: 移动内部返回指针。 mysql_db_query: 送查询字符串 (query) 到 MySQL 数据库。 mysql_drop_db: 移除数据库。 mysql_errno: 返回错误信息代码。 mysql_error: 返回错误信息。 mysql_fetch_array: 返回数组资料。 [...]]]></description>
		<wfw:commentRss>http://www.4wei.cn/archives/57/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

