﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小毅的遐想-文章分类-DataBase</title><link>http://www.blogjava.net/xiaoyi/category/35706.html</link><description>阳光总在风雨后,让我们在雨中毅然前行,收获每一份喜悦的欢笑o(∩_∩)o...</description><language>zh-cn</language><lastBuildDate>Wed, 22 Dec 2010 19:16:39 GMT</lastBuildDate><pubDate>Wed, 22 Dec 2010 19:16:39 GMT</pubDate><ttl>60</ttl><item><title>小毅整理之----解决mysql服务不能启动 1067错误 进程意外终止 安装卡住等</title><link>http://www.blogjava.net/xiaoyi/articles/335507.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Mon, 18 Oct 2010 16:04:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/335507.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/335507.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/335507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/335507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/335507.html</trackback:ping><description><![CDATA[<p><strong style="color: red">起因</strong>：<span style="font-size: 10pt; color: #000080"><strong>以前安装过mysql在D盘</strong>，后来重装系统之后再装mysql在C盘总是装不上<br />
<strong style="color: #ff0000">具体体现</strong>： 在配置的时候，在 start service的时候卡住了 直接用命令去启动服务出现 <span style="color: #ff0000"><strong>【无法启动mysql服务 1067错误 进程以外终止】<br />
<br />
</strong></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经过百度谷歌搜索，找到以下方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、找到安装目录修改my.ini中的 basedir和datadir&nbsp; 并打开注册表&nbsp;更改简直与其相同<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HKEY_LOCAL_MACHINE\SOFTWARE\MySQL 下的 DataLocation（<span style="color: #ff0000">mysql数据文件位置</span>） 和Location （<span style="color: #ff0000">mysql安装目</span><span style="color: #ff0000">录</span>）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、使用windows命令 sc delete mysql删除服务或mysql配置工具先remove instance再使用mysql重新配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、使用360等强制卸载工具并CTRL+F手动查找所有带mysql的键值并逐一手动删除<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、其他。。。<br />
<br />
尝试了几乎所有方法，结果却还是没用。。。欲哭无泪！！！！！！！！！！！！！（<span style="color: #ff0000">有的说，以前安装过的话可以换一个服务名就可以了，但是还是可能出现未知问题。。。也不知道解决方法</span>）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我的电脑----管理-----事件查看器-----------应用程序----查看mysql记录<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plugin 'InnoDB' init function returned error.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plugin 'InnoDB' registration as a STORAGE ENGINE failed.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unknown/unsupported table type: INNODB<br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Aborting&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如我们的数据文件位置在 D:\MysqlDataFiles<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在其下面的有20880808..err&nbsp;&nbsp; (20880808为安装日期)&nbsp; 用记事本打开也可以看到错误记录</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: #ff0000">&nbsp;<span style="font-size: 18pt"><strong style="color: #ff0000">&nbsp;解决方法</strong>：</span></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>由于INNODB没有初始化，我们选择&nbsp;跳过INNODB即可&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、直接把i&nbsp;mysql数据文件夹下的bdata 以及ib_logfile0、ib_logfile1删掉再启动就好了。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、也可以更改 mysql.ini&nbsp; (在mysql的安装目录下)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[mysqld]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skip-innodb<br />
<span style="font-size: 24pt">补充：<br />
</span></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为某个软件装了早期版本但是又很难卸载干净导致新版本的装不上，很无奈的选择重装系统。。。&nbsp;哭啊~<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql重装发生错误 100061错误 ，重试N次后更郁闷------TMD直接在start services处卡死。。。 郁闷的想死啊~<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;百度？谷歌？。。。之后，也有人遇到相同问题，但是没有根本解决方法。。。有人选择了 免安装版本 ，看似解决了 实际是绕道走了。。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;俺偏不服！！！！！！！！ 靠，经过最少几十次的安装、卸载、。。加上以上的方法 终于摸出门道，特此分享：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、mysql安装目录\bin 目录下，新建一个 任意名.bat&nbsp; 内容为 cmd.exe<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 双击打开，弹出黑色dos窗口，输入 <span style="color: red">mysqld -nt --remove</span>&nbsp;和<span style="color: red">mysqld --remove&nbsp;</span>会删除mysql的实例以及一些东东<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （路径难得打，我是偷懒方式，你也可以直接 开始---运行---&nbsp; X:\mysql安装路径\bin\mysqld-nt --remove ）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、卸载mysql&nbsp; (最好用360的专业卸载工具或者其他。。。因为更彻底，非广告)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">3、重点： 删除目录 C:\Documents and Settings\用户名\Application Data\MySQL（XP系统下用户名是All Users）&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除原来安装的目录Mysql<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、重新安装，<span style="color: red">最好更换安装目录</span>&nbsp;（我是试了N次之后，更换安装目录 OK了）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: red">特别提示：&nbsp; coding最郁闷的就是很多软件莫名其妙的错误 装软件要装很久 又有很多，所以装了软件并配置好了环境变量后一定要做一个备份哦&nbsp;~否则 病毒。。装新软件失败了。。无法回到没装过的状态。。那是灰常灰常地郁闷的~~~~~~&nbsp; 多做备份，多省心！<br />
</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong style="color: #ff0000">经过不断尝试，功夫不负有心人! 以后碰到问题不能绕着走，得一路走到底以后就再也不用怕遇到了！！！<br />
</strong></span></p>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/335507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2010-10-19 00:04 <a href="http://www.blogjava.net/xiaoyi/articles/335507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ibatis之DAO应用</title><link>http://www.blogjava.net/xiaoyi/articles/298834.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Mon, 19 Oct 2009 05:14:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/298834.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/298834.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/298834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/298834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/298834.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.来一个Person类 package&nbsp;com.Jdnis.ibatis.model;&nbsp;&nbsp;&nbsp;import&nbsp;java.io.Serializable;&nbsp;&nbsp;&nbsp;import&nbsp;java.sql.Date;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;Person&...&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoyi/articles/298834.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoyi/aggbug/298834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-10-19 13:14 <a href="http://www.blogjava.net/xiaoyi/articles/298834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ibatis之动态查询</title><link>http://www.blogjava.net/xiaoyi/articles/298832.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Mon, 19 Oct 2009 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/298832.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/298832.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/298832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/298832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/298832.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">iBATIS动态查询的实现主要是在iBATIS中使用安全的拼接语句,动态查询&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　iBATIS比JDBC的优势之一,安全高效<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　iBATIS动态查询实例：（说明文字在注释中）<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />﹤　select　　id　="selectAllProducts"　　parameterClass　="Product"　　resultMap　="ProductResult"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　select　id,note　from　Product　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　﹤　dynamic　　prepend　="WHERE"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　﹤!--　　isNotNull判断参数是否存在,Integer类型　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤　isNotNull　　property　="id"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　﹤!--　　isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　﹤　isGreaterThan　　prepend　="　and　"　　property　="id"　　compareValue　="0"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　id　=　#id#　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　﹤/　isGreaterThan　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤/　isNotNull　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤!--　　isNotEmpty判断字串不为空,isEmpty可以判断字串为空　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤　isNotEmpty　　prepend　="　and　"　　property　="note"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤!--　　模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　note　like　'%$note$%'　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　﹤/　isNotEmpty　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　﹤/　dynamic　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />﹤/　select　﹥　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　iBATIS动态查询解释：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　用Map传参数<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />﹤　select　　id　="selectAllProducts"　　parameterClass　="java.util.HashMap"　　resultMap　="ProductResult"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　select　id,note　from　Product　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　﹤　dynamic　　prepend　="WHERE"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　﹤!--　　isPropertyAvailable判断属性是否有效　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　﹤　isPropertyAvailable　　property　="id"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　﹤　isNotNull　　property　="id"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　　﹤!--　　isLessThan判断参数是否小于compareValue,isLessEquals是小于等于　　--﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　　﹤　isLessThan　　prepend　="　and　"　　property　="id"　　compareValue　="10"　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　id　=　#id#　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　　　　　﹤/　isLessThan　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　　　﹤/　isNotNull　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　　　﹤/　isPropertyAvailable　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　　　　　　﹤/　dynamic　﹥　　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　﹤/　select　﹥　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　iBATIS动态查询几个常用属性<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isPropertyAvailable&nbsp;﹥　&nbsp;属性是存在<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isNotPropertyAvailable&nbsp;﹥　&nbsp;属性不存在<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isNull&nbsp;﹥　&nbsp;属性值是null<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isEmpty&nbsp;﹥　&nbsp;判断Collection.size&nbsp;﹤&nbsp;1&nbsp;或String.length()﹤1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤isEqual&nbsp;﹥　&nbsp;等于<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isNotEqual&nbsp;﹥　&nbsp;不等于<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isGreaterThan&nbsp;﹥　&nbsp;大于<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isGreaterEqual&nbsp;﹥　&nbsp;大于等于<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isLessThan&nbsp;﹥　&nbsp;小于<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　﹤&nbsp;isLessEqual&nbsp;﹥　&nbsp;小于等于&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　iBATIS动态查询的相关信息就向你介绍到这里，希望对你了解iBATIS动态查询有所帮助。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/298832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-10-19 13:02 <a href="http://www.blogjava.net/xiaoyi/articles/298832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ibatis之LIKE用法</title><link>http://www.blogjava.net/xiaoyi/articles/298759.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Sun, 18 Oct 2009 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/298759.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/298759.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/298759.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/298759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/298759.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">&nbsp;<strong>网上搜了一下ibatis的关于like的使用<br />
</strong></span></span><span style="font-size: 10pt; color: red"><strong style="color: #0000ff">一般使用</strong>：<strong>﹤!--　　模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换　　--﹥　　　<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />　　　　　　　　　note　like　'%$note$%'　</strong><br />
<br />
其他用法：<br />
<br />
<strong>SELECT *&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM user&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE username like '%'&nbsp; || #username# || '%'</strong>&nbsp; </span></p>
<p><br />
<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实上面的语句是正对Oracle 的，对于不同数据字符串连接符不一样。现列举mysql和SQLServer如下： </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mysql： </span></p>
<p><span style="font-size: 10pt"><strong><span style="color: red"><strong>SELECT *&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM user&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE username like CONCAT('%', #username#, '%')</strong>&nbsp; </span></strong></span></p>
<p><br />
<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQLServer：</span><span style="font-size: 10pt"><br />
<strong><span style="color: red"><strong>SELECT *&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM user&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE username like '%' + #username# +&nbsp; '%'</strong>&nbsp; </span></strong></span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">-----------------------------------------------------------------------------------------------------------------------------</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于数据库字符串连接符简单列举我使用过的一些数据库如下：</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">Oracle SQLServer Mysql DB2 <br />
<span style="color: red"><strong>|| 或 CONCAT() + CONCAT() || 或 CONCAT() </strong></span></span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 更多其他数据库的字符串连接符google！<br />
</span></p>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/298759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-10-18 17:03 <a href="http://www.blogjava.net/xiaoyi/articles/298759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小毅整理之------更改MySql数据库root用户的密码</title><link>http://www.blogjava.net/xiaoyi/articles/285432.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Fri, 03 Jul 2009 18:19:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/285432.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/285432.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/285432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/285432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/285432.html</trackback:ping><description><![CDATA[<strong style="color: #0000ff">&nbsp; 在...mysql\bin 目录下</strong><br />
<strong style="color: #ff0000"><span style="color: #ff0000">方式一：</span><br />
</strong>&nbsp;&nbsp; <span style="color: #0000ff">mysqladmin -u<span style="color: #ff0000">root</span> -p<span style="color: #ff0000">123456</span> password&nbsp;<span style="color: #ff0000">456789</span>&nbsp;</span><br />
&nbsp;<br />
&nbsp;&nbsp; <span style="font-size: 10pt">用户名是 root &nbsp; 旧密码是：123456&nbsp;&nbsp; &nbsp;新密码是：456789&nbsp;<br />
</span><span style="color: #ff0000; background-color: #ffffff"><strong><span style="font-size: 12pt"><span style="color: #ff0000; background-color: #ffffff"><strong>方式二：</strong></span><br />
</span></strong></span><span style="color: #0000ff">mysqladmin -u<span style="color: #ff0000">root</span> -p password <span style="color: #ff0000">新密码</span> <br />
</span><span style="font-size: 10pt">然后 出现Enter Password:让你输入旧密码连接mysql数据进行更改 <br />
回车 更改密码成功！</span> <br />
<img src ="http://www.blogjava.net/xiaoyi/aggbug/285432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-07-04 02:19 <a href="http://www.blogjava.net/xiaoyi/articles/285432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小毅收藏之---Mysql常用命令几面</title><link>http://www.blogjava.net/xiaoyi/articles/283671.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Tue, 23 Jun 2009 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/283671.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/283671.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/283671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/283671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/283671.html</trackback:ping><description><![CDATA[<div class="blog_content">
<div class="mypost">
<p>整理By：leo,感谢leo</p>
<p>&nbsp;转载于:http://jiajun.javaeye.com/blog/411079</p>
<p>测试环境：mysql 5.0.45<br />
【注：可以在mysql中通过mysql&gt; SELECT VERSION();来查看数据库版本】</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>一、连接MYSQL。</strong> </p>
<p>格式： mysql -h主机地址 -u用户名 －p用户密码</p>
<p>1、连接到本机上的MYSQL。</p>
<p>首先打开DOS窗口，然后进入目录mysql\bin，再键入命令mysql -u root -p，回车后提示你输密码.注意用户名前可以有空格也可以没有空格，但是密码前必须没有空格，否则让你重新输入密码.</p>
<p>如果刚安装好MYSQL，超级用户root是没有密码的，故直接回车即可进入到MYSQL中了，MYSQL的提示符是： mysql&gt;</p>
<p>2、连接到远程主机上的MYSQL。假设远程主机的IP为：110.110.110.110，用户名为root,密码为abcd123。则键入以下命令：</p>
<p>mysql -h110.110.110.110 -u root -p 123;（注:u与root之间可以不用加空格，其它也一样）</p>
<p>3、退出MYSQL命令： exit （回车）</p>
<p>&nbsp;</p>
<p><strong>二、修改密码。</strong> </p>
<p>格式：mysqladmin -u用户名 -p旧密码 password 新密码</p>
<p>1、给root加个密码ab12。首先在DOS下进入目录mysql\bin，然后键入以下命令</p>
<p>mysqladmin -u root -password ab12</p>
<p>注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。<br />
<br />
2、再将root的密码改为djg345。</p>
<p>mysqladmin -u root -p ab12 password djg345</p>
<p>&nbsp;</p>
<p><strong>三、增加新用户。</strong> <br />
（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符）</p>
<p>格式：grant select on 数据库.* to 用户名@登录主机 identified by &#8220;密码&#8221;</p>
<p>1、增加一个用户test1密码为abc，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL，然后键入以下命令：</p>
<p>grant select,insert,update,delete on *.* to test1@&#8221;%&#8221; Identified by &#8220;abc&#8221;;</p>
<p>但增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，解决办法见2。</p>
<p>2、增加一个用户test2密码为abc,让他只可以在localhost上登录，并可以对数据库mydb进行查询、插入、修改、删除的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），</p>
<p>这样用户即使用知道test2的密码，他也无法从internet上直接访问数据库，只能通过MYSQL主机上的web页来访问了。</p>
<p>grant select,insert,update,delete on mydb.* to test2@localhost identified by &#8220;abc&#8221;;</p>
<p>如果你不想test2有密码，可以再打一个命令将密码消掉。</p>
<p>grant select,insert,update,delete on mydb.* to test2@localhost identified by &#8220;&#8221;;</p>
<p>下篇我是MYSQL中有关数据库方面的操作。注意：你必须首先登录到MYSQL中，以下操作都是在MYSQL的提示符下进行的，而且每个命令以分号结束。</p>
<p>一、操作技巧</p>
<p>1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。</p>
<p>也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。</p>
<p>2、你可以使用光标上下键调出以前的命令。</p>
<p>二、显示命令</p>
<p>1、显示当前数据库服务器中的数据库列表：</p>
<p>mysql&gt; SHOW DATABASES;</p>
<p>注意：mysql库里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。</p>
<p>2、显示数据库中的数据表：</p>
<p>mysql&gt; USE 库名；<br />
mysql&gt; SHOW TABLES;</p>
<p>3、显示数据表的结构：</p>
<p>mysql&gt; DESCRIBE 表名;</p>
<p>4、建立数据库：</p>
<p>mysql&gt; CREATE DATABASE 库名;</p>
<p>5、建立数据表：</p>
<p>mysql&gt; USE 库名;<br />
mysql&gt; CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));</p>
<p>6、删除数据库：</p>
<p>mysql&gt; DROP DATABASE 库名;</p>
<p>7、删除数据表：</p>
<p>mysql&gt; DROP TABLE 表名；</p>
<p>8、将表中记录清空：</p>
<p>mysql&gt; DELETE FROM 表名;</p>
<p>9、显示表中的记录：</p>
<p>mysql&gt; SELECT * FROM 表名;</p>
<p>10、往表中插入记录：</p>
<p>mysql&gt; INSERT INTO 表名 VALUES (&#8221;hyq&#8221;,&#8221;M&#8221;);</p>
<p>11、更新表中数据：</p>
<p>mysql-&gt; UPDATE 表名 SET 字段名1=&#8217;a',字段名2=&#8217;b&#8217; WHERE 字段名3=&#8217;c';</p>
<p>12、用文本方式将数据装入数据表中：</p>
<p>mysql&gt; LOAD DATA LOCAL INFILE &#8220;D:/mysql.txt&#8221; INTO TABLE 表名;</p>
<p>13、导入.sql文件命令：</p>
<p>mysql&gt; USE 数据库名;<br />
mysql&gt; SOURCE d:/mysql.sql;</p>
<p>14、命令行修改root密码：</p>
<p>mysql&gt; UPDATE mysql.user SET password=PASSWORD(&#8217;新密码&#8217;) WHERE User=&#8217;root&#8217;;<br />
mysql&gt; FLUSH PRIVILEGES;</p>
<p>15、显示use的数据库名：</p>
<p>mysql&gt; SELECT DATABASE();</p>
<p>16、显示当前的user：</p>
<p>mysql&gt; SELECT USER();</p>
<p>三、一个建库和建表以及插入数据的实例</p>
<p>drop database if exists school; //如果存在SCHOOL则删除</p>
<p>create database school; //建立库SCHOOL</p>
<p>use school; //打开库SCHOOL</p>
<p>create table teacher //建立表TEACHER<br />
(<br />
id int(3) auto_increment not null primary key,<br />
name char(10) not null,<br />
address varchar(50) default &#8216;深圳&#8217;,<br />
year date<br />
); //建表结束</p>
<p>//以下为插入字段<br />
insert into teacher values(&#8221;,&#8217;allen&#8217;,'大连一中&#8217;,'1976-10-10&#8242;);<br />
insert into teacher values(&#8221;,&#8217;jack&#8217;,'大连二中&#8217;,'1975-12-23&#8242;);</p>
<p>如果你在mysql提示符键入上面的命令也可以，但不方便调试。</p>
<p>（1）你可以将以上命令原样写入一个文本文件中，假设为school.sql，然后复制到c:\\下，并在DOS状态进入目录\\mysql\\bin，然后键入以下命令：</p>
<p>mysql -uroot -p密码 &lt; c:\\school.sql</p>
<p>如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你只要将//的注释去掉即可使用）。</p>
<p>（2）或者进入命令行后使用 mysql&gt; source c:\\school.sql; 也可以将school.sql文件导入数据库中。</p>
<p><strong>四、将文本数据转到数据库中</strong> </p>
<p>1、文本数据应符合的格式：字段数据之间用tab键隔开，null值用\\n来代替.例：</p>
<p>3 rose 大连二中 1976-10-10</p>
<p>4 mike 大连一中 1975-12-23</p>
<p>假设你把这两组数据存为school.txt文件，放在c盘根目录下。</p>
<p>2、数据传入命令 load data local infile &#8220;c:\\school.txt&#8221; into table 表名;</p>
<p>注意：你最好将文件复制到\\mysql\\bin目录下，并且要先用use命令打表所在的库。</p>
<p>&nbsp;</p>
<p><strong>五、备份数据库：（命令在DOS的\\mysql\\bin目录下执行）</strong> </p>
<p>1.导出整个数据库</p>
<p>导出文件默认是存在mysql\bin目录下</p>
<p>mysqldump -u 用户名 -p 数据库名 &gt; 导出的文件名</p>
<p>mysqldump -u user_name -p123456 database_name &gt; outfile_name.sql</p>
<p>2.导出一个表</p>
<p>mysqldump -u 用户名 -p 数据库名 表名&gt; 导出的文件名</p>
<p>mysqldump -u user_name -p database_name table_name &gt; outfile_name.sql</p>
<p>3.导出一个数据库结构</p>
<p>mysqldump -u user_name -p -d &#8211;add-drop-table database_name &gt; outfile_name.sql</p>
<p>-d 没有数据 &#8211;add-drop-table 在每个create语句之前增加一个drop table</p>
<p>4.带语言参数导出</p>
<p>mysqldump -uroot -p &#8211;default-character-set=latin1 &#8211;set-charset=gbk &#8211;skip-opt database_name &gt; outfile_name.sql</p>
</div>
</div>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/283671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-06-23 09:15 <a href="http://www.blogjava.net/xiaoyi/articles/283671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小毅整理之------SQLITE入门至精通</title><link>http://www.blogjava.net/xiaoyi/articles/281204.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Wed, 10 Jun 2009 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/281204.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/281204.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/281204.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/281204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/281204.html</trackback:ping><description><![CDATA[<p><strong style="color: #ff0000">菜鸟入门</strong><br />
1。从<a href="http://www.sqlite.org/">www.sqlite.org</a>下载SQLite 3.3.4的版本<br />
&nbsp;&nbsp; 为了方便，我把它解压了，就一个SQLite3.exe，放入Windows目录下。<br />
&nbsp;&nbsp; Cmd 进入命令行<br />
&nbsp;&nbsp; 1)<br />
&nbsp;&nbsp; <span style="color: #0000ff"><strong>创建数据库文件:</strong><br />
</span>&nbsp;&nbsp; &gt;SQLite3 d:\test.db 回车<br />
&nbsp;&nbsp; 就生成了一个test.db在d盘。<br />
&nbsp;&nbsp; 这样同时也SQLite3挂上了这个test.db<br />
&nbsp;&nbsp; 2) <br />
&nbsp;&nbsp; <strong style="color: #0000ff">用.help可以看看有什么命令</strong><br />
&nbsp;&nbsp; &gt;.help 回车即可<br />
&nbsp;&nbsp; 3)可以在这里直接输入SQL语句创建表格 <strong style="color: #0000ff">用;结束</strong>，然后回车就可以看到了<br />
&nbsp;&nbsp; 4)看看有<strong style="color: #0000ff">创建了多少表</strong><br />
&nbsp;&nbsp; &gt;.tables <br />
&nbsp;&nbsp; 5)看表结构<br />
&nbsp;&nbsp; &gt;.schema 表名<br />
&nbsp;&nbsp; 6)<strong style="color: #0000ff">看看目前的数据库</strong><br />
&nbsp;&nbsp; &gt;.database<br />
&nbsp;&nbsp; 7)<strong style="color: #0000ff">如果要把查询输出到文件</strong><br />
&nbsp;&nbsp; &gt;.output 文件名<br />
&nbsp;&nbsp; &gt; 查询语句；<br />
&nbsp;&nbsp; 查询结果就输出到了文件c:\query.txt </p>
<p>&nbsp;&nbsp; 把查询结果用屏幕输出<br />
&nbsp;&nbsp; &gt;.output stdout<br />
</p>
<p>&nbsp;&nbsp; 8)把表结构输出，同时索引也会输出<br />
&nbsp;&nbsp;&nbsp;&nbsp; .dump 表名<br />
&nbsp;&nbsp; 9)<strong style="color: #0000ff">退出</strong><br />
&nbsp;&nbsp; &gt;.exit 或者.quit</p>
<p>2。从<a href="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</a>下载Ado.net驱动。<br />
&nbsp;&nbsp; 下载了安装，在安装目录中存在System.Data.SQLite.dll<br />
&nbsp;&nbsp;&nbsp; 我们只需要拷贝这个文件到引用目录，并添加引用即可对SQLite数据库操作了<br />
&nbsp;&nbsp; 所有的Ado.net对象都是以SQLite开头的，比如SQLiteConnection<br />
&nbsp;&nbsp; 连接串只需要如下方式<br />
&nbsp;&nbsp; Data Source=d:\test.db 或者DataSource=test.db--应用在和应用程序或者.net能够自动找到的目录<br />
&nbsp;&nbsp; 剩下的就很简单了~~</p>
<p>3。<strong style="color: #0000ff">SQL语法</strong><br />
&nbsp;&nbsp; 由于以前用SQLServer或者ISeries，所以DDL的语法很汗颜<br />
&nbsp;&nbsp; 1)<strong style="color: #0000ff">创建一个单个Primary Key的table<br />
</strong>&nbsp;&nbsp; CREATE TABLE&nbsp; [Admin] (<br />
&nbsp;[UserName] [nvarchar] (20)&nbsp;&nbsp; PRIMARY KEY NOT NULL ,<br />
&nbsp;[Password] [nvarchar] (50)&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[Rank] [smallint] NOT NULL ,<br />
&nbsp;[MailServer] [nvarchar] (50)&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[MailUser] [nvarchar] (50)&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[MailPassword] [nvarchar] (50)&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[Mail] [nvarchar] (50)&nbsp;&nbsp; NOT NULL <br />
&nbsp;&nbsp; ) ;<br />
<strong style="color: #0000ff">&nbsp;&nbsp; 2)创建一个多个Primary Key的table</strong><br />
&nbsp;&nbsp; CREATE TABLE&nbsp; [CodeDetail] (<br />
&nbsp;[CdType] [nvarchar] (10)&nbsp; NOT NULL ,<br />
&nbsp;[CdCode] [nvarchar] (20)&nbsp; NOT NULL ,<br />
&nbsp;[CdString1] [ntext]&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[CdString2] [ntext]&nbsp;&nbsp; NOT NULL ,<br />
&nbsp;[CdString3] [ntext]&nbsp;&nbsp; NOT NULL,<br />
&nbsp; PRIMARY KEY (CdType,CdCode)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; ) ;<br />
&nbsp;&nbsp; 3)<strong style="color: #0000ff">创建索引</strong><br />
&nbsp;&nbsp; CREATE&nbsp; INDEX [IX_Account] ON&nbsp; [Account]([IsCheck], [UserName]);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 还可以视图等等。<br />
4.还有很有用的SQL<br />
&nbsp; Select * from Sqlite_master <br />
&nbsp; Select datetime('now')<br />
&nbsp; Select date('now')<br />
&nbsp; Select time('now')<br />
&nbsp; </p>
<p style="background: white; word-break: break-all; line-height: 180%"><strong style="color: #0000ff"><span style="font-size: 10.5pt; color: black; line-height: 180%; font-family: Arial">SQLite</span><span style="font-size: 10.5pt; color: black; line-height: 180%">内建函数表</span></strong></p>
<p>
<table style="background: black; width: 100%" cellspacing="1" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: #cccccc; padding-bottom: 3.75pt; padding-top: 3.75pt" colspan="2">
            <p style="word-break: break-all"><strong><span style="font-size: 9pt; color: #143884">算术函数</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">abs(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回给定数字表达式的绝对值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">max(X,Y[,...])</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回表达式的最大值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">min(X,Y[,...])</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回表达式的最小值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">random(*)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回随机数。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">round(X[,Y])</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回数字表达式并四舍五入为指定的长度或精度。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: #cccccc; padding-bottom: 3.75pt; padding-top: 3.75pt" colspan="2">
            <p style="word-break: break-all"><strong><span style="font-size: 9pt; color: #143884">字符处理函数</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">length(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回给定字符串表达式的字符个数。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">lower(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">将大写字符数据转换为小写字符数据后返回字符表达式。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">upper(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回将小写字符数据转换为大写的字符表达式。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">substr(X,Y,Z)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回表达式的一部分。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">randstr()</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">quote(A)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">like(A,B)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">确定给定的字符串是否与指定的模式匹配。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">glob(A,B)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: #cccccc; padding-bottom: 3.75pt; padding-top: 3.75pt" colspan="2">
            <p style="word-break: break-all"><strong><span style="font-size: 9pt; color: #143884">条件判断函数</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">coalesce(X,Y[,...])</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">ifnull(X,Y)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">nullif(X,Y)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: #cccccc; padding-bottom: 3.75pt; padding-top: 3.75pt" colspan="2">
            <p style="word-break: break-all"><strong><span style="font-size: 9pt; color: #143884">集合函数</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">avg(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回组中值的平均值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">count(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回组中项目的数量。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">max(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回组中值的最大值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">min(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回组中值的最小值。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">sum(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回表达式中所有值的和。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: #cccccc; padding-bottom: 3.75pt; padding-top: 3.75pt" colspan="2">
            <p style="word-break: break-all"><strong><span style="font-size: 9pt; color: #143884">其他函数</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">typeof(X)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回数据的类型。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">last_insert_rowid()</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回最后插入的数据的</span><span style="font-size: 9pt; color: #143884; font-family: Tahoma">ID</span><span style="font-size: 9pt; color: #143884">。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">sqlite_version(*)</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回</span><span style="font-size: 9pt; color: #143884; font-family: Tahoma">SQLite</span><span style="font-size: 9pt; color: #143884">的版本。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">change_count()</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884">返回受上一语句影响的行数。</span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all"><span style="font-size: 9pt; color: #143884; font-family: Tahoma">last_statement_change_count()</span></p>
            </td>
            <td style="padding-right: 3.75pt; padding-left: 3.75pt; background: white; padding-bottom: 3.75pt; padding-top: 3.75pt">
            <p style="word-break: break-all">&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
<a href="http://www.cnblogs.com/iinsnian/category/139253.html"></a></p>
<p><br />
oh,还有就是看到有人说，好像成批插入的时候，启动事务，比不启动事务快n倍<br />
还有就是尽量使用参数化的SQL,估计和商用DB一样能够自动Prepare.<br />
</p>
<p>===========</p>
<p>sqlite可以在shell/dos command底下直接执行命令：<br />
<br />
sqlite3 film.db "select * from film;"<br />
<br />
<strong style="color: #0000ff">输出 HTML 表格：</strong><br />
<br />
sqlite3 -html film.db "select * from film;"<br />
<br />
<strong style="color: #0000ff">将数据库「倒出来」：<br />
</strong><br />
sqlite3 film.db ".dump" &gt; output.sql<br />
<br />
利用输出的资料，建立一个一模一样的数据库（加上以上指令，就是标准的SQL数据库备份了）：<br />
<br />
sqlite3 film.db &lt; output.sql<br />
<br />
在大量插入资料时，你可能会需要先打这个指令：<br />
<br />
begin;<br />
<br />
插入完资料后要记得打这个指令，资料才会写进数据库中：<br />
<br />
commit; </p>
<p><strong style="color: #ff0000">SQLITE深入------常见问题</strong><br />
</p>
<p><strong>如何建立自动增长字段?</strong></p>
<p>简短回答：<span style="color: #ff0000"><strong>声明为 INTEGER PRIMARY KEY 的列将会自动增长</strong></span>。</p>
<p>长一点的答案： 如果你声明表的一列为 INTEGER PRIMARY KEY，那么， 每当你在该列上插入一NULL值时， NULL自动被转换为一个比该列中最大值大1的一个整数，如果表是空的， 将会是1。 (如果是最大可能的主键 9223372036854775807，那个，将键值将是随机未使用的数。） 如，有下列表：</p>
<p>CREATE TABLE t1(<br />
a INTEGER PRIMARY KEY,<br />
b INTEGER<br />
);<br />
在该表上，下列语句</p>
<p>INSERT INTO t1 VALUES(NULL,123);<br />
在逻辑上等价于：</p>
<p>INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);<br />
有一个新的API叫做 <strong><span style="color: #ff0000"><strong>sqlite3_last_insert_rowid()， 它将返回最近插入的整数值。</strong></span></strong>注意该整数会比表中该列上的插入之前的最大值大1。 该键值在当前的表中是唯一的。但有可能与已从表中删除的值重叠。 要想建立在整个表的生命周期中唯一的键值，需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT声明。那么，新的键值将会比该表中曾能存在过的最大值大1。 如果最大可能的整数值在数据表中曾经存在过，INSERT将会失败， 并返回SQLITE_FULL错误代码。</p>
<p><strong>多个应用程序或一个应用程序的多个实例可以同时访问同一个数据库文件吗？</strong></p>
<p>多个进程可同时打开同一个数据库。多个进程可以同时进行SELECT 操作，但在任一时刻，只能有一个进程对数据库进行更改。</p>
<p>SQLite使用读、写锁控制对数据库的访问。（在Win95/98/ME等不支持读、 写锁的系统下，使用一个概率性的模拟来代替。）但使用时要注意： 如果数据库文件存放于一个NFS文件系统上，这种锁机制可能不能正常工作。 这是因为 fcntl() 文件锁在很多NFS上没有正确的实现。 在可能有多个进程同时访问数据库的时候，应该避免将数据库文件放到NFS上。 在Windows上，Microsoft的文档中说：如果使用 FAT 文件系统而没有运行 share.exe 守护进程，那么锁可能是不能正常使用的。那些在Windows上有很多经验的人告诉我： 对于网络文件，文件锁的实现有好多Bug，是靠不住的。如果他们说的是对的， 那么在两台或多台Windows机器间共享数据库可能会引起不期望的问题。</p>
<p>我们意识到，没有其它嵌入式的 SQL 数据库引擎能象 SQLite 这样处理如此多的并发。SQLite允许多个进程同时打开一个数据库， 同时读一个数据库。当有任何进程想要写时，它必须在更新过程中锁住数据库文件。 但那通常只是几毫秒的时间。其它进程只需等待写进程干完活结束。 典型地，其它嵌入式的SQL数据库引擎同时只允许一个进程连接到数据库。</p>
<p>但是，Client/Server数据库引擎（如 PostgreSQL, MySQL, 或 Oracle） 通常支持更高级别的并发，并且允许多个进程同时写同一个数据库。 这种机制在Client/Server结构的数据库上是可能的， 因为总是有一个单一的服务器进程很好地控制、协调对数据库的访问。 如果你的应用程序需要很多的并发，那么你应该考虑使用一个Client/Server 结构的数据库。但经验表明，很多应用程序需要的并发，往往比其设计者所想象的少得多。</p>
<p>当SQLite试图访问一个被其它进程锁住的文件时，缺省的行为是返回 SQLITE_BUSY。 可以在C代码中使用 sqlite3_busy_handler() 或 sqlite3_busy_timeout() API 函数调整这一行为。</p>
<p><strong>在SQLite数据库中如何列出所有的表和索引？</strong></p>
<p>如果你运行 sqlite3 命令行来访问你的数据库，可以键入 &#8220;.tables&#8221;来获得所有表的列表。或者，你可以输入 &#8220;.schema&#8221; 来看整个数据库模式，包括所有的表的索引。 输入这些命令，后面跟一个LIKE模式匹配可以限制显示的表。</p>
<p>在一个 C/C++ 程序中（或者脚本语言使用 Tcl/Ruby/Perl/Python 等） 你可以在一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有 表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表， 它定义数据库的模式。 SQLITE_MASTER 表看起来如下：</p>
<p>CREATE TABLE sqlite_master (<br />
type TEXT,<br />
name TEXT,<br />
tbl_name TEXT,<br />
rootpage INTEGER,<br />
sql TEXT<br />
);<br />
对于表来说，type 字段永远是 'table'，name 字段永远是表的名字。所以，要获得数据库中所有表的列表， 使用下列SELECT语句：</p>
<p>SELECT name FROM sqlite_master<br />
WHERE type='table'<br />
ORDER BY name;<br />
对于索引，type 等于 'index', name 则是索引的名字，tbl_name 是该索引所属的表的名字。 不管是表还是索引，sql 字段是原先用 CREATE TABLE 或 CREATE INDEX 语句创建它们时的命令文本。对于自动创建的索引（用来实现 PRIMARY KEY 或 UNIQUE 约束），sql字段为NULL。</p>
<p>SQLITE_MASTER 表是只读的。不能对它使用 UPDATE、INSERT 或 DELETE。 它会被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自动更新。</p>
<p>临时表不会出现在 SQLITE_MASTER 表中。临时表及其索引和触发器存放在另外一个叫 SQLITE_TEMP_MASTER 的表中。SQLITE_TEMP_MASTER 跟 SQLITE_MASTER 差不多， 但它只是对于创建那些临时表的应用可见。如果要获得所有表的列表， 不管是永久的还是临时的，可以使用类似下面的命令：</p>
<p>SELECT name FROM <br />
&nbsp;&nbsp; (SELECT * FROM sqlite_master UNION ALL<br />
&nbsp;&nbsp;&nbsp; SELECT * FROM sqlite_temp_master)<br />
WHERE type='table'<br />
ORDER BY name</p>
<p><strong>在SQLite中，VARCHAR字段最长是多少？</strong></p>
<p>SQLite 不强制 VARCHAR 的长度。 你可以在 SQLITE 中声明一个 VARCHAR(10)，SQLite还是可以很高兴地允许你放入500个字符。 并且这500个字符是原封不动的，它永远不会被截断。</p>
<p><strong>SQLite支持二进制大对象吗？</strong></p>
<p>SQLite 3.0 及以后版本允许你在任何列中存储 BLOB 数据。 即使该列被声明为其它类型也可以。</p>
<p><strong>在SQLite中，如何在一个表上添加或删除一列？</strong></p>
<p>SQLite 有有限地 ALTER TABLE 支持。你可以使用它来在表的末尾增加一列，可更改表的名称。 如果需要对表结构做更复杂的改变，则必须重新建表。 重建时可以先将已存在的数据放到一个临时表中，删除原表， 创建新表，然后将数据从临时表中复制回来。</p>
<p>如，假设有一个 t1 表，其中有 "a", "b", "c" 三列， 如果要删除列 c ，以下过程描述如何做:</p>
<p>BEGIN TRANSACTION;<br />
CREATE TEMPORARY TABLE t1_backup(a,b);<br />
INSERT INTO t1_backup SELECT a,b FROM t1;<br />
DROP TABLE t1;<br />
CREATE TABLE t1(a,b);<br />
INSERT INTO t1 SELECT a,b FROM t1_backup;<br />
DROP TABLE t1_backup;<br />
COMMIT;</p>
<p><strong>在数据库中删除了很多数据，但数据库文件没有变小，是Bug吗？</strong></p>
<p>不是。当你从SQLite数据库中删除数据时， 未用的磁盘空间将会加入一个内部的&#8220;自由列表&#8221;中。 当你下次插入数据时，这部分空间可以重用。磁盘空间不会丢失， 但也不会返还给操作系统。</p>
<p>如果删除了大量数据，而又想缩小数据库文件占用的空间，执行 VACUUM 命令。 VACUUM 将会从头重新组织数据库。这将会使用数据库有一个空的&#8220;自由链表&#8221;， 数据库文件也会最小。但要注意的是，VACUUM 的执行会需要一些时间 （在SQLite开发时，在Linux上，大约每M字节需要半秒种），并且， 执行过程中需要原数据库文件至多两倍的临时磁盘空间。</p>
<p>对于 SQLite 3.1版本，一个 auto-vacumm 模式可以替代 VACUUM 命令。 可以使用 auto_vacuum pragma 打开。</p>
<p><strong>SQLITE_SCHEMA error是什么错误？为什么会出现该错误？</strong></p>
<p>当一个准备好的（prepared）SQL语句不再有效或者无法执行时， 将返回一个 SQLITE_SCHEMA 错误。发生该错误时，SQL语句必须使用 sqlite3_prepare() API来重新编译. 在 SQLite 3 中, 一个 SQLITE_SCHEMA 错误只会发生在用 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 执行 SQL 时。而不会发生在使用 sqlite3_exec()时。 在版本2中不是这样。</p>
<p>准备好的语句失效的最通常原因是：在语句准备好后， 数据库的模式又被修改了。另外的原因会发生在：</p>
<p>数据库离线：DETACHed. <br />
数据库被 VACUUMed <br />
一个用户存储过程定义被删除或改变。 <br />
一个 collation 序列定义被删除或改变。 <br />
认证函数被改变。 <br />
在所有情况下，解决方法是重新编译并执行该SQL语句。 因为一个已准备好的语句可以由于其它进程改变数据库模式而失效， 所有使用 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 的代码都应准备处理 SQLITE_SCHEMA 错误。下面给出一个例子：</p>
<p><br />
&nbsp;&nbsp;&nbsp; int rc;<br />
&nbsp;&nbsp;&nbsp; sqlite3_stmt *pStmt;<br />
&nbsp;&nbsp;&nbsp; char zSql[] = "SELECT .....";</p>
<p>&nbsp;&nbsp;&nbsp; do {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Compile the statement from SQL. Assume success. */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlite3_prepare(pDb, zSql, -1, &amp;pStmt, 0);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( SQLITE_ROW==sqlite3_step(pStmt) ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Do something with the row of available data */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Finalize the statement. If an SQLITE_SCHEMA error has<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ** occured, then the above call to sqlite3_step() will have<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ** returned SQLITE_ERROR. sqlite3_finalize() will return<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ** SQLITE_SCHEMA. In this case the loop will execute again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rc = sqlite3_finalize(pStmt);<br />
&nbsp;&nbsp;&nbsp; } while( rc==SQLITE_SCHEMA );</p>
<p>&nbsp;</p>
<p><strong>如何在字符串中使用单引号(')？</strong></p>
<p>SQL 标准规定，在字符串中，单引号需要使用逃逸字符，即在一行中使用两个单引号。在这方面 SQL 用起来类似 Pascal 语言。 SQLite 尊循标准。如：</p>
<p>&nbsp;&nbsp;&nbsp; INSERT INTO xyz VALUES('5 O''clock');</p>
<p><br />
Sqlite中如何返回本地化当前时间？<br />
在做ClinicOS的时候遇到一个问题，在保存病历登记时间时，我使用了&#8220;CURRENT_TIMESTAMP&#8221;，但这有个问题，它返回的是UTC Time，这对我们中国人没啥用，一直希望能想办法将它转为localtime。今天刚好有空，所以去查了查Sqlite的Mail List，果然也有人遇到了这个问题，我从一篇名为《translate time comparison statement》（http://www.mail-archive.com/sqlite-users@sqlite.org/msg12350.html）中看到这样的回复：<br />
</p>
<pre style="margin: 0em">Mark Wyszomierski wrote:<br />
<br />
</pre>
<blockquote style="padding-left: 0.85em; margin: 0em; border-left: rgb(85,85,238) 0.2em solid">
<blockquote style="padding-left: 0.85em; margin: 0em; border-left: rgb(85,85,238) 0.2em solid">
<pre style="margin: 0em">You may want<br />
<br />
WHERE julianday(date('now')) - julianday(date(arrival_date)) &gt; 7<br />
<br />
</pre>
<tt></tt><tt></tt></blockquote></blockquote>
<pre style="margin: 0em">Mark,<br />
<br />
</pre>
<p><tt>You should still use the 'localtime' modifier on the 'now' value if your </tt><tt>timestamps are local time since 'now' always returns UTC times. </tt></p>
<pre style="margin: 0em">WHERE julianday(date('now', 'localtime')) - julianday(date(arrival_date)) &gt; 7<br />
<br />
嘿嘿，看来如果想得到一个符合本机区域设置的当前时间，必须用date函数来转换，<br />
但date只函数只返回当前日期，而我需要的是返回当前日期及时间，所以这里把它换成datetime函数，即：<br />
datetime(CURRENT_TIMESTAMP,'localtime')<br />
<br />
以下是sqlite下测试的输出信息：<br />
sqlite&gt; select CURRENT_TIMESTAMP;<br />
2006-06-18 09:23:36<br />
sqlite&gt; select datetime(CURRENT_TIMESTAMP,'localtime');<br />
2006-06-18 17:23:44<br />
sqlite&gt;<br />
</pre>
<p><strong style="color: #ff0000">SQLITE分页</strong><br />
<br />
<span style="color: #000000"><strong>刚开始的时候没注意语法<br />
后来才发现，原来用SQLite分页是世界上最简单的。<br />
如果我要去11-20的Account表的数据<br />
Select * From Account Limit&nbsp;9 Offset 10;<br />
以上语句表示从Account表获取数据，跳过10行，取9行<br />
<br />
嗯，我觉得这个特性足够让很多的web中型网站使用这个了。<br />
<br />
也可以这样写 select * from account limit10,9和上面的的效果一样。<br />
这种写法MySQL也支持。 </strong></span><br />
</p>
<div class="postTitle"><a class="postTitle2" id="AjaxHolder_ctl01_TitleUrl" style="color: #ff0000" href="http://www.cnblogs.com/shinings/archive/2009/02/11/1388090.html"><strong>SQLite适用的范围</strong> </a></div>
<p><font face="Verdana">&nbsp;</p>
<p><font style="color: #ff0000" face="Verdana"><strong>SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:</strong> </font></p>
<p><font face="Verdana">易于管理 <br />
易于使用 <br />
易于嵌入其他大型程序 <br />
易于维护和配置 <br />
许多人喜欢SQLite因为它的小巧和快速. 但是这些特性只是它的部分优点, 使用者还会发现SQLite是非常稳定的. 出色的稳定性源于它的简单, 越简单就越不容易出错. 除了上述的简单、小巧和稳定性外, 最重要的在于SQLite力争做到简单化. </font></p>
<p><font face="Verdana">简单化在一个数据库引擎中可以说是一个优点, 但也可能是个缺点, 主要决定于你想要做什么. 为了达到简单化, SQLite省略了一些人们认为比较有用的特性, 例如高并发性、 严格的存取控制、 丰富的内置功能、 存储过程、复杂的SQL语言特性、 XML以及Java的扩展, 超大的万亿级别的数据测量等等. 如果你需要使用上述的这些特性并且不介意它们的复杂性, 那么SQLite也许就不适合你了. SQLite没有打算作为一个企业级的数据库引擎, 也并不打算和Oracle或者PostgreSQL竞争. </font></p>
<p><font face="Verdana">仅凭经验来说SQLite适用于以下场合: 当你更看中简单的管理、使用和维护数据库, 而不是那些企业级数据库提供的不计其数的复杂功能的时候，使用SQLite是一个比较明智的选择. 事实也证明, 人们在许多情况下已经清楚的认识到简单就是最好的选择. </font></p>
<p><font face="Verdana"><strong style="color: #ff0000">SQLite最佳试用场合</strong><br />
网站</font></p>
<p><font face="Verdana">作为数据库引擎SQLite适用于中小规模流量的网站(也就是说, 99.9%的网站). SQLite可以处理多少网站流量在于网站的数据库有多大的压力. 通常来说, 如果一个网站的点击率少于100000次/天的话, SQLite是可以正常运行的. 100000次/天是一个保守的估计, 不是一个准确的上限. 事实证明, 即使是10倍的上述流量的情况下SQLite依然可以正常运行.</font></p>
<p><font face="Verdana"><strong style="color: #ff0000">嵌入式设备和应用软件</strong></font></p>
<p><font face="Verdana">因为SQLite数据库几乎不需要管理, 因此对于那些无人值守运行或无人工技术支持的设备或服务, SQLite是一个很好的选择. SQLite能很好的适用于手机, PDA, 机顶盒, 以及其他仪器. 作为一个嵌入式数据库它也能够很好的应用于客户端程序. </font></p>
<p><font face="Verdana"><strong style="color: #ff0000">应用程序文件格式</strong></font></p>
<p><font face="Verdana">SQLite作为桌面应用程序的本地磁盘文件格式取得了巨大成功.例如金融分析工具、CAD 包、档案管理程序等等. 一般的数据库打开操作需要调用sqlite3_open()函数，并且标记一个显式本地事务的起始点（BEGIN TRANSACTION）来保证以独占的方式得到文件的内容. 文件保存将执行一个提交（COMMIT）同时标记另一个显式本地事务起始点. 这种事务处理的作用就是保证对于应用程序数据文件的更新是原子的、持久的、独立的和一致的. </font></p>
<p><font face="Verdana">数据库里可以加入一些临时的触发器,用来把所有的改变记录在一张临时的取消/重做日志表中. 当用户按下取消/重做按钮的时候这些改变将可以被回滚. 应用这项技术实现一个无限级的取消/重做功能只需要编写很少的代码. </font></p>
<p><font face="Verdana">替代某些特别的文件格式</font></p>
<p><font face="Verdana">许多程序使用fopen(), fread(), 或 fwrite()函数创建和管理一些自定义的文件用来保存数据. 使用SQLite替代这些自定义的文件格式将是一种很好的选择.</font></p>
<p><font face="Verdana"><strong style="color: #ff0000">内部的或临时的数据库</strong></font></p>
<p><font face="Verdana">对于那些有大量的数据需要用不同的方式筛选分类的程序, 相对于编写同样功能的代码, 如果你把数据读入一个内存中的SQLite数据库, 然后使用连接查询和ORDER BY子句按一定的顺序和排列提取需要的数据, 通常会更简单和快速. 按照上述的方法使用内嵌的SQLite数据库将会使程序更富有灵活性, 因为添加新的列或索引不用重写任何查询语句. </font></p>
<p><font face="Verdana"><strong style="color: #ff0000">命令行数据集分析工具</strong></font></p>
<p><font face="Verdana">有经验的SQL用户可以使用SQLite命令行程序去分析各种混杂的数据集. 原是数据可以从CSV（逗号分隔值文件）文件中导入, 然后被切分产生无数的综合数据报告. 可能得用法包括网站日志分析, 运动统计分析, 编辑规划标准, 分析试验结果. </font></p>
<p><font face="Verdana">当然你也可以用企业级的客户端/服务器数据库来做同样的事情. 在这种情况下使用SQLite的好处是: SQLite的部署更为简单并且结果数据库是一个单独的文件, 你可以把它存储在软盘或者优盘或者直接通过email发给同事. </font></p>
<p><font face="Verdana">在Demo或测试版的时候作为企业级数据库的替代品</font></p>
<p><font face="Verdana">如果你正在编写一个使用企业级数据库引擎的客户端程序, 使用一个允许你连接不同SQL数据库引擎的通用型数据库后台将是很有意义的. 其更大的意义在于将SQLite数据库引擎静态的连接到客户端程序当中，从而内嵌SQLite作为混合的数据库支持. 这样客户端程序就可以使用SQLite数据库文件做独立的测试或者验证.</font></p>
<p><font face="Verdana">本文来自: (www.91linux.com) 详细出处参考：http://www.91linux.com/html/article/database/sqlite/200812/12-14611.html</font></p>
<p></font>&nbsp;</p>
<p><font face="Verdana"><strong style="color: #ff0000">数据库教学</strong></font></p>
<p><font face="Verdana">因为SQLite的安装和使用非常的简单(安装过程几乎忽略不计, 只需要拷贝SQLite源代码或sqlite.exe可执行文件到目标主机, 然后直接运行就可以) 所以它非常适合用来讲解SQL语句. 同学们可以非常简单的创建他们喜欢的数据库, 然后通过电子邮件发给老师批注或打分. 对于那些感兴趣怎样实现一个关系型数据库管理系统（RDBMS）的高层次的学生, 按照模块化设计且拥有很好的注释和文档的SQLite源代码, 将为他们打下良好的基础. 这并不是说SQLite就是如何实现其他数据库引擎的精确模型, 但是很适合学生们了解SQLite是如何快速工作的, 从而掌握其他数据库系统的设计实现原则. </font></p>
<p><font face="Verdana"><strong style="color: #ff0000">试验SQL语言的扩展</strong></font></p>
<p><font face="Verdana">SQLite简单且模块化的设计使得它可以成为一个用来测试数据库语言特性或新想法的优秀的原型平台. </font></p>
<p><font face="Verdana">哪些场合适合使用其他的关系型数据库管理系统（RDBMS）<br />
<strong><span style="color: #ff0000"><strong>客户端/服务器程序</strong> </span></strong></font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">如果你有许多的客户端程序要通过网络访问一个共享的数据库, 你应当考虑用一个客户端/服务器数据库来替代SQLite. SQLite可以通过网络文件系统工作, 但是因为和大多数网络文件系统都存在延时, 因此执行效率不会很高. 此外大多数网络文件系统在实现文件逻辑锁的方面都存在着bug(包括Unix 和windows). 如果文件锁没有正常的工作, 就可能出现在同一时间两个或更多的客户端程序更改同一个数据库的同一部分, 从而导致数据库出错. 因为这些问题是文件系统执行的时候本质上存在的bug, 因此SQLite没有办法避免它们.</font></p>
<p><font face="Verdana">好的经验告诉我们, 应该避免在许多计算机需要通过一个网络文件系统同时访问同一个数据库的情况下使用SQLite.</font></p>
<p><font face="Verdana"><strong style="color: #ff0000">高流量网站</strong></font></p>
<p><font face="Verdana">SQLite通常情况下用作一个网站的后台数据库可以很好的工作. 但是如果你的网站的访问量大到你开始考虑采取分布式的数据库部署, 那么你应当毫不犹豫的考虑用一个企业级的客户端/服务器数据库来替代SQLite.</font></p>
<p><font face="Verdana"><strong style="color: #ff0000">超大的数据集</strong></font></p>
<p><font face="Verdana">当你在SQLite中开始一个事务处理的时候(事务处理会在任何写操作发生之前产生, 而不是必须要显示的调用BEGIN...COMMIT), 数据库引擎将不得不分配一小块脏页(文件缓冲页面)来帮助它自己管理回滚操作. 每1MB的数据库文件SQLite需要256字节. 对于小型的数据库这些空间不算什么, 但是当数据库增长到数十亿字节的时候, 缓冲页面的尺寸就会相当的大了. 如果你需要存储或修改几十GB的数据, 你应该考虑用其他的数据库引擎. </font></p>
<p><font face="Verdana"><strong style="color: #ff0000">高并发访问</strong></font></p>
<p><font face="Verdana">SQLite对于整个数据库文件进行读取/写入锁定. 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作. 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分. 对于大多数情况这不算是什么问题. 在这些情况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒. 但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的解决方案了</font></p>
<p><br />
<script type="text/javascript"><!-- google_ad_client="pub-1913161682382481" ;
//336x280, 创建于 07-12-5 google_ad_slot="6807908515" ; google_ad_width="336;
google_ad_height" = 280;
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script><script>window.google_render_ad();</script></p>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/281204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-06-10 20:08 <a href="http://www.blogjava.net/xiaoyi/articles/281204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小毅总结之---&gt;sql语句查询出重复记录</title><link>http://www.blogjava.net/xiaoyi/articles/239506.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Sun, 09 Nov 2008 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/239506.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/239506.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/239506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/239506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/239506.html</trackback:ping><description><![CDATA[<p><span style="font-size: 14pt"><span style="font-size: 10pt">-- 建表<br />
create table a(<br />
id int primary key auto_increment,<br />
contents varchar(32)<br />
);<br />
--插入测试数据<br />
insert into a values(default,'AA');<br />
insert into a values(default,'BB');<br />
insert into a values(default,'AA');<br />
insert into a values(default,'CC');<br />
insert into a values(default,'BB');<br />
insert into a values(default,'DD');<br />
insert into a values(default,'EE');<br />
insert into a values(default,'FF');<br />
insert into a values(default,'FF');<br />
-- 查出所有重复数据<br />
<span style="color: #ff0000">select id,contents from (<br />
&nbsp;&nbsp;&nbsp; select * from (select&nbsp; * from a) aa<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inner join<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (select id idd,contents cons from a) bb <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where aa.id!=bb.idd and aa.contents = bb.cons<br />
) rst order by id asc;</span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt">-- 查处重复数据中的一条 如：AA BB FF重复了 只查处一个AA 一个BB 一个FF<br />
<span style="color: #ff0000">select distinct(contents)&nbsp; from (<br />
select&nbsp;&nbsp; id,contents&nbsp; from (<br />
&nbsp;&nbsp;&nbsp; select * from (select&nbsp; * from a) aa<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inner join<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (select id idd,contents cons from a) bb <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where aa.id!=bb.idd and aa.contents = bb.cons<br />
) rst order by id asc<br />
) t;</span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt">&nbsp;其他方法1：<br />
</p>
<p><span style="color: #ff0000">select aa.id,aa.contents from a as aa,(select contents from a group by contents HAVING count(*)&gt;1) bb<br />
where aa.contents = bb.contents&nbsp; </span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt">&nbsp;其他方法2：</span></span><br />
<span style="color: #ff0000">select contents from a as aa where (select count(contents) from a as b where aa.contents = b.contents)&gt;1 </span></p>
</span></span>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/239506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-11-09 11:24 <a href="http://www.blogjava.net/xiaoyi/articles/239506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle序列</title><link>http://www.blogjava.net/xiaoyi/articles/238004.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Sat, 01 Nov 2008 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/238004.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/238004.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/238004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/238004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/238004.html</trackback:ping><description><![CDATA[<font face="NSimsun">create sequence replay_id<br />
start with 1<br />
increment by 1<br />
nomaxvalue</font>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/238004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-11-01 11:20 <a href="http://www.blogjava.net/xiaoyi/articles/238004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>